[关闭]
@xushengkai 2023-07-14T02:39:53.000000Z 字数 26358 阅读 473

容器自动化(一)Docker基础

自动化运维

一.docker的安装

centos下安装docker
关闭防火墙和selinux

其他系统参照如下文档
https://docs.docker.com/engine/install/centos/

  1. 移除之前docker的相关包
  1. sudo yum remove docker \
  2. docker-client \
  3. docker-client-latest \
  4. docker-common \
  5. docker-latest \
  6. docker-latest-logrotate \
  7. docker-logrotate \
  8. docker-engine
  1. 配置yum源
  1. sudo yum install -y yum-utils
  2. sudo yum-config-manager \
  3. --add-repo \
  4. http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. 安装docker
  1. sudo yum -y install docker-ce
  2. #安装k8s时使用
  3. yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io-1.4.6
  1. 启动docker
  1. //开机自启动
  2. systemctl enable docker --now
  1. 配置加速
  1. //这里额外添加了docker的生产环境核心配置cgroup
  2. sudo mkdir -p /etc/docker
  3. sudo tee /etc/docker/daemon.json <<-'EOF'
  4. {
  5. "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"],
  6. "exec-opts": ["native.cgroupdriver=systemd"],
  7. "log-driver": "json-file",
  8. "log-opts": {
  9. "max-size": "100m"
  10. },
  11. "storage-driver": "overlay2"
  12. }
  13. EOF
  14. sudo systemctl daemon-reload
  15. sudo systemctl restart docker

二.docker操作命令

1.docker命令:search

用于从docker的官方公有镜像仓库查找镜像

  1. 查看Docker Hub上公开的centos镜像
  1. [root@localhost ~]# docker search centos
  2. NAME DESCRIPTION STARS OFFICIAL AUTOMATED
  3. centos DEPRECATED; The official build of CentOS. 7486 [OK]
  4. kasmweb/centos-7-desktop CentOS 7 desktop for Kasm Workspaces 33
  5. bitnami/centos-base-buildpack Centos base compilation image 0 [OK]
  6. bitnami/centos-extras-base 0
  7. couchbase/centos7-systemd centos7-systemd images with additional debug 6 [OK]
  8. ···此处省略···
  9. //参数解释:
  10. Name:镜像的名字
  11. DESCRIPTION:描述
  12. STARS:星级(越高越好)
  13. OFFICIAL:是否是官方发布的
  14. AUTOMATED:是否自动化的
  1. 查找星级大于100的centos镜像
  1. [root@localhost ~]# docker search centos -f stars=100
  2. NAME DESCRIPTION STARS OFFICIAL AUTOMATED
  3. centos DEPRECATED; The official build of CentOS. 7486 [OK]
  1. 多条件查找--filter
  1. #查找官方发布的,星级大于100的centos镜像
  2. [root@localhost ~]# docker search centos --filter is-official=true --filter stars=100
  3. NAME DESCRIPTION STARS OFFICIAL AUTOMATED
  4. centos DEPRECATED; The official build of CentOS. 7486 [OK]
  5. //docker search centos -f is-official=true -f stars=100
  6. -f = --filter

2.docker命令:pull

用于从Docker Hub上下载公有镜像

  1. #查找符合条件的centos镜像
  2. [root@localhost ~]# docker search centos -f is-official=true -f stars=100
  3. NAME DESCRIPTION STARS OFFICIAL AUTOMATED
  4. centos DEPRECATED; The official build of CentOS. 7486 [OK]
  5. #下载centos镜像
  6. [root@localhost ~]# docker pull centos
  7. Using default tag: latest
  8. latest: Pulling from library/centos
  9. a1d0c7532777: Pull complete
  10. Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
  11. Status: Downloaded newer image for centos:latest
  12. docker.io/library/centos:latest

3.docker命令:images

查看本地镜像

  1. [root@localhost ~]# docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. centos latest 5d0da3dc9764 17 months ago 231MB
  4. //参数解释:
  5. 特别说明:
  6. REPOSITORY:镜像仓库(下边罗列的都是本地已有镜像名称)
  7. TAG:镜像的标记(为了区分同名镜像)
  8. IMAGES ID:镜像的ID
  9. CREATED:此镜像的创建时间
  10. SIZE:此镜像的大小

4.dokcer命令:build

用于本地自定义镜像的构建,需要创建Dockerfile文件
注意Dockerfile文件内不能写注释等不然会报错

  1. #创建Dockerfile文件的存储目录
  2. [root@192 ~]# mkdir -p /root/dockerfile/lib/centos/7
  3. #下载centos7镜像
  4. [root@192 ~]# docker pull centos:7
  5. 7: Pulling from library/centos
  6. 2d473b07cdd5: Pull complete
  7. Digest: sha256:9d4bcbbb213dfd745b58be38b13b996ebb5ac315fe75711bd618426a630e0987
  8. Status: Downloaded newer image for centos:7
  9. docker.io/library/centos:7
  10. #创建docker.sh脚本
  11. [root@192 ~]# cd dockerfile/lib/centos/7/
  12. [root@192 7]# vim docker.sh
  13. #!/bin/bash
  14. while true
  15. do
  16. echo "welcome xushengkai"
  17. sleep 4
  18. done
  19. #创建Dockerfile配置文件,文件名称必须为Dockerfile,第一个字母必须大写
  20. [root@192 7]# vim Dockerfile
  21. FROM centos:7 #基于centos7镜像构建,前提是有这个镜像
  22. LABEL MAINTATNER="xushengkai" #作者的名字
  23. RUN ln -sfv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #RUN:在镜像构建过程中运行命令
  24. //将系统时间更新为上海时间
  25. ADD docker.sh /home/test/ #从本地系统中把docker.sh文件添加到构建中的镜像的/home/test/目录下,目录不存在会自动创建
  26. RUN chmod +x /home/test/docker.sh #在镜像构建过程中运行命令
  27. CMD ["/home/test/docker.sh"] #构建镜像完成时,最后执行的命令
  28. #根据Dockfile配置文件构建一个自定义镜像
  29. [root@192 7]# docker build -t xushengkai/centos7:v1 ./
  30. [+] Building 0.2s (9/9) FINISHED
  31. => [internal] load build definition from Dockerfile 0.0s
  32. => => transferring dockerfile: 258B 0.0s
  33. => [internal] load .dockerignore 0.0s
  34. => => transferring context: 2B 0.0s
  35. => [internal] load metadata for docker.io/library/centos:7 0.0s
  36. => [1/4] FROM docker.io/library/centos:7 0.0s
  37. => CACHED [2/4] RUN ln -sfv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 0.0s
  38. => [internal] load build context 0.0s
  39. => => transferring context: 30B 0.0s
  40. => [3/4] ADD docker.sh /home/test/ 0.0s
  41. => [4/4] RUN chmod +x /home/test/docker.sh 0.2s
  42. => exporting to image 0.0s
  43. => => exporting layers 0.0s
  44. => => writing image sha256:3f1765bba10e1eefba1489aacb6901e64ce0171b4d9986ca08622eb5dd7b1a9e 0.0s
  45. => => naming to docker.io/xushengkai/centos7:v1
  46. //参数解释:
  47. -t:指定镜像名称
  48. 1:设定镜像的tag标记
  49. ./:Dockerfile文件的位置
  50. [root@192 7]# docker images
  51. REPOSITORY TAG IMAGE ID CREATED SIZE
  52. xushengkai/centos7 v1 3f1765bba10e 4 minutes ago 204MB
  53. nginx latest 605c77e624dd 13 months ago 141MB
  54. centos 7 eeb6ee3f44bd 17 months ago 204MB
  55. centos latest 5d0da3dc9764 17 months ago 231MB
  56. #运行镜像进程,查看结果
  57. [root@192 7]# docker run -dit 3f1765bba10e
  58. 2133c06768040c0726c8f3e05f32b2ba8e1765a81830465f33514ad49301ba9c
  59. [root@192 7]# docker ps
  60. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  61. 2133c0676804 3f1765bba10e "/home/test/docker.sh" 14 seconds ago Up 13 seconds friendly_cray
  62. [root@192 7]# docker attach 2133
  63. welcome xushengkai
  64. welcome xushengkai
  65. welcome xushengkai
  66. welcome xushengkai
  67. welcome xushengkai
  68. //脚本每隔4秒输出一句话

5.docker命令:run

运行一个本地镜像

  1. #下载nginx镜像
  2. [root@localhost ~]# docker pull nginx
  3. Using default tag: latest
  4. latest: Pulling from library/nginx
  5. a2abf6c4d29d: Pull complete
  6. a9edb18cadd1: Pull complete
  7. 589b7251471a: Pull complete
  8. 186b1aaa4aa6: Pull complete
  9. b4df32aa5a72: Pull complete
  10. a0bcbecc962e: Pull complete
  11. Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
  12. Status: Downloaded newer image for nginx:latest
  13. docker.io/library/nginx:latest
  14. #查看镜像
  15. [root@localhost ~]# docker images
  16. REPOSITORY TAG IMAGE ID CREATED SIZE
  17. nginx latest 605c77e624dd 13 months ago 141MB
  18. centos latest 5d0da3dc9764 17 months ago 231MB
  19. #运行本地镜像nginx
  20. [root@localhost ~]# docker run --name=mynginx -dit --restart=always -p 88:80 nginx
  21. b97e361570155a0b7850a459b2c11139ff0447a2221f98d51e582ff013bad112
  22. //参数解释:
  23. docker run:运行一个指定的images id
  24. -d:放在后台运行
  25. -i:可以进行命令交互
  26. -t:制作一个伪终端用于登陆
  27. --restart=always: 开机自启
  28. -p 88:80 将主机的88端口映射到80端口

6.docker命令:ps

查看已经运行的镜像进程

  1. [root@localhost ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. e995eee690e4 centos "/bin/bash" About an hour ago Up About an hour funny_maxwell
  4. b97e36157015 nginx "/docker-entrypoint.…" 2 hours ago Up 2 hours 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx
  5. #查看所有运行的镜像进程(包含退出的exit)
  6. [root@localhost ~]# docker ps -a
  7. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  8. e995eee690e4 centos "/bin/bash" About an hour ago Up About an hour funny_maxwell
  9. b97e36157015 nginx "/docker-entrypoint.…" 2 hours ago Up 2 hours 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx
  10. //特别提示:
  11. STATUS:进程的状态,UP表示正在运行中,EXIT表示已经退出了。

7.docker命令:attach

从本地系统中切入到某个STATUS状态是UP的镜像进程里

  1. #查看所有已经运行的镜像进程(包含退出的exit)
  2. [root@localhost ~]# docker ps -a
  3. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  4. b92e34f5003d centos "/bin/bash" 6 seconds ago Up 5 seconds beautiful_bose
  5. b97e36157015 nginx "/docker-entrypoint.…" 2 hours ago Up 32 seconds 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx
  6. #进入到容器id为b92e34f5003d 的镜像进程里
  7. [root@localhost ~]# docker attach b92e34f5003d
  8. [root@b92e34f5003d /]# pwd
  9. /
  10. [root@b92e34f5003d /]# exit
  11. exit //退出容器
  12. [root@localhost ~]# docker ps -a
  13. ]CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  14. b92e34f5003d centos "/bin/bash" About a minute ago Exited (0) About a minute ago beautiful_bose
  15. b97e36157015 nginx "/docker-entrypoint.…" 2 hours ago Up 2 minutes 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx
  16. // #容器的进程的STATUS已经处于EXIT状态(之前是后台运行的,切入进去后执行exit就等于手动退出了)

8.docker命令:stop

用于停止一个正在运行着的容器进程

  1. #运行本地centos镜像
  2. [root@localhost ~]# docker run -dit centos
  3. 21b27f399c87e6d1f72b0f4f018ea2b0e7c88241a50c1daee5d92fd274b6c6a0
  4. #查看所有已经运行的镜像进程(包含退出的exit)
  5. [root@localhost ~]# docker ps -a
  6. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  7. 21b27f399c87 centos "/bin/bash" 24 seconds ago Up 23 seconds dreamy_snyder
  8. b97e36157015 nginx "/docker-entrypoint.…" 2 hours ago Up 6 minutes 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx
  9. #停止正在运行的centos镜像进程
  10. [root@localhost ~]# docker stop 21b2
  11. 21b2
  12. #查看所有已经运行的镜像进程(包含退出的exit)
  13. [root@localhost ~]# docker ps -a
  14. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  15. 21b27f399c87 centos "/bin/bash" 2 minutes ago Exited (0) 2 seconds ago dreamy_snyder
  16. b97e36157015 nginx "/docker-entrypoint.…" 2 hours ago Up 8 minutes 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx
  17. //centos镜像进程显示已经停止

9.docker:start

用于启动一个已经停止了的容器进程

  1. #查看所有已经运行的镜像进程(包含退出的exit)
  2. [root@localhost ~]# docker ps -a
  3. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  4. 21b27f399c87 centos "/bin/bash" 2 minutes ago Exited (0) 2 seconds ago dreamy_snyder
  5. b97e36157015 nginx "/docker-entrypoint.…" 2 hours ago Up 8 minutes 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx
  6. #启动停止的centos镜像进程
  7. [root@localhost ~]# docker start 21b27f399c87
  8. 21b27f399c87
  9. #查看正在运行的镜像进程
  10. [root@localhost ~]# docker ps
  11. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  12. 21b27f399c87 centos "/bin/bash" 5 minutes ago Up 2 seconds dreamy_snyder
  13. b97e36157015 nginx "/docker-entrypoint.…" 2 hours ago Up 10 minutes 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx

10.docker命令:rm

用于删除一个已经停止了的容器进程
如果没有停止删除需要加 -f参数,强制删除

  1. #查看正在运行的镜像进程
  2. [root@localhost ~]# docker ps
  3. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  4. 21b27f399c87 centos "/bin/bash" 5 minutes ago Up 2 seconds dreamy_snyder
  5. b97e36157015 nginx "/docker-entrypoint.…" 2 hours ago Up 10 minutes 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx
  6. #先停止镜像进程,再删除
  7. [root@localhost ~]# docker stop 21b27
  8. 21b27
  9. [root@localhost ~]# docker rm 21b27
  10. 21b27
  11. #查看所有已经运行的镜像进程(包含退出的exit)
  12. [root@localhost ~]# docker ps -a
  13. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  14. b97e36157015 nginx "/docker-entrypoint.…" 2 hours ago Up 15 minutes 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx

11.docker命令:rmi

用于删除一个未用作容器启动的本地镜像,如果正在运行,先停止再删除镜像
不停止镜像进程,强制删除镜像加-f参数强制删除镜像,但镜像进程仍会正常运行

  1. #查看镜像
  2. [root@localhost ~]# docker images
  3. REPOSITORY TAG IMAGE ID CREATED SIZE
  4. nginx latest 605c77e624dd 13 months ago 141MB
  5. mysql latest 3218b38490ce 13 months ago 516MB
  6. centos latest 5d0da3dc9764 17 months ago 231MB
  7. #查看正在运行的镜像进程
  8. [root@localhost ~]# docker ps
  9. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  10. b97e36157015 nginx "/docker-entrypoint.…" 3 hours ago Up 8 minutes 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx
  11. #删除mysql镜像
  12. [root@localhost ~]# docker rmi mysql
  13. #运行centos镜像进程
  14. [root@localhost ~]# docker run -dit centos
  15. 8d350081a85ee9cd682fe833bee600b9f1b663d39c791a28189aade403327753
  16. [root@localhost ~]# docker ps
  17. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  18. 8d350081a85e centos "/bin/bash" 5 seconds ago Up 4 seconds quizzical_borg
  19. b97e36157015 nginx "/docker-entrypoint.…" 3 hours ago Up 9 minutes 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx
  20. #强制删除正在运行的镜像进程的镜像
  21. [root@localhost ~]# docker rmi -f centos
  22. Untagged: centos:latest
  23. Untagged: centos@sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
  24. #查看镜像
  25. [root@localhost ~]# docker images
  26. REPOSITORY TAG IMAGE ID CREATED SIZE
  27. nginx latest 605c77e624dd 13 months ago 141MB
  28. <none> <none> 5d0da3dc9764 17 months ago 231MB
  29. #查看容器进程,被占用中
  30. [root@localhost ~]# docker ps -a
  31. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  32. 8d350081a85e 5d0da3dc9764 "/bin/bash" 25 seconds ago Up 24 seconds quizzical_borg
  33. b97e36157015 nginx "/docker-entrypoint.…" 3 hours ago Up 9 minutes 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx

12.docker命令:commit

将一个更改过的容器进程的容器状态保存为一个新的镜像

  1. #运行容器镜像
  2. [root@192 ~]# docker run -dit centos
  3. 4ec79c85b27f1b94e5d48c8ab1d9a048e2696f5b3365450b5a1bec738931d165
  4. [root@192 ~]# docker ps
  5. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  6. 4ec79c85b27f centos "/bin/bash" 5 seconds ago Up 5 seconds adoring_haslett
  7. b97e36157015 nginx "/docker-entrypoint.…" 24 hours ago Up 2 hours 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx
  8. #进入容器镜像
  9. [root@192 ~]# docker attach 4ec79c85b27f
  10. #创建新的目录
  11. [root@4ec79c85b27f /]# mkdir yunjisuan
  12. [root@4ec79c85b27f /]# ls
  13. bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var yunjisuan
  14. #退出容器
  15. [root@4ec79c85b27f /]# exit
  16. exit
  17. [root@192 ~]# docker ps -a
  18. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  19. 4ec79c85b27f centos "/bin/bash" 3 minutes ago Exited (0) About a minute ago adoring_haslett
  20. b97e36157015 nginx "/docker-entrypoint.…" 24 hours ago Up 2 hours 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx
  21. #将更改后的容器进程保存为一个新的镜像
  22. [root@192 ~]# docker commit 4ec79c85b27f xushengkai/centos:v1
  23. sha256:10cafe821fec04ae85a8269a154d185ba5dcc2db605eb45da5e53ffe1b29c23d
  24. [root@192 ~]# docker images
  25. REPOSITORY TAG IMAGE ID CREATED SIZE
  26. xushengkai/centos v1 10cafe821fec 6 seconds ago 231MB
  27. nginx latest 605c77e624dd 13 months ago 141MB
  28. centos latest 5d0da3dc9764 17 months ago 231MB
  29. #运行新的容器镜像
  30. [root@192 ~]# docker run -dit 10cafe821fec
  31. 9ec1bad789a77d2a180ca5642355225178cf6cbf4f834e737b277d75c49ef0a3
  32. [root@192 ~]# docker ps
  33. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  34. 9ec1bad789a7 10cafe821fec "/bin/bash" 4 seconds ago Up 3 seconds crazy_almeida
  35. b97e36157015 nginx "/docker-entrypoint.…" 24 hours ago Up 2 hours 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx
  36. #切入新镜像的容器进程
  37. [root@192 ~]# docker attach 9ec
  38. [root@9ec1bad789a7 /]# ls
  39. bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var yunjisuan //之前创建的目录仍旧存在

13.docker命令:exec

用于从本地操作系统上直接向容器进程发布执行命令并返回结果

  1. [root@192 ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. b97e36157015 nginx "/docker-entrypoint.…" 25 hours ago Up 2 hours 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx
  4. #查看容器进程里的/目录下所有内容
  5. [root@192 ~]# docker exec b97e36157015 ls /
  6. bin boot dev docker-entrypoint.d docker-entrypoint.sh etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

14.docker命令:cp

用于从本地操作系统上直接向容器进程发布执行命令并返回结果

  1. [root@192 ~]# docker ps -a
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. b97e36157015 nginx "/docker-entrypoint.…" 26 hours ago Up 3 hours 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx
  4. [root@192 ~]# docker exec b97e ls /tmp
  5. 1111
  6. [root@192 ~]# ls
  7. anaconda-ks.cfg
  8. #将指定容器进程的/tmp/1111复制到当前目录下
  9. [root@192 ~]# docker exec cp b97e36157015:/tmp/1111 ./
  10. Error response from daemon: No such container: cp
  11. [root@192 ~]# docker cp b97e36157015:/tmp/1111 ./
  12. Preparing to copy...
  13. Successfully copied 1.536kB to /root/./
  14. [root@192 ~]# ls
  15. 1111 anaconda-ks.cfg
  16. #将本地文件复制到容器进程里
  17. [root@192 ~]# docker cp anaconda-ks.cfg b97e36157015:/tmp
  18. Preparing to copy...
  19. Copying to container - 3.072kB
  20. Successfully copied 3.072kB to b97e36157015:/tmp
  21. [root@192 ~]# docker exec b97e ls /tmp
  22. 1111
  23. anaconda-ks.cfg

15.docker命令:create

用于创建一个容器进程,但是并不启动它

  1. [root@192 ~]# docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. xushengkai/centos v1 10cafe821fec About an hour ago 231MB
  4. nginx latest 605c77e624dd 13 months ago 141MB
  5. centos latest 5d0da3dc9764 17 months ago 231MB
  6. #创建一个镜像的容器进程,但不直接启动
  7. [root@192 ~]# docker create -it centos
  8. 482c947b556e556174004b0f5682cdc49472eee94328a7d212f16041b07fd60f
  9. [root@192 ~]# docker ps -a
  10. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  11. 482c947b556e centos "/bin/bash" 4 seconds ago Created sad_mclean
  12. b97e36157015 nginx "/docker-entrypoint.…" 26 hours ago Up 3 hours 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx
  13. #启动容器进程
  14. [root@192 ~]# docker start 482c
  15. 482c
  16. [root@192 ~]# docker ps
  17. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  18. 482c947b556e centos "/bin/bash" About a minute ago Up 3 seconds sad_mclean
  19. b97e36157015 nginx "/docker-entrypoint.…" 26 hours ago Up 3 hours 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx

16.docker命令:diff

查看容器进程与源镜像做对比,发生了改变的文件或文件夹

  1. [root@192 ~]# docker ps -a
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 482c947b556e centos "/bin/bash" 5 minutes ago Up 4 minutes sad_mclean
  4. b97e36157015 nginx "/docker-entrypoint.…" 26 hours ago Up 3 hours 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx
  5. #进入容器镜像
  6. [root@192 ~]# docker attach 482c
  7. #创建目录和文件
  8. [root@482c947b556e /]# mkdir yunjisuan
  9. [root@482c947b556e /]# touch /yunjisuan/{1..5}.jpg
  10. [root@482c947b556e /]# exit
  11. exit
  12. #查看容器进程的变化
  13. [root@192 ~]# docker diff 482c947b556e
  14. A /yunjisuan
  15. A /yunjisuan/5.jpg
  16. A /yunjisuan/1.jpg
  17. A /yunjisuan/2.jpg
  18. A /yunjisuan/3.jpg
  19. A /yunjisuan/4.jpg
  20. C /root
  21. A /root/.bash_history
  22. //A是变化的
  23. //C是相同的

17.docker命令:events

时时监测容器的变化情况

  1. [root@192 ~]# docker events
  2. 2023-02-14T12:48:54.229746158+08:00 container destroy 482c947b556e556174004b0f5682cdc49472eee94328a7d212f16041b07fd60f (image=centos, name=sad_mclean, org.label-schema.build-date=20210915, org.label-schema.license=GPLv2, org.label-schema.name=CentOS Base Image, org.label-schema.schema-version=1.0, org.label-schema.vendor=CentOS)
  3. //此时界面是卡在这里的,处于监控状态,需要打开一个新的窗口测试

18.docker命令:export

将容器进程的文件系统导出到本地

在这里插入图片描述

  1. [root@192 ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. b97e36157015 nginx "/docker-entrypoint.…" 26 hours ago Up 4 hours 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx
  4. #将容器进程导出成一个tar包
  5. [root@192 ~]# docker export b97e > ./test.tar
  6. [root@192 ~]# ls
  7. 1111 anaconda-ks.cfg test.tar

19.docker命令:import

用于将export导出的文件系统创建为一个镜像

  1. [root@192 ~]# ls
  2. 1111 anaconda-ks.cfg test.tar
  3. #将导出的tar包文件系统生成一个新的镜像
  4. [root@192 ~]# docker import test.tar xushengkai/centos:v2
  5. sha256:efecc194d3d689f71f56839ef7a68865c3d4c00635d64f85db142b17e6ffc527
  6. [root@192 ~]# docker images
  7. REPOSITORY TAG IMAGE ID CREATED SIZE
  8. xushengkai/centos v2 efecc194d3d6 About a minute ago 140MB
  9. xushengkai/centos v1 10cafe821fec 5 hours ago 231MB
  10. nginx latest 605c77e624dd 13 months ago 141MB
  11. centos latest 5d0da3dc9764 17 months ago 231MB

20.docker命令:history

用于查看一个镜像的历史修改纪录

  1. [root@192 ~]# docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. xushengkai/centos v2 efecc194d3d6 3 minutes ago 140MB
  4. xushengkai/centos v1 10cafe821fec 5 hours ago 231MB
  5. nginx latest 605c77e624dd 13 months ago 141MB
  6. centos latest 5d0da3dc9764 17 months ago 231MB
  7. [root@192 ~]# docker history efecc194d3d6
  8. IMAGE CREATED CREATED BY SIZE COMMENT
  9. efecc194d3d6 3 minutes ago 140MB Imported from -
  10. [root@192 ~]# docker history 10cafe821fec
  11. IMAGE CREATED CREATED BY SIZE COMMENT
  12. 10cafe821fec 5 hours ago /bin/bash 24B
  13. 5d0da3dc9764 17 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
  14. <missing> 17 months ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B
  15. <missing> 17 months ago /bin/sh -c #(nop) ADD file:805cb5e15fb6e0bb0… 231MB

21.docker命令:info

用于查看当前操作系统的docker运行信息

  1. [root@192 ~]# docker info
  2. Client:
  3. Context: default
  4. Debug Mode: false
  5. Plugins:
  6. buildx: Docker Buildx (Docker Inc.)
  7. Version: v0.10.2
  8. Path: /usr/libexec/docker/cli-plugins/docker-buildx
  9. compose: Docker Compose (Docker Inc.)
  10. Version: v2.16.0
  11. Path: /usr/libexec/docker/cli-plugins/docker-compose
  12. scan: Docker Scan (Docker Inc.)
  13. Version: v0.23.0
  14. Path: /usr/libexec/docker/cli-plugins/docker-scan
  15. Server:
  16. Containers: 1
  17. Running: 1
  18. Paused: 0
  19. Stopped: 0
  20. Images: 4
  21. Server Version: 23.0.1
  22. Storage Driver: overlay2
  23. Backing Filesystem: xfs
  24. Supports d_type: true
  25. Using metacopy: false
  26. Native Overlay Diff: true
  27. userxattr: false
  28. Logging Driver: json-file
  29. Cgroup Driver: systemd
  30. Cgroup Version: 1
  31. Plugins:
  32. Volume: local
  33. Network: bridge host ipvlan macvlan null overlay
  34. Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
  35. Swarm: inactive
  36. Runtimes: io.containerd.runc.v2 runc
  37. Default Runtime: runc
  38. Init Binary: docker-init
  39. containerd version: 31aa4358a36870b21a992d3ad2bef29e1d693bec
  40. runc version: v1.1.4-0-g5fd4c4d
  41. init version: de40ad0
  42. Security Options:
  43. seccomp
  44. Profile: builtin
  45. Kernel Version: 3.10.0-862.el7.x86_64
  46. Operating System: CentOS Linux 7 (Core)
  47. OSType: linux
  48. Architecture: x86_64
  49. CPUs: 2
  50. Total Memory: 1.024GiB
  51. Name: 192.168.200.146
  52. ID: 755c1dbe-afbb-48dd-95db-ac152e78c883
  53. Docker Root Dir: /var/lib/docker
  54. Debug Mode: false
  55. Registry: https://index.docker.io/v1/
  56. Experimental: false
  57. Insecure Registries:
  58. 127.0.0.0/8
  59. Registry Mirrors:
  60. https://82m9ar63.mirror.aliyuncs.com/
  61. Live Restore Enabled: false
  62. WARNING: bridge-nf-call-iptables is disabled
  63. WARNING: bridge-nf-call-ip6tables is disabled

22.docker命令:inspect

查看某个镜像的详细信息

  1. [root@192 ~]# docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. xushengkai/centos v2 efecc194d3d6 7 minutes ago 140MB
  4. xushengkai/centos v1 10cafe821fec 5 hours ago 231MB
  5. nginx latest 605c77e624dd 13 months ago 141MB
  6. centos latest 5d0da3dc9764 17 months ago 231MB
  7. [root@192 ~]# docker inspect 605c77e624dd

23.docker命令:kill

强行停止一个或多个正在运行状态的容器进程

  1. [root@192 ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 37462216a16c centos "/bin/bash" 10 seconds ago Up 10 seconds keen_swanson
  4. b97e36157015 nginx "/docker-entrypoint.…" 29 hours ago Up 7 hours 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx
  5. [root@192 ~]# docker kill 37462216a16c
  6. 37462216a16c
  7. [root@192 ~]# docker ps
  8. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  9. b97e36157015 nginx "/docker-entrypoint.…" 29 hours ago Up 7 hours 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx

24.docker命令:save

用于将一个镜像的文件系统导出到本地(export导出的是容器)

在这里插入图片描述

  1. #重新build一个镜像
  2. [root@192 ~]# cd dockerfile/lib/centos/7/
  3. [root@192 7]# ls
  4. Dockerfile docker.sh
  5. [root@192 7]# docker build -t test:v1 ./
  6. [+] Building 0.0s (9/9) FINISHED
  7. => [internal] load build definition from Dockerfile 0.0s
  8. => => transferring dockerfile: 258B 0.0s
  9. => [internal] load .dockerignore 0.0s
  10. => => transferring context: 2B 0.0s
  11. => [internal] load metadata for docker.io/library/centos:7 0.0s
  12. => [1/4] FROM docker.io/library/centos:7 0.0s
  13. => [internal] load build context 0.0s
  14. => => transferring context: 30B 0.0s
  15. => CACHED [2/4] RUN ln -sfv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 0.0s
  16. => CACHED [3/4] ADD docker.sh /home/test/ 0.0s
  17. => CACHED [4/4] RUN chmod +x /home/test/docker.sh 0.0s
  18. => exporting to image 0.0s
  19. => => exporting layers 0.0s
  20. => => writing image sha256:3f1765bba10e1eefba1489aacb6901e64ce0171b4d9986ca08622eb5dd7b1a9e 0.0s
  21. => => naming to docker.io/library/test:v1 0.0s
  22. [root@192 7]# docker images
  23. REPOSITORY TAG IMAGE ID CREATED SIZE
  24. test v1 3f1765bba10e 11 minutes ago 204MB
  25. xushengkai/centos7 v1 3f1765bba10e 11 minutes ago 204MB
  26. nginx latest 605c77e624dd 13 months ago 141MB
  27. centos 7 eeb6ee3f44bd 17 months ago 204MB
  28. centos latest 5d0da3dc9764 17 months ago 231MB
  29. #save导出test:1这个镜像(也可以用id号)
  30. [root@192 7]# docker save test:v1 > test.tar
  31. [root@192 7]# ls
  32. Dockerfile docker.sh test.tar

25.docker命令:load

用于将save导出到本地的tar包,重新加载为镜像(和源镜像的名字标识完全一样)

26.docker命令:logs

用于输出一个容器进程内的操作日志

  1. [root@192 ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. b97e36157015 nginx "/docker-entrypoint.…" 29 hours ago Up 7 hours 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx
  4. [root@192 ~]# docker logs b97e36157015
  5. /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
  6. /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
  7. /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
  8. 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
  9. 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
  10. /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
  11. /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
  12. /docker-entrypoint.sh: Configuration complete; ready for start up
  13. 2023/02/13 02:59:17 [notice] 1#1: using the "epoll" event method
  14. 2023/02/13 02:59:17 [notice] 1#1: nginx/1.21.5
  15. 2023/02/13 02:59:17 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6)
  16. 2023/02/13 02:59:17 [notice] 1#1: OS: Linux 3.10.0-862.el7.x86_64

27.docker命令:pause && unpause

用于将一个或多个容器的进程暂停和恢复

  1. [root@192 ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. b97e36157015 nginx "/docker-entrypoint.…" 29 hours ago Up 7 hours 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx
  4. #暂停容器进程
  5. [root@192 ~]# docker pause b97e36157015
  6. b97e36157015
  7. [root@192 ~]# docker ps
  8. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  9. b97e36157015 nginx "/docker-entrypoint.…" 29 hours ago Up 7 hours (Paused) 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx
  10. #恢复容器进程
  11. [root@192 ~]# docker unpause b97e36157015
  12. b97e36157015
  13. [root@192 ~]# docker ps
  14. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  15. b97e36157015 nginx "/docker-entrypoint.…" 29 hours ago Up 7 hours 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx

28.docker命令:port

用于列出一个容器的端口映射及协议

  1. [root@192 ~]# docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. xushengkai/centos v2 efecc194d3d6 23 minutes ago 140MB
  4. xushengkai/centos v1 10cafe821fec 5 hours ago 231MB
  5. nginx latest 605c77e624dd 13 months ago 141MB
  6. centos latest 5d0da3dc9764 17 months ago 231MB
  7. #启动一个镜像的容器进程 -p 指定本地2222端口映射到容器的233端口
  8. [root@192 ~]# docker run -dit -p 2222:233 5d0da3dc9764
  9. 860a60e76c14d1ef5afd56c392887733226484e1a2d81420e4e39eaa0663e19e
  10. [root@192 ~]# docker ps
  11. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  12. 860a60e76c14 5d0da3dc9764 "/bin/bash" 3 seconds ago Up 2 seconds 0.0.0.0:2222->233/tcp, :::2222->233/tcp sleepy_agnesi
  13. b97e36157015 nginx "/docker-entrypoint.…" 29 hours ago Up 7 hours 0.0.0.0:88->80/tcp, :::88->80/tcp mynginx
  14. #查看容器进程的端口映射及协议
  15. [root@192 ~]# docker port 860a60e76c14
  16. 233/tcp -> 0.0.0.0:2222
  17. 233/tcp -> [::]:2222

29.docker命令:rename

给容器进程重命名

  1. [root@192 ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 1b407e16577f centos "/bin/bash" 3 seconds ago Up 2 seconds heuristic_swirles
  4. #修改名字
  5. [root@192 ~]# docker rename heuristic_swirles xushengkai
  6. [root@192 ~]# docker ps
  7. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  8. 1b407e16577f centos "/bin/bash" About a minute ago Up About a minute xushengkai

30.docker命令:restart

重启一个容器进程

  1. [root@192 ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 1b407e16577f centos "/bin/bash" 2 minutes ago Up 2 minutes xushengkai
  4. #重启
  5. [root@192 ~]# docker restart 1b407e16577f
  6. 1b407e16577f
  7. [root@192 ~]# docker ps
  8. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  9. 1b407e16577f centos "/bin/bash" 2 minutes ago Up 1 second xushengkai

31.docker命令:stats

时时输出容器的资源使用情况

  1. [root@192 ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 1b407e16577f centos "/bin/bash" 4 minutes ago Up About a minute xushengkai
  4. [root@192 ~]# docker stats 1b407e16577f
  5. CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
  6. 1b407e16577f xushengkai 0.00% 536KiB / 1.024GiB 0.05% 648B / 0B 0B / 0B 1
  7. CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
  8. 1b407e16577f xushengkai 0.00% 536KiB / 1.024GiB 0.05% 648B / 0B 0B / 0B 1
  9. //只要不暂停,一直输出,加--no-tream只输出一次

32.docker命令:tag

用于从一个指定的镜像创建另外一个镜像

  1. [root@192 ~]# docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. xushengkai/centos v2 efecc194d3d6 37 minutes ago 140MB
  4. xushengkai/centos v1 10cafe821fec 5 hours ago 231MB
  5. nginx latest 605c77e624dd 13 months ago 141MB
  6. centos latest 5d0da3dc9764 17 months ago 231MB
  7. #根据名字创建
  8. [root@192 ~]# docker tag centos:latest centos:v1
  9. [root@192 ~]# docker images
  10. REPOSITORY TAG IMAGE ID CREATED SIZE
  11. xushengkai/centos v2 efecc194d3d6 37 minutes ago 140MB
  12. xushengkai/centos v1 10cafe821fec 5 hours ago 231MB
  13. nginx latest 605c77e624dd 13 months ago 141MB
  14. centos latest 5d0da3dc9764 17 months ago 231MB
  15. centos v1 5d0da3dc9764 17 months ago 231MB
  16. #根据镜像id创建
  17. [root@192 ~]# docker tag 605c77e624dd nginx:v1
  18. [root@192 ~]# docker images
  19. REPOSITORY TAG IMAGE ID CREATED SIZE
  20. xushengkai/centos v2 efecc194d3d6 38 minutes ago 140MB
  21. xushengkai/centos v1 10cafe821fec 5 hours ago 231MB
  22. nginx latest 605c77e624dd 13 months ago 141MB
  23. nginx v1 605c77e624dd 13 months ago 141MB
  24. centos latest 5d0da3dc9764 17 months ago 231MB
  25. centos v1 5d0da3dc9764 17 months ago 231MB

33.docker命令:top

用于显示指定容器的进程信息

  1. [root@192 ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 1b407e16577f centos "/bin/bash" 27 minutes ago Up 24 minutes xushengkai
  4. [root@192 ~]# docker top 1b407e16577f
  5. UID PID PPID C STIME TTY TIME CMD
  6. root 8157 8138 0 16:23 pts/0 00:00:00 /bin/bash

34.docker命令:update

用于调整一个或多个容器的启动配置

  1. [root@192 ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 1b407e16577f centos "/bin/bash" 30 minutes ago Up 27 minutes xushengkai
  4. #设置开机自启动
  5. [root@192 ~]# docker update --restart=always 1b407e16577f
  6. 1b407e16577f

35.docker命令:version和wait

version用于显示docker的版本信息
wait用于捕捉一个或多个容器的退出状态,并返回退出状态码

  1. #查看版本信息
  2. [root@192 ~]# docker version
  3. Client: Docker Engine - Community
  4. Version: 23.0.1
  5. API version: 1.42
  6. Go version: go1.19.5
  7. Git commit: a5ee5b1
  8. Built: Thu Feb 9 19:51:00 2023
  9. OS/Arch: linux/amd64
  10. Context: default
  11. Server: Docker Engine - Community
  12. Engine:
  13. Version: 23.0.1
  14. API version: 1.42 (minimum version 1.12)
  15. Go version: go1.19.5
  16. Git commit: bc3805a
  17. Built: Thu Feb 9 19:48:42 2023
  18. OS/Arch: linux/amd64
  19. Experimental: false
  20. containerd:
  21. Version: 1.6.16
  22. GitCommit: 31aa4358a36870b21a992d3ad2bef29e1d693bec
  23. runc:
  24. Version: 1.1.4
  25. GitCommit: v1.1.4-0-g5fd4c4d
  26. docker-init:
  27. Version: 0.19.0
  28. GitCommit: de40ad0
  29. #监听容器的退出状态并返回状态码
  30. [root@192 ~]# docker ps
  31. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  32. 1b407e16577f centos "/bin/bash" 36 minutes ago Up 33 minutes xushengkai
  33. [root@192 ~]# docker wait 1b407e16577f
  34. 0 //打开新的窗口stop容器进程

36.docker命令:login && logout && push

  • login用于登陆docker hub官方公有仓库
  • logout用于登出docker hub官方公有仓库
  • push用于将本地镜像提交到docker hub
    DockerHub官方公有镜像仓库:https://hub.docker.com
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注