1.帮助启动类命令
启动docker : systemctl start docker
停止docker : systemctl stop docker
重启docker : systemctl restart docker
查看docker状态 : systemctl status docker
开机启动 : systemctl enable docker
查看docker概要信息 : docker info
查看docker总体帮助文档 : docker --help
查看docker命令帮助文档 : docker 具体命令 --help
2.镜像命令
(1) docker images : 列举出本地主机上的镜像
docker images -a : 列举出本地所有的镜像(含历史映像层)
docker images -q : 只显示镜像ID
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat latest c43980686364 7 days ago 475MB
REPOSITORY : 表示镜像的仓库源
TAG : 镜像的标签版本号
IMAGE ID : 镜像ID
CREATED : 镜像的创建时间
SIZE : 镜像的大小
同一仓库源可以有多个TAG版本,代表这个仓库源的不同的版本,我们使用REPOSITORY:TAG来定义不同的镜像。如果你不指定一个镜像的版本标签,例如你只使用ubuntu,docker将默认使用ubuntu:latest镜像。
(2)docker search 某个XXX镜像名字 : 搜索镜像
docker search redis : 搜索redis镜像
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 12105 [OK]
bitnami/redis Bitnami Redis Docker Image 257 [OK]
NAME : 镜像名称
DESCRIPTION : 镜像说明
STARS : 点赞数量
OFFICIAL : 是否是官方的
AUTOMATED : 是否是自动构建的
docker search --limit 5 redis : 搜索点赞数量前5的redis镜像
(3)docker pull 某个XXX镜像名字 : 下载镜像
docker pull mysql:5.6 : 下载版本号为5.6的mysql
docker pull mysql : 下载最新版本号的mysql
(4)docker system df 查看镜像/容器/数据卷所占的空间
(5)docker rmi 某个XXX镜像名字ID : 删除镜像
docker rmi mysql : 删除名字为mysql的镜像
docker rmi dd3b2a5dcb48 : 删除镜像ID为dd3b2a5dcb48的镜像
docker rmi -f mysql : 强制删除名字为mysql的镜像
docker rmi -f $(docker images -qa) : 强制删除所有镜像
3.容器命令
(1)新建+启动容器 : docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明 : --name="容器新名字" : 为容器指定一个名称
-d : 后台运行容器并返回容器ID,也即启动守护式容器(后台运行)
-i : 以交互模式运行容器,通常与-t同时使用
-t : 为容器重新分配一个伪输入终端,通常与-i同时使用,也即启动交互式容器(前台有伪终端,等待交互)
-P : 随机端口映射,大写P
-p : 指定端口映射,小写p
例如 : docker run -it centos /bin/bash
参数说明 : -i : 交互式操作
-t : 终端
centos : centos镜像
/bin/bash : 放在镜像名后的是命令,这里我们是希望有个交互式shell,因此用的是/bin/bash。要退出终端,直接输入exit
(2)列出当前所有正在运行的容器 : docker ps [OPTIONS]
OPTIONS说明 : -a : 列出当前所有正在运行的容器 + 历史上运行过的
-l : 显示最近创建的容器
-n : 显示最近n个创建的容器
-q : 静默模式,只显示容器编号
(3)退出容器
方式1 : exit -- run进去容器,exit退出,容器停止。
方式2 : ctrl+p+q -- run进去容器,ctrl+p+q退出,容器不停止
(4)启动已停止运行的容器
docker start 容器ID或者容器名
(5)重启容器
docker restart 容器ID或者容器名
(6)停止容器
docker stop 容器ID或者容器名
(7)强制停止容器
docker kill 容器ID或者容器名
(8)删除已停止的容器
docker rm 容器ID或者容器名 -- 只能删除已停止的容器
docker rm -f 容器ID或者容器名 -- 强制删除容器,可以删除正在运行的容器
一次性删除多个容器实例 : docker rm -f $(docker ps -a -q) 或者 docker ps -a -q | xargs docker rm (慎用!!!)
4.启动守护式容器问题讲解
运行命令 docker run -d centos创建一个centos容器,然后使用命令docker ps -a进行查看,会发现容器已经退出的现象发生。发生该现象的原因是docker容器后台运行就必须要有一个前台进程,容器运行的命令如果不是那些一直挂起的命令(比如top,tail),容器就会自动退出的。这个是docker的机制问题,比如web容器以nginx为例,正常情况下,配置启动服务只需要启动相应的service即可。例如service nginx start,但是这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用,这样的容器后台启动后会立即退出,因为它觉得它没事可做了。所以,最佳的解决方案是将要运行的程序以前台进程的形式运行,常见的就是命令行模式,表示还有操作交互。
5.重要命令组合应用(案例以redis 6.0.8镜像演示)
有镜像才能创建容器,这是根本前提。
(1)redis前后台启动演示
前台交互式启动
docker run -it redis:6.0.8
启动成功后按键按下ctrl+c退出交互式进程,容器也就直接退出了,一般不建议使用前台交互式启动redis。
后台守护式启动
docker run -d redis:6.0.8
建议使用后台守护式启动redis,用命令docker exec -it redis容器的ID /bin/bash进行到redis容器的内部。
进入到redis容器内部后,使用命令 redis-cli -p 6379进行redis方式的命令交互。
(2)查看容器日志
docker logs 容器ID
(3)查看容器内运行的进程
docker top 容器ID
(4)查看容器内部细节
docker inspect 容器ID
(5)进入正在运行的容器并以命令行交互
方式一 : docker exec -it 容器ID /bin/bash
方式二 : docker attach 容器ID
上述两者的区别,attach直接进入容器启动命令行终端,不会启动新的进程,用exit退出会导致容器停止。exec是在容器中打开新的终端,并且可以启动新的进程,用exit退出不会导致容器停止。
推荐使用docker exec命令进入容器,因为退出容器终端,不会导致容器的停止。
(6)从容器内拷贝文件到主机上
docker cp 容器ID:容器内路径 目的主机路径
docker cp ae95d8808d75:/tmp/a.txt ~/Desktop
(7)导入和导出容器
export导出容器的内容流作为一个tar归档文件
docker export 容器ID > 文件名.tar
docker export ae95d8808d75 > ~/Desktop/abc.tar
import从tar包中的内容创建一个新的文件系统再导入为镜像
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
cat ~/Desktop/abc.tar | docker import - znptest/centos:3.0
6.小总结
attach : 当前shell下attach连接指定运行镜像
build : 通过Dockerfile定制镜像
commit : 提交当前容器为新的镜像
cp : 从容器中拷贝指定文件或目录到宿主机中
create : 创建一个新的容器,同run,但不启动容器
diff : 查看docker容器变化
events : 从docker服务获取容器实时事件
exec : 在已存在的容器上运行命令
export : 导出容器的内容流作为一个tar归档文件
history : 展示一个镜像形成历史
images : 列出系统当前镜像
import : 从tar包中的内容创建一个新的文件系统镜像
info : 显示系统相关信息
inspect : 查看容器详细信息
kill : kill指定docker容器
load : 从一个tar包中加载一个镜像
login : 注册或者登录一个docker源服务器
logout : 从当前Docker registry退出
logs : 输出当前容器日志信息
port : 查看映射端口对应的容器内部源端口
pause : 暂停容器
ps : 列出容器列表
pull : 从docker镜像源服务器拉取指定镜像或者库镜像
push : 推送指定镜像或者库镜像至docker源服务器
restart : 重启运行的容器
rm : 移除一个或者多个容器
rmi : 移除一个或多个镜像【无容器使用该镜像才可删除,否则需删除相关容器才可继续或-f强制删除】
run : 创建一个新的容器并运行一个命令
save : 保存一个镜像为一个tar包
search : 在docker hub中搜索镜像
start : 启动容器
stop : 停止容器
tag : 给源中镜像打标签
top : 查看容器中运行的进程信息
unpause : 取消暂停容器
version : 查看docker 版本号
wait : 截取容器停止时的退出状态值