Docker 教程

Docker 命令大全

Docker 命令大全


官方帮助文档: https://docs.docker.com/reference/

1. 镜像相关

  • 搜索可用镜像
1# docker search imagesName
  • 删除镜像
1# docker rmi [-f] imageID/imagesName

-f 为强制删除

  • 拉取镜像
1# docker pull imagesName:tag
  • 保存镜像到本地

保存单个镜像

1# docker save imagesName/imageID > /path/image.tar

保存多个镜像

1# docker save imagesName1/imageID1 imagesName2/imageID2 [imagesNameN/imageIDn] > /path/to/image_Name.tar

当需要把一台计算机上的镜像迁移到另一台计算机上时,需要保存镜像到本地。然后使用winscp将image.tar从机器a拷到机器b上,最后加载镜像。

  • 加载本地镜像
1# docker load -i /path/image.tar

1# docker load < /path/image.tar
  • 推送镜像到镜像仓库registry
1# docker push imagesName:tag/imageID
  • 从镜像运行一个容器,并在容器中运行一条命令
1# docker run -d imagesName:tag [cmd]
  • 从镜像运行一个容器,并在容器中运行交互式命令
1# docker run -it imagesName:tag [cmd]
  • 构建镜像

我们可以为每一个项目建立一个文件夹,在每个文件夹下放置1个dockerfile,并使用下面命令,手动构建镜像。

1// Dockerfile在当前目录下 2# docker build -t imagesName .

我们也可以使用下面命令构建镜像,或者结合docker-compose-file.yml,使用build选项自动构建镜像。

1// Dockerfile在其他目录下, 绝对路径后不带Dockerfile名称 2# docker build -t imageName /path/to/Dockerfile

2. 容器相关

  • 查看容器
1// 查看正在运行的容器 2# docker ps 3 4// 列出最近一个运行过的容器 5# docker ps -l 6 7// 查看所有容器,包括已经停止的 8# docker ps -a 9 10// 只展示正在运行的容器ID 11# docker ps -q
  • 删除容器
1// 删除停止的容器1和容器2 2# docker rm -f containerID1/names containerID2/names 3 4// 删除所有容器 5# docker rm $(docker ps -a -q) 6 7// 批量删除已经处于停止状态(exit)的容器 8# docker rm -f `docker ps -a |awk '{print $1}' | grep [0-9a-z]`
  • 停止/启动/重启/杀死一个容器
1// 发送一个信号,等待容器的停止 2# docker stop containerID/names 3 4// 启动停止的容器 5# docker start [-i] containerID/names 6 7// 重启运行中的容器 8# docker restart containerID/names 9 10// 杀死一个容器 11# docker kill containerID/names
  • 查看容器日志
1# docker logs [-f] [-t] [--tail 数字] containerID/names

没加参数,表示查看全部日志;-f –follows=true 默认为false,表示一直更新,ctrl+c退出;-t –timestamps=true | false 加上时间戳 ; –tail 数字,指定查看最新数目的日志)

  • 将容器重新提交为一个镜像
1# docker commit containerID imagesName
  • 运行容器

a. 运行一次性容器

1# docker run imagesName [含绝对路径的command] [arg]

容器启动一次,运行一个命令,最后停止

b. 运行交互式容器

1# docker run -it imagesName [含绝对路径command]

执行容器中的命令, 就像在使用虚拟机一样,最后ctrl+p ctrl+q,使容器在后台运行(-i –interactive=true|false,默认是false;-t –tty=true|false,默认是false)

c. 运行自定义容器

1# docker run -it --name=自定义容器名 imagesName [含绝对路径的command]

d. 运行守护式容器

1# docker run -d imageName [含绝对路径的command]

-d,等效于ctrl+p ctrl+q ,能够长期运行。没有交互式会话,适合运行应用程序和服务

–restart=always,自动重新启动容器

–restart=on-failure:5,指定重启次数

f. 运行守护式进程

1# docker run -d --name=自定义容器名 imageName [含绝对路径command]

在后台运行守护式进程命令,执行完命令,容器依然会退出

  • 附加到已经存在的容器的命令行
1# docker attach containerID/names

有些镜像附着会失败,使用ctrl+c退出

  • 查看容器详情,返回配置信息
1# docker inspect containerID/names
  • 查看运行容器中的进程
1# docker top containerID/names
  • 在容器运行后,进入容器的命令行
1# docker exec -it containerID/names [command] [ARG]

虽然docker的哲学是一个容器运行一个进程,但是要维护容器的话,就要新启动一个进程。启动参数如下:

1-I,--interactive=true|false,默认是false,启动交互式容器 2-t,--tty=true|false,默认是false 3--privileged,使用该参数container内的root拥有真正的root权限。若没有此参数,container内的root只是外部的一个普通用户权限。privileged启动的容器,可以看到很多host上的设备,并且可以执行mount,甚至允许你在docker容器中启动docker容器
  • 从一个容器连接到另一个容器
1# docker run -it --name sonar tpires/sonar-server --link mysql:db

将sonar容器连接到mysql容器,并将mysql容器重命名为db。这样,sonar就可以使用db相关的环境变量了。

  • 挂载数据卷
1# docker run -it -v /root/software/:/mnt/software/ -v /opt/dir/:/mnt/soft/ 25c5298b1a36 /bin/bash

-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>

  • 运行容器中的脚本
1# docker run -d -p 808:80 --name javaweb locutus1/javaweb:0.1 /root/run.sh

以下为脚本的内容

1// 注意:这里必须先加载环境变量,然后使用Tomcat的运行脚本来启动Tomcat服务 2# vim /root/run.sh 3 4!/bin/bash 5source ~/.bashrc 6sh /opt/tomcat/bin/catalina.sh run 7 8# chmod u+x /root/run.sh // 为运行脚本添加执行权限

3. 守护进程相关

  • 开启、停止、重启docker守护进程
1# service start/stop/restart docker
  • 显示Docker运行环境信息
1# docker info
  • 查看docker守护进程状态
1# ps -ef | grep docker

帮助命令

1docker version # 显示docker版本信息 2docker info # 显示docker系统系统信息,镜像以及容器数量等信息 3docker 命令 --help # 帮助命令 4

镜像命令

docker images 查看本地的所有镜像

1# docker images 查看本地的所有镜像 2[root@izuf6akcgealirj602cmxsz /]# docker images 3REPOSITORY TAG IMAGE ID CREATED SIZE 4hello-world latest feb5d9fea6a5 3 months ago 13.3kB 5 6# 命令参数含义 7REPOSITORY # 镜像仓库源 8TAG # 镜像的标签,版本 9IMAGE ID # 镜像的ID,唯一表示 10CREATED # 镜像的创建时间 11SIZE # 镜像的大小 12 13# 可选项 14 -a, --all # 列出所有镜像 15 -q, --quiet # 只显示镜像ID 16 17

docker search 查找镜像

1# docker search 查找镜像 2[root@izuf6akcgealirj602cmxsz /]# docker search mysql 3NAME DESCRIPTION STARS OFFICIAL AUTOMATED 4mysql MySQL is a widely used, open-source relation… 11931 [OK] 5mariadb MariaDB Server is a high performing open sou… 4561 [OK] 6 7# 命令参数含义 8NAME # 镜像仓库 9DESCRIPTION # 镜像描述信息 10STARS # 镜像收藏数 11OFFICIAL # 是否为docker官方发布的镜像 12AUTOMATED # 是否为自动化构建的镜像,关于自动化构建,可以查看官方文档:https://docs.docker.com/docker-hub/builds/#how-automated-builds-work 13 14# 可选项 15 --filter=STARS=5000 # 查找收藏数量大于5000的镜像 16[root@izuf6akcgealirj602cmxsz /]# docker search mysql --filter=STARS=5000 17NAME DESCRIPTION STARS OFFICIAL AUTOMATED 18mysql MySQL is a widely used, open-source relation… 11931 [OK] 19

docker pull 拉去镜像

1# 直接拉去镜像,默认拉去最新版本(目前为8.0) docker pull 镜像名 2[root@izuf6akcgealirj602cmxsz /]# docker pull mysql 3Using default tag: latest # 最新版本镜像 4latest: Pulling from library/mysql 572a69066d2fe: Pull complete # 分层下载,docker镜像核心(联合文件系统) 693619dbc5b36: Pull complete 799da31dd6142: Pull complete 8626033c43d70: Pull complete 937d5d7efb64e: Pull complete 10ac563158d721: Pull complete 11d2ba16033dad: Pull complete 12688ba7d5c01a: Pull complete 1300e060b6d11d: Pull complete 141c04857f594f: Pull complete 154d7cfa90e6ea: Pull complete 16e0431212d27d: Pull complete 17Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709 18Status: Downloaded newer image for mysql:latest 19docker.io/library/mysql:latest # 镜像真实地址 20 21# 等价关系 22docker pull mysql 等价于 docker pull docker.io/library/mysql:latest 23 24# 拉去指定版本的镜像 docker pull 镜像名[:tag] 25[root@izuf6akcgealirj602cmxsz /]# docker pull mysql:5.7 265.7: Pulling from library/mysql 2772a69066d2fe: Already exists # 本地已经存在的文件层就不用在此下载了 2893619dbc5b36: Already exists 2999da31dd6142: Already exists 30626033c43d70: Already exists 3137d5d7efb64e: Already exists 32ac563158d721: Already exists 33d2ba16033dad: Already exists 340ceb82207cd7: Pull complete 3537f2405cae96: Pull complete 36e2482e017e53: Pull complete 3770deed891d42: Pull complete 38Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94 39Status: Downloaded newer image for mysql:5.7 40docker.io/library/mysql:5.7 41

docker rmi 删除镜像

1# 删除指定容器 docker rmi 镜像ID 2[root@izuf6akcgealirj602cmxsz /]# docker rmi c20987f18b13 3Untagged: mysql:5.7 4Untagged: mysql@sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94 5Deleted: sha256:c20987f18b130f9d144c9828df630417e2a9523148930dc3963e9d0dab302a76 # 只删除了当前版本(mysql5.7)所下载的文件层 6Deleted: sha256:6567396b065ee734fb2dbb80c8923324a778426dfd01969f091f1ab2d52c7989 7Deleted: sha256:0910f12649d514b471f1583a16f672ab67e3d29d9833a15dc2df50dd5536e40f 8Deleted: sha256:6682af2fb40555c448b84711c7302d0f86fc716bbe9c7dc7dbd739ef9d757150 9Deleted: sha256:5c062c3ac20f576d24454e74781511a5f96739f289edaadf2de934d06e910b92 10 11# [root@izuf6akcgealirj602cmxsz /]# docker rmi 镜像ID #删除指定镜像 12# [root@izuf6akcgealirj602cmxsz /]# docker rmi 镜像ID 镜像ID ... #删除多个镜像 13# [root@izuf6akcgealirj602cmxsz /]# docker rmi $(docker images -aq) #删除所有镜像 14

容器命令

说明有了镜像才可以运行容器
创建容器并运行

1# docker run [:可选参数] image 2 3# 命令参数含义 4--name="容器名称" # 自定义容器名称,用于区别容器 5-d # 后台运行 6-it # 使用交互模式运行,进入容器 7-p # 指定容器端口 8 -p ip:宿主机端口:容器端口 9 -p 宿主机端口:容器端口 10 -p 容器端口 11-P # 随机指定端口 12 13# 启动并进入容器 14[root@izuf6akcgealirj602cmxsz ~]# docker run -it centos /bin/bash 15 16# 查看容器内centos,基础版本,很多命令都是不完善的 17[root@e901f5c1bb19 /]# ls 18bin etc lib lost+found mnt proc run srv tmp var 19dev home lib64 media opt root sbin sys usr 20

列出容器

1# docker ps 查看正在运行的容器 2 3# 命令参数含义 4-a # 列出所有容器,正在运行或者曾经运行过的容器 5-q # 只显示容器ID 6-n=? # 显示最近创建的n个容器 7 8# 列出所有容器,正在运行或者曾经运行过的容器 9[root@izuf6akcgealirj602cmxsz ~]# docker ps -a 10CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 11e901f5c1bb19 centos "/bin/bash" 15 minutes ago Exited (0) 12 minutes ago hardcore_lumiere 12 13# 只显示容器ID 14[root@izuf6akcgealirj602cmxsz ~]# docker ps -aq 15e901f5c1bb19 16

退出容器

1# 容器直接停止并退出 2[root@d130c281ffda /]# exit 3exit 4 5# 容器不停止退出 6ctrl + P + Q 7

删除容器

1# docker rm 容器ID # 删除指定容器,不能删除正在运行的容器 2# docker rm $(docker ps -aq) # 删除所有容器 3# docker ps -a -q|xargs docker rm # 删除所有容器 4 5# 命令参数含义 6-f # 强制删除 7

启动和停止容器

1# 启动容器 2docker start 容器ID 3# 重启容器 4docker restart 容器ID 5# 停止容器 6docker stop 容器ID 7# 杀掉容器 8docker kill 容器ID 9

常用其他命令

1# docker run -d 镜像名 2[root@izuf6akcgealirj602cmxsz ~]# docker run -d centos 3fc830aac6336e17519f9accdeed4044ca8e6dfd4e154e330ccb20b1d1f942446 4[root@izuf6akcgealirj602cmxsz ~]# docker ps 5CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6 7# 问题发现centos容器停止服务了 8# docker 容器后台运行,就必须要有一个前台进程,如果docker发现没有前台进程(发现自己没有提供服务),就会自动停止 9

查看日志

1# docker logs 查看日志 2 3# 命令参数含义 4-t # 显示时间 5-f # 跟随后面输出 6--tail number # 显示日志条数 7 8# 自己编写脚本,给容器产生日志 9[root@izuf6akcgealirj602cmxsz ~]# docker run -d centos /bin/bash -c "while true;do echo hello;sleep 1;done" 101d8871af69b8e9af5ee87408bb44174d200d495b34446e1cddd74386219c389e 11 12[root@izuf6akcgealirj602cmxsz ~]# docker ps 13CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 141d8871af69b8 centos "/bin/bash -c 'while…" 4 seconds ago Up 2 seconds vigilant_stonebraker 15 16# 显示指定行数的日志 17[root@izuf6akcgealirj602cmxsz ~]# docker logs -tf --tail 10 1d8871af69b8 182022-01-27T06:23:07.012102433Z hello 192022-01-27T06:23:08.014861362Z hello 202022-01-27T06:23:09.017736082Z hello 212022-01-27T06:23:10.020569062Z hello 222022-01-27T06:23:11.023493607Z hello 232022-01-27T06:23:12.026329502Z hello 242022-01-27T06:23:13.028983898Z hello 252022-01-27T06:23:14.031762196Z hello 262022-01-27T06:23:15.034481038Z hello 272022-01-27T06:23:16.037208524Z hello 282022-01-27T06:23:17.039934137Z hello 29

查看容器中进程信息

1# docker top 容器ID 2[root@izuf6akcgealirj602cmxsz ~]# docker top 1d8871af69b8 3UID PID PPID C STIME TTY TIME CMD 4root 13903 13883 0 14:12 ? 00:00:00 /bin/bash -c while true;do echo hello;sleep 1;done 5root 15303 13903 0 14:34 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1 6

查看容器元数据

1# docker inspect 容器ID # 查看容器元数据 2[root@izuf6akcgealirj602cmxsz ~]# docker ps 3CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 41d8871af69b8 centos "/bin/bash -c 'while…" 27 minutes ago Up 27 minutes vigilant_stonebraker 5 6[root@izuf6akcgealirj602cmxsz ~]# docker inspect 1d8871af69b8 7[ 8 { 9 "Id": "1d8871af69b8e9af5ee87408bb44174d200d495b34446e1cddd74386219c389e", 10 "Created": "2022-01-27T06:12:58.891983751Z", 11 "Path": "/bin/bash", 12 "Args": [ 13 "-c", 14 "while true;do echo hello;sleep 1;done" 15 ], 16 "State": { 17 "Status": "running", 18 "Running": true, 19 "Paused": false, 20 "Restarting": false, 21 "OOMKilled": false, 22 "Dead": false, 23 "Pid": 13903, 24 "ExitCode": 0, 25 "Error": "", 26 "StartedAt": "2022-01-27T06:12:59.250173547Z", 27 "FinishedAt": "0001-01-01T00:00:00Z" 28 }, 29 "Image": "sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6", 30 "ResolvConfPath": "/var/lib/docker/containers/1d8871af69b8e9af5ee87408bb44174d200d495b34446e1cddd74386219c389e/resolv.conf", 31 "HostnamePath": "/var/lib/docker/containers/1d8871af69b8e9af5ee87408bb44174d200d495b34446e1cddd74386219c389e/hostname", 32 "HostsPath": "/var/lib/docker/containers/1d8871af69b8e9af5ee87408bb44174d200d495b34446e1cddd74386219c389e/hosts", 33 "LogPath": "/var/lib/docker/containers/1d8871af69b8e9af5ee87408bb44174d200d495b34446e1cddd74386219c389e/1d8871af69b8e9af5ee87408bb44174d200d495b34446e1cddd74386219c389e-json.log", 34 "Name": "/vigilant_stonebraker", 35 "RestartCount": 0, 36 "Driver": "overlay2", 37 "Platform": "linux", 38 "MountLabel": "", 39 "ProcessLabel": "", 40 "AppArmorProfile": "", 41 "ExecIDs": null, 42 "HostConfig": { 43 "Binds": null, 44 "ContainerIDFile": "", 45 "LogConfig": { 46 "Type": "json-file", 47 "Config": {} 48 }, 49 "NetworkMode": "default", 50 "PortBindings": {}, 51 "RestartPolicy": { 52 "Name": "no", 53 "MaximumRetryCount": 0 54 }, 55 "AutoRemove": false, 56 "VolumeDriver": "", 57 "VolumesFrom": null, 58 "CapAdd": null, 59 "CapDrop": null, 60 "CgroupnsMode": "host", 61 "Dns": [], 62 "DnsOptions": [], 63 "DnsSearch": [], 64 "ExtraHosts": null, 65 "GroupAdd": null, 66 "IpcMode": "private", 67 "Cgroup": "", 68 "Links": null, 69 "OomScoreAdj": 0, 70 "PidMode": "", 71 "Privileged": false, 72 "PublishAllPorts": false, 73 "ReadonlyRootfs": false, 74 "SecurityOpt": null, 75 "UTSMode": "", 76 "UsernsMode": "", 77 "ShmSize": 67108864, 78 "Runtime": "runc", 79 "ConsoleSize": [ 80 0, 81 0 82 ], 83 "Isolation": "", 84 "CpuShares": 0, 85 "Memory": 0, 86 "NanoCpus": 0, 87 "CgroupParent": "", 88 "BlkioWeight": 0, 89 "BlkioWeightDevice": [], 90 "BlkioDeviceReadBps": null, 91 "BlkioDeviceWriteBps": null, 92 "BlkioDeviceReadIOps": null, 93 "BlkioDeviceWriteIOps": null, 94 "CpuPeriod": 0, 95 "CpuQuota": 0, 96 "CpuRealtimePeriod": 0, 97 "CpuRealtimeRuntime": 0, 98 "CpusetCpus": "", 99 "CpusetMems": "", 100 "Devices": [], 101 "DeviceCgroupRules": null, 102 "DeviceRequests": null, 103 "KernelMemory": 0, 104 "KernelMemoryTCP": 0, 105 "MemoryReservation": 0, 106 "MemorySwap": 0, 107 "MemorySwappiness": null, 108 "OomKillDisable": false, 109 "PidsLimit": null, 110 "Ulimits": null, 111 "CpuCount": 0, 112 "CpuPercent": 0, 113 "IOMaximumIOps": 0, 114 "IOMaximumBandwidth": 0, 115 "MaskedPaths": [ 116 "/proc/asound", 117 "/proc/acpi", 118 "/proc/kcore", 119 "/proc/keys", 120 "/proc/latency_stats", 121 "/proc/timer_list", 122 "/proc/timer_stats", 123 "/proc/sched_debug", 124 "/proc/scsi", 125 "/sys/firmware" 126 ], 127 "ReadonlyPaths": [ 128 "/proc/bus", 129 "/proc/fs", 130 "/proc/irq", 131 "/proc/sys", 132 "/proc/sysrq-trigger" 133 ] 134 }, 135 "GraphDriver": { 136 "Data": { 137 "LowerDir": "/var/lib/docker/overlay2/98a89cd325a33f0ac20d86bf88c5cd059727a6761e0928a37287a012d82d9f5d-init/diff:/var/lib/docker/overlay2/a8011aebf9123d59bd43b8761692d590193d497f27a463f6d7bf04c2254f2fb5/diff", 138 "MergedDir": "/var/lib/docker/overlay2/98a89cd325a33f0ac20d86bf88c5cd059727a6761e0928a37287a012d82d9f5d/merged", 139 "UpperDir": "/var/lib/docker/overlay2/98a89cd325a33f0ac20d86bf88c5cd059727a6761e0928a37287a012d82d9f5d/diff", 140 "WorkDir": "/var/lib/docker/overlay2/98a89cd325a33f0ac20d86bf88c5cd059727a6761e0928a37287a012d82d9f5d/work" 141 }, 142 "Name": "overlay2" 143 }, 144 "Mounts": [], 145 "Config": { 146 "Hostname": "1d8871af69b8", 147 "Domainname": "", 148 "User": "", 149 "AttachStdin": false, 150 "AttachStdout": false, 151 "AttachStderr": false, 152 "Tty": false, 153 "OpenStdin": false, 154 "StdinOnce": false, 155 "Env": [ 156 "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" 157 ], 158 "Cmd": [ 159 "/bin/bash", 160 "-c", 161 "while true;do echo hello;sleep 1;done" 162 ], 163 "Image": "centos", 164 "Volumes": null, 165 "WorkingDir": "", 166 "Entrypoint": null, 167 "OnBuild": null, 168 "Labels": { 169 "org.label-schema.build-date": "20210915", 170 "org.label-schema.license": "GPLv2", 171 "org.label-schema.name": "CentOS Base Image", 172 "org.label-schema.schema-version": "1.0", 173 "org.label-schema.vendor": "CentOS" 174 } 175 }, 176 "NetworkSettings": { 177 "Bridge": "", 178 "SandboxID": "07e93fa1f40aa7b96e93b66f53d82c1d576d2f1629db2fc4486dfbe1bf118b50", 179 "HairpinMode": false, 180 "LinkLocalIPv6Address": "", 181 "LinkLocalIPv6PrefixLen": 0, 182 "Ports": {}, 183 "SandboxKey": "/var/run/docker/netns/07e93fa1f40a", 184 "SecondaryIPAddresses": null, 185 "SecondaryIPv6Addresses": null, 186 "EndpointID": "d2a03795f3efa0e17da4f5453b903dd871c4dcc94f42da1fb145d6025780157e", 187 "Gateway": "172.17.0.1", 188 "GlobalIPv6Address": "", 189 "GlobalIPv6PrefixLen": 0, 190 "IPAddress": "172.17.0.2", 191 "IPPrefixLen": 16, 192 "IPv6Gateway": "", 193 "MacAddress": "02:42:ac:11:00:02", 194 "Networks": { 195 "bridge": { 196 "IPAMConfig": null, 197 "Links": null, 198 "Aliases": null, 199 "NetworkID": "f5a7484f80718a2fda725bc9a8fb430c930fadc92302bdfe6cd1aca5b5ecb04b", 200 "EndpointID": "d2a03795f3efa0e17da4f5453b903dd871c4dcc94f42da1fb145d6025780157e", 201 "Gateway": "172.17.0.1", 202 "IPAddress": "172.17.0.2", 203 "IPPrefixLen": 16, 204 "IPv6Gateway": "", 205 "GlobalIPv6Address": "", 206 "GlobalIPv6PrefixLen": 0, 207 "MacAddress": "02:42:ac:11:00:02", 208 "DriverOpts": null 209 } 210 } 211 } 212 } 213] 214

进入当前正在运行的容器

1# 容器通常都是在后台运行,需要进入容器,来修改容器信息 2 3# 方式1 4# docker exec -it 容器ID bashshell 5[root@izuf6akcgealirj602cmxsz ~]# docker exec -it 1d8871af69b8 /bin/bash 6[root@1d8871af69b8 /]# ls 7bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv 8sys tmp usr var 9 10# 方式二 11# docker attach 容器ID 12[root@izuf6akcgealirj602cmxsz ~]# docker attach 1d8871af69b8 13hello 14hello 15hello 16hello 17hello 18 19# docker exec # 进入容器后开启一个新的终端 20# docker attach # 进入容器正在执行的终端,不会开启新的进程 21

从容器内拷贝文件到宿主机上

1# docker cp 容器ID:容器内路径 宿主机路径 2# 查看当前运行的容器 3[root@izuf6akcgealirj602cmxsz ~]# docker ps 4CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 55de99785ed6d centos "/bin/bash" 53 seconds ago Up 52 seconds blissful_antonelli 6 7# 进入docker容器内部 8[root@izuf6akcgealirj602cmxsz ~]# docker attach 5de99785ed6d 9[root@5de99785ed6d /]# ll 10bash: ll: command not found 11[root@5de99785ed6d /]# ls 12bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var 13 14# 容器内部创建文件 15[root@5de99785ed6d /]# touch test.java 16 17# 退出容器 18[root@5de99785ed6d /]# read escape sequence 19 20# 拷贝容器内部文件到宿主机 21[root@izuf6akcgealirj602cmxsz ~]# docker cp 5de99785ed6d:/test.java /root 22[root@izuf6akcgealirj602cmxsz ~]# ll 23total 0 24-rw-r--r-- 1 root root 0 Jan 27 15:33 test.java 25[root@izuf6akcgealirj602cmxsz ~]# pwd 26/root 27[root@izuf6akcgealirj602cmxsz ~]# 28

命令小结

img

1attach Attach to a running container #当前she11下attach 连接指定运行镜像 2build Build an image from a Dockerfile #通过Dockerfile定制镜像 3commit Create a new image from a container changes #提交当前容器为新的镜像 4cp Copy files/folders from the containers filesystem to the host path #从容器中拷贝指定文件或者目录到宿主机中 5create Create a new container #创建一个新的容器,同run,但不启动容器 6diff Inspect changes on a container's filesystem #查看docker 容器变化 7events Get rea1 time events from the server #从docker 服务获取容器实时事件 8exec Run a command in an existing container #在已存在的容器上运行命令 9export Stream the contents of a container as a tar archive #导出容器的内容流作为一个tar 归档文件[对应import ] 10history show the history of an image #展示一个镜像形成历史 11images List images #列出系统当前镜像 12import Create a new filesystem image from the contents of a tarba1l #从tar包 中的内容创建-一个新的文件系统映像[对应export] 13info Display system-wide informati on #显示系统相关信息 14inspect Return 1ow-1evel information on a container #查看容器详细信息 15kill Ki11 a running container # kill指定docker容器 16load Load an image from a tar archive #从一个tar包中加载一个镜像[对应save] 17login Register or Login to the docker registry server #注册或者登陆一个docker源服务器 18logout Log out from a Docker registry server #从当前Docker registry 退出 19logs Fetch the 1ogs of a container #输出当前容器日志信息 20port Lookup the public-facing port which is NAT-ed to PRIVATE_ PORT #查看映射端口对应的容器内部源端口 21pause Pause a11 processes within a container #暂停容器 22ps List containers #列出容器列表 23pull Pull an image or a repository from the docker registry server # 从docker镜像源服务器拉取指定镜像或者库镜像 24push Push an image or a repository to the docker registry server #推送指定镜像或者库镜像至docker源服务器 25restart Restart a running container #重启运行的容器 26rm Remove one or more containers #移除一个或者多个容器 27rmi Remove one or more i mages #移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容才可继续或-f强制删除] 28run Run a command in a new container #创建一个新的容器并运行一个命令 29save Save an image to a tar archive #保存一个镜像为一个tar包[对应1oad] 30search Search for an image on the Docker Hub #在docker hub中搜索镜像 31start Start a stopped containers #启动容器 32stop Stop a running containers #停止容器 33tag Tag an image into a repository #给源中镜像打标签 34top Lookup the running processes of a container #查看容器中运行的进程信息 35unpause Unpause a paused container #取消暂停容器 36version Show the docker vers ion informati on #查看docker版本号 37wait Block uyntil a container stops,then print its exit code #截取容器停止时的退出状态值 38