1 Docker容器信息
#查看docker容器版本docker version
#查看docker容器信息:docker info
#查看docker容器帮助:docker --help
2 镜像操作
提示:对于镜像的操作可使用镜像名、镜像长ID和短ID
2.1 镜像查看
#列出本地images:docker images
#含中间映像层:docker images -a
#只显示镜像ID:docker images -q
#含中间映像层:docker images -qa
#显示镜像摘要信息(DIGEST列):docker images --digests
#显示镜像完整信息:docker images --no-trunc
#显示指定镜像的历史创建;参数:
-H镜像大小和日期,默认为true;
--no-trunc显示完整的提交记录;
-q仅列出提交记录IDdocker history -H redis
2.2 镜像搜索
#搜索仓库MySQL镜像docker search mysql
# --filter=stars=600:只显示 starts>=600 的镜像
docker search --filter=stars=600 mysql
# --no-trunc显示镜像完整 DESCRIPTION 描述
docker search --no-trunc mysql
# --automated:只列出 AUTOMATED=OK 的镜像
docker search --automated mysql
2.3 镜像下载
#下载Redis官方最新镜像,相当于:docker pull redis:latest
docker pull redis
#下载仓库所有Redis镜像
docker pull -a redis
#下载私人仓库镜像
docker pull bitnami/redis
2.4 镜像删除
#单个镜像删除,相当于:docker rmi redis:latest
docker rmi redis
#强制删除(针对基于镜像有运行的容器进程)
docker rmi -f redis
#多个镜像删除,不同镜像间以空格间隔
docker rmi -f redis tomcat nginx
#删除本地全部镜像
docker rmi -f $(docker images -q)
2.5 镜像构建
#(1)编写dockerfile
cd /docker/dockerfile vim mycentos
#(2)构建docker镜像
docker build -f /docker/dockerfile/mycentos -t mycentos:1.1
3 容器操作
提示:对于容器的操作可使用CONTAINER ID 或 NAMES。
3.1 容器启动
#新建并启动容器,
参数:
-i以交互模式运行容器;
-t为容器重新分配一个伪输入终端;
--name为容器指定一个名称docker run -i -t --name mycentos
#后台启动容器,
参数:-d 已守护方式启动容器docker run -d mycentos
注意:此时使用"docker ps -a"会发现容器已经退出。这是docker的机制:要使Docker容器后台运行,就必须有一个前台进程。解决方案:将你要运行的程序以前台进程的形式运行。
#启动一个或多个已经被停止的容器docker start redis
#重启容器docker restart redis
3.2 容器进程
#top支持 ps 命令参数,
格式:docker top [OPTIONS] CONTAINER [ps OPTIONS]
#列出redis容器中运行进程docker top redis
#查看所有运行容器的进程信息
for i in `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done
3.3 容器日志
#查看redis容器日志,默认参数docker logs rabbitmq
#查看redis容器日志,参数:-f 跟踪日志输出;-t 显示时间戳;
--tail仅列出最新N条容器日志;
docker logs -f -t --tail=20 redis
#查看容器redis从2019年05月21日后的最新10条日志。
docker logs --since="2019-05-21" --tail=10 redis
3.4 容器的进入与退出
Docker 容器的进入与退出有几种常用的方法,具体取决于你希望如何与容器进行交互。以下是几种方法的详细说明:
进入 Docker 容器
-
docker exec
命令 使用docker exec
命令可以在一个正在运行的容器中启动一个新的进程(如一个交互式的 shell)。docker exec -it [容器ID或容器名称] /bin/bash
或者对于一些较轻量级的镜像,你可能需要使用
/bin/sh
而不是/bin/bash
:docker exec -it [容器ID或容器名称] /bin/sh
这里的
-it
参数用于让你以交互模式进入容器。 -
docker attach
命令 使用docker attach
命令可以附加到一个正在运行的容器的主终端。注意,这样做可能会影响到容器的主进程。docker attach [容器ID或容器名称]
请注意,如果你从
docker attach
中退出,可能会导致容器的停止,具体取决于容器运行的进程。
退出 Docker 容器
-
从
docker exec
会话中退出 如果你使用docker exec
进入容器,你可以使用exit
命令或按Ctrl+D
来退出:exit
或者:
Ctrl + D
这仅会退出 shell 会话,而不会停止容器。
-
从
docker attach
会话中退出 如果你使用docker attach
进入容器,可以使用Ctrl + P
然后Ctrl + Q
组合键来安全地分离会话,而不影响容器的运行。Ctrl + P, Ctrl + Q
或者你也可以使用
exit
命令,但这可能会导致容器停止,具体取决于容器运行的进程。
示例
-
进入容器
docker exec -it mycontainer /bin/bash
或者:
docker exec -it mycontainer /bin/sh
-
退出容器
exit
或者按
Ctrl + D
。如果使用
docker attach
进入容器,则使用:Ctrl + P, Ctrl + Q
这样可以安全地分离,而不会停止容器。
通过这些方法,你可以方便地进入和退出 Docker 容器,进行调试、配置和其他操作。
3.5 查看容器
#查看正在运行的容器docker ps
#查看正在运行的容器的IDdocker ps -q
#查看正在运行+历史运行过的容器docker ps -a
#显示运行容器总文件大小docker ps -s
#显示最近创建容器docker ps -l
#显示最近创建的3个容器docker ps -n 3
#不截断输出docker ps --no-trunc
#获取镜像redis的元信息docker inspect redis
#获取正在运行的容器redis的 IP
docker inspect --format='{{range .[NetworkSettings.Networks](http://networksettings.networks/)}}{{.IPAddress}}{{end}}' redis
3.6 容器的停止与删除
#停止一个运行中的容器docker stop redis
#杀掉一个运行中的容器docker kill redis
#删除一个已停止的容器docker rm redis
#删除一个运行中的容器docker rm -f redis
#删除多个容器
docker rm -f $(docker ps -a -q) docker ps -a -q | xargs docker rm## -l移除容器间的网络连接,连接名为 dbdocker rm -l db
# -v删除容器,并删除容器挂载的数据卷docker rm -v redis
3.7 生成镜像
#基于当前redis容器创建一个新的镜像;
参数:-a --author string:为新镜像设置作者信息。
-c --change list:应用 Dockerfile 指令来修改容器。例如,-c "CMD ['/bin/bash']" 可以更改启动命令。示例:-c "CMD ['/bin/bash']"
-m --message string:为提交操作设置提交信息。示例:-m="Added new configuration"
-p --pause:在创建镜像时暂停容器。默认为 true,即在提交前会暂停容器以确保文件系统一致性。如果设为 false,则不会暂停容器。示例:--pause=false
命令格式如下:
sh
复制代码
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
完整示例:
sh
复制代码
docker commit -a="DeepInThought" -m="my redis" -c "CMD ['/bin/bash']" --pause=false abc123 myredis:v1.1
在这个例子中:
-a="DeepInThought"
设置作者为 “DeepInThought”。-m="my redis"
设置提交信息为 “my redis”。-c "CMD ['/bin/bash']"
修改启动命令为/bin/bash
。--pause=false
指定在提交镜像时不暂停容器。abc123
是容器 ID。myredis:v1.1
是生成的镜像名称和标签。
3.8 容器与主机间的数据拷贝
#将rabbitmq容器中的文件copy至本地路径
docker cp rabbitmq:/[container_path] [local_path]
#将主机文件copy至rabbitmq容器
docker cp [local_path] rabbitmq:/[container_path]/
#将主机文件copy至rabbitmq容器,目录重命名为[container_path](注意与非重命名copy的区别)
docker cp [local_path] rabbitmq:/[container_path]