佛山设计网站设计价格,怎样做无水印视频网站,商城建设网站公司,seo交流文章目录一.docker容器相关指令概述二.生产环境中常用的 docker容器相关指令1.创建容器(create)2.查看已创建的容器(ps#xff0c;ls#xff0c;list)3.运行一个已创建的容器(start)4.停止一个正在运行的容器(stop)5.重启容器(restart)6.创建并启动一个容器(run#xff0c;等…
文章目录一.docker容器相关指令概述二.生产环境中常用的 docker容器相关指令1.创建容器(create)2.查看已创建的容器(pslslist)3.运行一个已创建的容器(start)4.停止一个正在运行的容器(stop)5.重启容器(restart)6.创建并启动一个容器(run等效于create start)7.删除容器(rm)8.进入容器并不创建新的终端(attach)9.进入容器并创建新的终端(exec)10.强杀容器(kill)11.显式正在运行的容器中进程信息(top)12.对容器的名称进行重命名(rename)13.获取容器的启动日志(logs)14.将宿主机的数据拷贝到虚拟机内(cp)15.显示容器资源使用统计信息的实时流(stats)16.暂停容器运行(pause)17.恢复容器运行(unpause)18.阻止直到一个或多个容器停止然后打印其出口代码(wait)19.将容器的文件系统导出为tar存档(export)20.列出端口映射或容器的特定映射(port)21.显示一个或多个容器的详细信息(inspect)22.更新一个或多个容器的配置(update)23.根据容器的更改创建新图像(commit)24.检查对容器文件系统上的文件或目录所做的更改(diff)三.关于容器的其它补充知识点1.启动容器时自定义初始化指令2.启动nginx是指定全局指令(global directives)概述3.查看nginx容器的守护进程作业:四.使用xshell添加快速命令集1.每次敲击批量删除所有容器比较繁琐2.启用快速命令3.创建快速命令集五、docker容器重启策略一.docker容器相关指令概述
如下图所示均为docker容器相关的指令。但随着我们对docker工具的熟练基本上可以省略container子选项但新手建议还是加上container选项。类似的还有docker imagedocker network,docker volume等建议安装docker的时候一并安装上自动补全的功能哟~二.生产环境中常用的 docker容器相关指令
1.创建容器(create)
[rootdocker01 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx 1.20.1 993ef3592f66 2 weeks ago 133MB
nginx latest d1a364dc548d 2 weeks ago 133MB
mysql latest c0cdc95609f1 4 weeks ago 556MB
centos 7 8652b9f0cb4c 7 months ago 204MB
[rootdocker01 ~]#
[rootdocker01 ~]# docker container create centos:7
b0a46280a223b9a006eadcb4d6c64bcbb6a4b973e54b3c67f0cd2b930d54dc6b
[rootdocker01 ~]#
[rootdocker01 ~]#
[rootdocker01 ~]# docker container create mysql:latest
55fd7d0b64019facf444930db4e3eb2f64138249168e1e5b017c7df42c83dc49
[rootdocker01 ~]#
[rootdocker01 ~]#
[rootdocker01 ~]# docker container create nginx:1.20.1
283020072fec486d189bafc2c0b423ad04836a8c636964ead11d7487356d2aaf
[rootdocker01 ~]# docker container create nginx:1.14
[rootdocker01 ~]# docker container create nginx
[rootdocker01 ~]# docker container create centos:6
Unable to find image centos:6 locally
6: Pulling from library/centos
ff50d722b382: Pull complete
Digest: sha256:dec8f471302de43f4cfcf82f56d99a5227b5ea1aa6d02fa56344986e1f4610e7
Status: Downloaded newer image for centos:6
56ac0fdeffc677c7fa2e4065b02da0c3d41e99bea69cdd15089e736a61b93b18
[rootdocker01 ~]#
[rootdocker01 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx 1.20.1 993ef3592f66 2 weeks ago 133MB
nginx latest d1a364dc548d 2 weeks ago 133MB
mysql latest c0cdc95609f1 4 weeks ago 556MB
centos 7 8652b9f0cb4c 7 months ago 204MB
centos 6 d0957ffdf8a2 2 years ago 194MB
[rootdocker01 ~]# 温馨提示:(1)如下图所示我们可以基于create指令来创建一个容器。(2)如果本地镜像中有容器则直接创建如果本地没有镜像则会去官方下载相应的镜像。2.查看已创建的容器(pslslist)
[rootdocker01 ~]# docker container ps --helpUsage: docker container ls [OPTIONS]List containersAliases:ls, ps, listOptions:-a, --all Show all containers (default shows just running)-f, --filter filter Filter output based on conditions provided--format string Pretty-print containers using a Go template-n, --last int Show n last created containers (includes all states) (default -1)-l, --latest Show the latest created container (includes all states)--no-trunc Dont truncate output-q, --quiet Only display container IDs-s, --size Display total file sizes
[rootdocker01 ~]#
[rootdocker01 ~]# docker container ps -a -q # 查看所有的容器ID
4432a298dd5e
784c9a734d65
f5891c2cf303
4cf79bf37806
[rootdocker01 ~]# [rootdocker02 ~]# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2d8e670dae8a nginx:1.20.2 /docker-entrypoint.… About a minute ago Up 2 seconds 80/tcp ecstatic_cerf[rootdocker02 ~]# docker container ps --no-trunc
相关字段说明:CONTAINER ID: 容器的唯一ID编号。IMAGE:镜像的名称COMMAND:容器的初始化命令该命令和镜像的默认设置有关当然在启动容器时我们可以修改的。CREATED:创建的时间。STATUS:当前的状态。PORTS:对外暴露的端口。NAMES:容器的名称若不指定则docker引擎会自动帮咱们随机生成一个容器名称。3.运行一个已创建的容器(start)
[rootdocker01 ~]# docker container start b0a46280a223
b0a46280a223
[rootdocker01 ~]# docker container ls
[rootdocker01 ~]# docker container ls -a
[rootdocker01 ~]# docker container start elastic_albattani
[rootdocker01 ~]# docker container ls温馨提示:容器刚刚创建时处于Created状态下图还展示了退出状态(Exited ...)和启动状态(Up ..)。4.停止一个正在运行的容器(stop)
[rootdocker01 ~]# docker container stop elastic_albattani
elastic_albattani
[rootdocker01 ~]#5.重启容器(restart)
[rootdocker01 ~]# docker container restart 283020072fec
[rootdocker01 ~]# docker container ls6.创建并启动一个容器(run等效于create start)
[rootdocker01 ~]# docker container run -it --name buffes_kylin centos:7 常见的相关参数说明:-i:即interactive音标为[ˌɪntərˈæktɪv] 表示交互式的类型。通常和-t选项搭配使用。-t:即terminal音标为[ˈtɜːmɪnl]表示启动一个终端。通常和-i选项搭配使用。-d:让容器在后台运行默认情况下容器是在前台(当前终端)运行的这意味着会阻塞当前终端。--name:创建容器时指定名称。#指定端口映射
docker container run -d -p 8888:80 nginx:1.18#查看端口映射
docker container port elegant_kapitsa温馨提示:docker run的时候所有的参数必须写在镜像名称前面哟~7.删除容器(rm) 删除容器时既可以基于容器ID删除也可以基于容器名称删除哟~当然我们也可以批量删除容器如下所示:[rootdocker01 ~]# docker container ps -a -q4432a298dd5e784c9a734d65f5891c2cf3034cf79bf37806[rootdocker01 ~]# [rootdocker01 ~]# docker container rm -f docker container ps -a -q4432a298dd5e784c9a734d65f5891c2cf3034cf79bf37806[rootdocker01 ~]#[rootdocker01 ~]# docker container ps -a -q[rootdocker01 ~]#
8.进入容器并不创建新的终端(attach)
温馨提示:退出该终端方式比较特殊需要依次执行ctrl pctrl q。 生产环境中不推荐使用忘记它吧。即了解即可。#放入后台运行
docker container run -itd busybox:latest#进入
[rootdocker01 ~]# docker container attach amazing_thompson[rootdocker01 ~]# docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3f2a16e0d601 centos:7 /bin/bash 27 minutes ago Up 10 seconds sharp_swirles
[rootdocker01 ~]#
[rootdocker01 ~]#
[rootdocker01 ~]# docker container attach 3f2a16e0d601
[root3f2a16e0d601 /]#
[root3f2a16e0d601 /]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root3f2a16e0d601 /]#
[root3f2a16e0d601 /]# uname -r
3.10.0-1160.el7.x86_64
[root3f2a16e0d601 /]#
[root3f2a16e0d601 /]# uname -m
x86_64
[root3f2a16e0d601 /]#
[root3f2a16e0d601 /]#
[root3f2a16e0d601 /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 06:36 pts/0 00:00:00 /bin/bash
root 19 1 0 06:37 pts/0 00:00:00 ps -ef
[root3f2a16e0d601 /]#
[root3f2a16e0d601 /]# echo buffes kylin /dev/pts/0
buffes kylin
[root3f2a16e0d601 /]#
[root3f2a16e0d601 /]# read escape sequence
[rootdocker01 ~]#
[rootdocker01 ~]#
[rootdocker01 ~]# docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3f2a16e0d601 centos:7 /bin/bash 36 minutes ago Up 9 minutes sharp_swirles
[rootdocker01 ~]# 我们分别开启2个终端使用attach来连接同一个容器竟然发现这两个终端连接的是同一个容器9.进入容器并创建新的终端(exec)
[rootdocker01 ~]# docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3f2a16e0d601 centos:7 /bin/bash 27 minutes ago Up 10 seconds sharp_swirles[rootdocker01 ~]# docker container exec -it 3f2a16e0d601 /bin/bash
[root3f2a16e0d601 /]# ps -ef
[root3f2a16e0d601 /]# who
[root3f2a16e0d601 /]# w#另起一个终端查看
[rootdocker01 ~]# docker container exec -it 3f2a16e0d601 /bin/bash
[root3f2a16e0d601 /]# ps -ef
[root3f2a16e0d601 /]# w10.强杀容器(kill) 我们可以使用kill指令强行杀死某个正在运行的容器。
[rootdocker01 ~]# docker container kill sharp_swirles
[rootdocker01 ~]# docker container ps11.显式正在运行的容器中进程信息(top)
[rootdocker01 ~]# docker container top b25c10758474
[rootdocker01 ~]# docker container top sharp_swirles
[rootdocker01 ~]# docker container ps -a我们可以基于容器名称或者容器的ID查看相应容器中运行的进程。12.对容器的名称进行重命名(rename) 我们可以已创建的容器进行重命名操作但请注意容器的命名规则为[a-zA-Z0-9][a-zA-Z0-9_.-]不要妄图使用其它特殊符号[rootdocker02 ~]# docker container ps[rootdocker02 ~]# docker container rename ecstatic_cerf nginx-1.20.1[rootdocker02 ~]# docker container rename sharp_swirles buffes_centos7[rootdocker02 ~]# docker container ps[rootdocker02 ~]# docker container rename b25c10758474 buffes_nginx1.20.113.获取容器的启动日志(logs)
[rootdocker02 ~]# docker container logs -f -n 5 buffes_nginx1.20.1
[rootdocker02 ~]# curl -I 172.17.0.3
[rootdocker02 ~]# docker container inspect -f {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} oldboy_nginx1.20.1 # 获取容器的IP地址。
172.17.0.3
[rootdocker02 ~]# #查看日志
docker container logs docker container ps -lq#查看访问时间戳
docker container logs -f docker ps -lq -t#查看指定时间戳
docker container logs -f docker ps -lq -t --until 2025-03-23T15:06:16.698035350Z温馨提示:建议进入到nginx的容器内查看其访问日志不难发现其就是一个符号链接哟。使用 jq 获取信息
yum install -y jq#取出容器id号码
docker inspect oldboy_nginx_v2 |jq .[].Id
.[] 用于去掉最外层的[]的
.Id 取出{}中的键值#取出容器运行状态
[rootdocker01 ~]# docker inspect buffes_nginx_v2 | jq .[].State
[rootdocker01 ~]# docker inspect buffes_nginx_v2 | jq .[].State.Status.[] 用于去掉最外层的[]的
.State 取出State部分内容
.Status 取出容器状态#取出容器名字
docker inspect buffes_nginx_v2 | jq .[].Name /buffes_nginx_v2#取出容器ip地址
docker inspect buffes_nginx_v2 | jq .[].NetworkSettings.IPAddress#取出端口信息(了解)
docker inspect buffes_nginx_v2 | jq .[].NetworkSettings.Ports.80/tcpdocker inspect buffes_nginx_v2 |jq .[].NetworkSettings.Ports.80/tcp[]docker inspect buffes_nginx_v2 |jq .[].NetworkSettings.Ports.80/tcp[0]docker inspect buffes_nginx_v2 | jq .[].NetworkSettings.Ports.80/tcp[0].HostPort
#或者
docker container inspect nginx | jq .[].NetworkSettings.Ports.8080/tcp[]14.将宿主机的数据拷贝到虚拟机内(cp)
我们可以轻松的将宿主机的
[rootdocker01 ~]# docker container exec -it buffes_nginx1.20.1 bash
rootb25c10758474:/# ls /tmp/
rootb25c10758474:/# ls /tmp/etc/
[rootdocker01 ~]# docker container cp -aL /etc/ buffes_nginx1.20.1:/tmp15.显示容器资源使用统计信息的实时流(stats)
[rootdocker01 ~]# docker container stats -h
Flag shorthand -h has been deprecated, please use --helpUsage: docker container stats [OPTIONS] [CONTAINER...]Display a live stream of container(s) resource usage statisticsOptions:-a, --all Show all containers (default shows just running)--format string Pretty-print images using a Go template--no-stream Disable streaming stats and only pull the first result--no-trunc Do not truncate output
[rootdocker01 ~]#16.暂停容器运行(pause)
[rootdocker01 ~]# docker container ps -a
[rootdocker01 ~]# docker container pause buffes_nginx1.20.1
[rootdocker01 ~]# docker container inspect -f {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} buffes_nginx1.20.1
172.17.0.3
[rootdocker01 ~]# curl 172.17.0.3
[rootdocker01 ~]# docker container pause buffes_nginx1.20.1
[rootdocker01 ~]# docker container ps -a
#容器暂停期间无法对外提供服务我们可以将容器暂停但一旦将容器暂停这也意味着该容器无法对外提供服务啦值得注意的时暂停容器运行其状态的时间并不会变动了而是停在这一刻了。17.恢复容器运行(unpause)
[rootdocker01 ~]# docker container ps -a
[rootdocker01 ~]# docker container unpause buffes_nginx1.20.1
[rootdocker01 ~]# curl 172.17.0.3恢复容器运行后其时间还是会接着暂停时间的容器开始计数哟~18.阻止直到一个或多个容器停止然后打印其出口代码(wait)
[rootdocker01 ~]# docker container ps#打开另外的终端
[rootdocker01 ~]# docker container wait buffes_centos7[rootdocker01 ~]# docker container stop buffes_centos7[rootdocker01 ~]# docker container kill buffes_centos719.将容器的文件系统导出为tar存档(export)
[rootdocker01 /yinzhengjie]# docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b25c10758474 nginx:1.20.1 /docker-entrypoint.… 2 hours ago Up 50 minutes 80/tcp buffes_nginx1.20.1
[rootdocker01 /yinzhengjie]#
[rootdocker01 /yinzhengjie]# ll
总用量 0
[rootdocker01 /yinzhengjie]#
[rootdocker01 /yinzhengjie]# docker container export buffes_nginx1.20.1 -o buffes_nginx.tar.gz
[rootdocker01 /yinzhengjie]#
[rootdocker01 /yinzhengjie]# ll
总用量 184288
-rw------- 1 root root 188708864 6月 12 17:15 buffes_nginx.tar.gz
[rootdocker01 /yinzhengjie]# 20.列出端口映射或容器的特定映射(port)
战略性忽略后面文章会逐步更新加入更多的内容
#例子
[rootdocker01 ~]# docker container port magical_keller21.显示一个或多个容器的详细信息(inspect)
战略性忽略后面文章会逐步更新加入更多的内容[rootdocker01 ~]# docker container inspect -f {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} buffes_app01#查看显示ip
docker container inspect -f {{.NetworkSettings.Networks.bridge.IPAddress}} docker container ps -lq#测试curl一下
curl -I 172.17.0.2#测试使用参考官方文档
[rootdocker02 ~]# docker inspect --formataaaaaa {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} bbbbb ecstatic_cerf
aaaaaa 172.17.0.2 bbbbb推荐阅读:https://docs.docker.com/engine/reference/commandline/inspect/
22.更新一个或多个容器的配置(update)
战略性忽略后面文章会逐步更新加入更多的内容
#查看容器状态每秒显示一次
[rootdocker01 ~]# docker container stats --no-trunc magical_keller#查看容器状态只显示一次
[rootdocker01 ~]# docker container stats --no-stream magical_keller#内存资源进行限制
docker container update -m 20480000 --memory-swap 20480000 magical_keller23.根据容器的更改创建新图像(commit)
战略性忽略后面文章会逐步更新加入更多的内容24.检查对容器文件系统上的文件或目录所做的更改(diff)
战略性忽略吧后面文章会逐步更新加入更多的内容
[rootdocker01 ~]# docker conatiners ps
[rootdocker01 ~]# docker conatiners diff -h
[rootdocker01 ~]# docker conatiners diff buffes_nginx1.20.1 | head三.关于容器的其它补充知识点
1.启动容器时自定义初始化指令
[rootdocker01 ~]# docker run -d -it centos:7 sleep 10
159c23951cf46b48d463a9a3220db9bd01854845d5ba4a1e00ca31a2a9a66646
[rootdocker01 ~]# 我们的容器运行10秒后会自动退出这和我们自定义的命令有关因为我们自定义容器初始化指令是sleep 10。这意味着程序守护进程的程序10秒后会自动退出从而容器也会跟随着退出如果想要将容器放在后台一直运行的话那么容器的守护程序(初始化指令)必须能够拥有阻塞当前终端的能力(比如tail -100f /etc/resolv.conf)否则容器就会退出2.启动nginx是指定全局指令(global directives)概述
[rootdocker01 ~]# yum -y install epel-release
[rootdocker01 ~]#
[rootdocker01 ~]# yum -y install nginx(2)运行nginx查看nginx默认的启动用户
[rootdocker01 ~]# grep ^user /etc/nginx/nginx.conf
user nginx;
[rootdocker01 ~]#
[rootdocker01 ~]# vim /etc/nginx/nginx.conf # 将上面的user指令注释掉
[rootdocker01 ~]#
[rootdocker01 ~]# grep ^user /etc/nginx/nginx.conf
[rootdocker01 ~]#
[rootdocker01 ~]# useradd koboid
[rootdocker01 ~]#
[rootdocker01 ~]# nginx -g user koboid;daemon off; # 将nginx设置为daemon off则会阻塞当前终端(即前台运行)3.查看nginx容器的守护进程
[rootdocker01 ~]# docker container exec -it b25c10758474 /bin/bash
rootb25c10758474:/#
rootb25c10758474:/# cat /etc/os-release
PRETTY_NAMEDebian GNU/Linux 10 (buster)
NAMEDebian GNU/Linux
VERSION_ID10
VERSION10 (buster)
VERSION_CODENAMEbuster
IDdebian
HOME_URLhttps://www.debian.org/
SUPPORT_URLhttps://www.debian.org/support
BUG_REPORT_URLhttps://bugs.debian.org/
rootb25c10758474:/#
rootb25c10758474:/#
rootb25c10758474:/# apt-get update
Hit:1 http://security.debian.org/debian-security buster/updates InRelease
Hit:2 http://deb.debian.org/debian buster InRelease
Hit:3 http://deb.debian.org/debian buster-updates InRelease
Reading package lists... Done
rootb25c10758474:/#
rootb25c10758474:/#
rootb25c10758474:/# apt-get -y install procps
Reading package lists... Done
Building dependency tree
Reading state information... Done
procps is already the newest version (2:3.3.15-2).
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
rootb25c10758474:/#
rootb25c10758474:/# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 07:33 pts/0 00:00:00 nginx: master process nginx -g daemon off;
nginx 25 1 0 07:33 pts/0 00:00:00 nginx: worker process
nginx 26 1 0 07:33 pts/0 00:00:00 nginx: worker process
root 34 0 0 07:38 pts/1 00:00:00 /bin/bash
root 295 34 作业:
(1)在Ubuntu,Windows操作系统部署docker环境;
(2)在CentOS系统中下载nginx:1.14,nginx:1.16,nginx:1.18,nginx:1.20.1并导出,将其批量导入到Ubuntu,windows的docker环境;作业答案参考
作业(2)答案
参考Ubuntu安装docker
https://blog.csdn.net/heyl163_/article/details/131503469docker镜像加速配置
rootkoboid:~# cat /etc/docker/daemon.json
{registry-mirrors: [https://docker.registry.cyou,https://docker-cf.registry.cyou,https://dockercf.jsdelivr.fyi,https://docker.jsdelivr.fyi,https://dockertest.jsdelivr.fyi,https://mirror.aliyuncs.com,https://dockerproxy.com,https://mirror.baidubce.com,https://docker.m.daocloud.io,https://docker.nju.edu.cn,https://docker.mirrors.sjtug.sjtu.edu.cn,https://docker.mirrors.ustc.edu.cn,https://mirror.iscas.ac.cn,https://docker.rainbond.cc]
}修改镜像换成。
{builder: {gc: {defaultKeepStorage: 20GB,enabled: true}},experimental: false,features: {buildkit: true},registry-mirrors: [https://docker.registry.cyou,https://docker-cf.registry.cyou,https://dockercf.jsdelivr.fyi,https://docker.jsdelivr.fyi,https://dockertest.jsdelivr.fyi,https://mirror.aliyuncs.com,https://dockerproxy.com,https://mirror.baidubce.com,https://docker.m.daocloud.io,https://docker.nju.edu.cn,https://docker.mirrors.sjtug.sjtu.edu.cn,https://docker.mirrors.ustc.edu.cn,https://mirror.iscas.ac.cn,https://docker.rainbond.cc]
}#docker,windows。桌面软件。下载4.9.1版本
https://docs.docker.com/desktop/release-notes/#4201
Windows操作系统部署docker环境流程补充
windows的docker桌面软件需要勾选 “Expose daemon on tcp://localhost:2375 without TLS” 四.使用xshell添加快速命令集
1.每次敲击批量删除所有容器比较繁琐 学习阶段每次敲击docker rm -f docker ps -a -q是不是会觉得很烦呢此时我们可以借助xshell工具来帮咱们实现一个快捷键。2.启用快速命令
依次点击查看 --- 快速命令 --- 显示效果如下图所示。3.创建快速命令集 如下图所示双击标记的空白处按照你的需求自定义指令即可记得取消勾选追加CR(A)哟~五、docker容器重启策略
参考官方文档https://docs.docker.com/reference/cli/docker/container/run/#restart
[rootdocker01 ~]# pstree -p