目录
2. Docker常用命令
2.1 帮助命令
docker version # 显示Docker版本信息
docker info # 显示Docker系统信息,包括镜像和容器数
docker --help # 帮助
2.2 镜像命令
docker images # 查看所有本地主机上的镜像
解释:
REPOSITORY # 镜像的仓库源
TAG # 镜像的标签
IMAGE ID # 镜像的ID
CREATED # 镜像创建时间
SIZE # 镜像大小
同一个仓库源可以有多个TAG,代表这个仓库源的不同版本,我们使用REPOSITORY:TAG定义不同的镜像,如果不定义镜像的标签版本,docker将默认使用lastest镜像(最新的)。
可选项:
-a: # 列出本地所有镜像,--all
-q: # 只显示镜像id,--quiet
--digests: # 显示镜像的摘要信息
示例:
docker images -a # 显示所有镜像
docker images -q # 显示所有镜像的id
docker images -aq # 显示所有的镜像
2.3 搜索镜像
docker search # 搜索镜像
# 通过 docker search 某个镜像的名称 来搜索对应Docker Hub仓库中的镜像,但有时候我们不知道仓库中的镜像名字,比如Tomcat。
# 可先上docker仓库镜像:Docker Hubhttps://hub.docker.com/ 上进行搜索要下载的资源,再进行拉取操作。
点击tomcat项后,进入详细页面:
点击“Tags”进入标签页,这里有很多版本,我们选择Tomcat 9.0.46,JDK8的版本进行拉取:
# 可选项,通过搜索来过滤
--filter=stars=50 # 列出收藏数不小于50的镜像。
2.4 拉取镜像
docker pull 镜像名:镜像版本号
docker pull tomcat:9.0.46-jdk8-corretto
注1:tomcat是要拉取的镜像名,9.0是镜像的TAG。如不指定TAG默认拉取最新版本。
注2:拉取镜像时会进行分层下载,分层的好处是:可以提高镜像的重用率。
# 拉取MySQL
docker pull mysql # 不写tag,默认是latest最新版本
# 拉取指定版本下载
docker pull mysql:5.7 # 删除mysql标签为5.7的镜像
查看下载之后的镜像:
docker images
2.5 删除镜像
docker rmi
# 示例
docker rmi –f 6654503f1940 # 删除单个镜像
docker rmi –f tomcat:9.0 mysql:5.7 # 删除多个,空格分开
docker rmi -f $(docker images -qa) # 删除全部
# 先查看镜像
docker images
# 再删除镜像
docker rmi -f 9a8c9549861e
2.6 容器命令
说明: 有镜像才能创建容器,我们这里使用CentOS的镜像来测试,就是虚拟一个CentOS。
docker pull centos # 下载centos镜像,初次下载有点慢
# 查看当前Linux版本号信息:cat /etc/redhat-release
# https://hub.docker.com/上搜索centos镜像文件
2.6.1 创建容器并启动
docker run [可选参数] IMAGE [COMMAND][ARG...]
注:如果没有拉取镜像,创建容器并启动会自动拉取镜像,再创建容器。
常用参数说明:
--name="Name" # 给容器指定一个名字
-d # 后台方式运行容器,并返回容器的id!
-i # 以交互模式运行容器,通过和 -t 一起使用
-t # 给容器重新分配一个终端,通常和 -i 一起使用
-P # 随机端口映射(大写)
-p # 指定端口映射(小结),一般可以有四种写法
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort (常用)
containerPort
(1)创建交互型容器
运行在前台,容器中使用exit命令或者调用docker stop、docker kill命令停止容器。
docker run –it -–name=docker_run centos /bin/bash
i:打开容器的标准输入
t:告诉docker为容器建立一个命令行终端
name:指定容器名称,可以不填(随机),建议根据具体使用功能命名,便于管理
centos:告诉我们使用什么镜像来启动容器
/bin/bash:告诉docker要在容器里面执行此命令
# 创建tomcat01容器
docker run -it --name=tomcat01 tomcat /bin/bash
(2)创建后台型容器
运行在后台,创建后与终端无关,只有调用docker stop、docker kill命令才能使容器停止。
docker run –d –-name=docker_run_b centos /bin/bash
d:使用-d参数,使容器在后台运行
# 使用centos进行用交互模式启动容器,在容器内执行/bin/bash命令。
# 创建容器,启动并进入容器。注意:指定TAG,否则又会去下载最新版本
docker run -it centos:centos7.9.2009 /bin/bash
# 注意地址,已经切换到容器内部了,使用ls查看下容器内部文档结构
ls
注意:这里发现,容器内部和容器外面linux目录一样,这就是我们下的centos镜像,它就是一个小型的服务器。(容器内就是一个小的服务器)
2.6.2 退出容器
exit # 容器停止,退出回到主机
注意:这里不能光通过颜色来区分是在镜像内还是镜像外,因为工具不一样,显示的结果也不一样。
ctrl+P +Q # 容器不停止,退出回到主机
注意:按住ctrl和P,再按Q
通过查看当前运行的容器:
问:当前正在运行的容器如何进去?
进入容器:docker attach 容器ID 或 docker exec -it 容器ID /bin/bash
docker attach e3ba7185be17 # 有时会卡住
docker exec -it e3ba7185be17 /bin/bash # 推荐使用
2.6.3 启动容器
docker start 容器id或容器名 # 启动之前已停止的容器
# 示例
docker start docker_run # 按容器名启动
docker start 43e3fef2266c # 按容器ID启动
docker restart 容器id或容器名 # 自动重启容器
默认情况下容器是不重启的,-restart标志会检查容器的退出码来决定容器是否重启。
# 示例
docker restart docker_run # 按容器名自动重启
docker restart 43e3fef2266c # 按容器ID自动重启
docker run –d –restart=always -–name=docker_restart centos /bin/bash
2.6.4 停止容器
docker stop容器id或容器名 # 停止当前正在运行的容器
# 示例
docker stop docker_run # 停止容器(按容器名)
docker stop 43e3fef2266c # 停止容器(按容器ID)
docker kill 容器id或容器名 # 强制停止容器
# 示例
docker kill docker_run
docker kill 43e3fef2266c
2.6.5 删除容器
容器终止后,在需要的时候可以重新启动,确定不需要了,可以进行删除操作。
docker rm容器id或容器名
# 示例
docker rm docker_run
docker rm 43e3fef2266c
docker rm -f $(docker ps -a -q) # 删除所有容器
docker ps -a -q|xargs docker rm # 删除所有容器
注意:不能够删除一个正在运行的容器,会报错。需要先停止容器,再删除。
翻译:来自守护进程的错误响应:您不能删除一个正在运行的容器9b5ef816ed04dcbf2e4d336460143343496ee47a8fa979497d121a8b7d165df6。停止集装箱前试图移除或强行移除。
一次性删除:docker本身没有提供一次性删除操作,但是可以使用如下命令实现:
docker rm ‘docker ps –a –q’
-a:标志列出所有容器
-q:标志只列出容器的ID,然后传递给rm命令,依次删除容器。
2.6.6 查看所有运行容器
docker ps [OPTIONS]
# 常用参数说明
-a # 列出当前所有正在运行的容器 + 历史运行过的容器
-l # 显示最近创建的容器
-n=? # 显示最近n个创建的容器,如:docker ps -a -n=1
-q # 静默模式,只显示容器编号。
# 示例:列出当前正在运行的容器
docker ps -a
2.7 其他常用命令
2.7.1 后台启动容器
docker run -d 容器名
# 示例
docker run -d centos:centos7.9.2009 # 启动centos,使用后台方式启动
问题:使用docker ps 查看,发现容器已经退出了!
解释:Docker容器后台运行,就必须有一个前台进程,容器运行的命令如果不是那些一直挂起的命令,就会自动退出。
比如,你运行了nginx服务,但是docker前台没有运行应用,这种情况下,容器启动后,会立即自杀,因为他觉得没有程序了,所以最好的情况是,将你的应用使用前台进程的方式运行启动。
2.7.2 查看日志
docker logs -f -t --tail 容器id
# 例子:我们启动 centos,并编写一段脚本来测试玩玩!最后查看日志
# 自己编写一段shell脚本
docker run -d centos /bin/sh -c "while true;do echo kuangshen;sleep 1;done"
docker ps
# 显示日志
# -t 显示时间戳
# -f 打印最新的日志
# --tail 数字 显示多少条!
docker logs -tf --tail 10 c8530dbbe3b4
2.7.3 查看容器/镜像的元数据
docker inspect 容器id
# 测试
docker inspect c8530dbbe3b4
2.7.4 进入正在运行的容器
docker exec -it 容器id bashShell
# -it表示交互方式
docker exec -it mymongo /bin/bash
docker attach 容器id
# 示例
docker attach mymong
区别:
- exec 进入容器后开启一个新的终端,可以在里面操作,并且可以启动新的进程
- attach 进入容器下在执行的终端,不会启动新的进程
2.7.5 从容器内拷贝文件到主机上
docker cp 容器id:容器内路径 目的主机路径
# 测试
docker cp c8530dbbe3b4:/home/f1 /home
小结:
接到上期docker说到,这期发送的是docker的常用指令,包括查看docker状态、启动、关闭docker、镜像拉取、容器启动等等,希望小编的这编文章能帮助到大家更好的掌握docker常用指令。谢谢大家的观看!