帮助命令

  1. $ docker version # 显示 docker 的版本信息
  2. $ docker info # 显示 docker 的系统信息,包括镜像和容器的数量
  3. $ docker 命令 --help # 帮助命令

镜像命令

https://docs.docker.com/engine/reference/commandline/image/

docker images 查看本地主机上的所有镜像

  1. $ docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. laradock_elasticsearch latest 014af1b8b90f 5 months ago 779MB
  4. phpstorm_helpers PS-201.8538.41 b4ce53d70063 6 months ago 1.38MB
  5. # REPOSITORY 镜像在仓库里的名称
  6. # TAG 镜像的标签
  7. # IMAGE ID 镜像的唯一 id
  8. # CREATED 镜像的创建时间
  9. # SIZE 镜像的大小
  10. # 常用可选项
  11. -a, --all 显示所有镜像
  12. -q, --quiet 只显示镜像的 ID

docker search mysql 搜索指定镜像

https://docs.docker.com/engine/reference/commandline/search/

  1. $ docker search mysql
  2. NAME DESCRIPTION STARS OFFICIAL AUTOMATED
  3. mysql MySQL is a widely used, open-source relation 10656 [OK]
  4. mariadb MariaDB Server is a high performing open sou 3997 [OK]
  5. mysql/mysql-server Optimized MySQL Server Docker images. Create 779 [OK]
  6. docker search --filter=stars=3 mysql #搜索 stars 至少为3 的镜像

docker pull mysql 下载指定镜像

https://docs.docker.com/engine/reference/commandline/pull/

  1. $ docker pull mysql
  2. Using default tag: latest # 如果不写 tag 默认为 latest
  3. latest: Pulling from library/mysql
  4. a076a628af6f: Pull complete # 分层下载 docker image 的核心
  5. f6c208f3f991: Pull complete
  6. 88a9455a9165: Pull complete
  7. 406c9b8427c6: Pull compl
  8. 7c88599c0b25: Pull complete
  9. 25b5c6debdaf: Pull complete
  10. 43a5816f1617: Pull complete
  11. 1a8c919e89bf: Pull complete
  12. 9f3cf4bd1a07: Pull complete
  13. 80539cea118d: Pull complete
  14. 201b3cad54ce: Pull complete
  15. 944ba37e1c06: Pull complete
  16. Digest: sha256:feada149cb8ff54eade1336da7c1d080c4a1c7ed82b5e320efb5beebed85ae8c
  17. Status: Downloaded newer image for mysql:latest
  18. docker.io/library/mysql:latest # 真实地址
  19. # 如下两天命令时等价的
  20. docker pull mysql
  21. docker pull docker.io/library/mysql:latest
  22. $ docker pull mysql:5.7 # 下载指定版本 mysql

docker rmi mysql 删除指定镜像

https://docs.docker.com/engine/reference/commandline/rmi/

  1. $ docker rmi 41de2cc0b30e # 根据镜像 id 删除
  2. $ docker rmi mysql # 根据镜像名称删除
  3. $ docekr rmi $(docker iamges -aq) # 以 docker iamges -aq 命令查询出来的内容作为参数进行删除(全部删除)
  4. #常用选项
  5. -f, --force #强制删除正在运行的容器

容器命令

docker ps 查看当前在运行中的容器

  1. $ docker ps -a # 显示所有容器(运行中、已经停止)
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 3fa000926912 hello-world "/hello" 9 seconds ago Exited (0) 8 seconds ago elated_engelbart
  4. a8be12819301 nginx "/docker-entrypoint.…" 2 hours ago Up 2 hours 80/tcp nervous_cannon
  5. $ docker ps -q # 只显示在运行中的容器的容器 id
  6. a8be12819301
  7. $ docker ps -n=1 # 显示最近创建的几条容器
  8. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  9. 3fa000926912 hello-world "/hello" About a minute ago Exited (0) About a minute ago elated_engelbart

exit 退出容器

  1. $ exit #停止并退出容器
  2. $ ctrl + p + q #退出不停止容器

docker rm 容器id 删除容器id

  1. $ docker rm 3fa000926912 删除容器
  2. 3fa000926912
  3. $ docker rm -f $(docker ps -aq) #删除所有容器
  4. $ docker ps -aq | xargs docker rm # 删除所有容器

启动、停止容器

  1. $ docker start 容器id #启动容器
  2. $ docker restart 容器id #重启容器
  3. $ docker stop 容器id #停止当前正在运行的容器
  4. $ docker kill 容器id #强制停止当前容器

查看容器日志

  1. $ docker logs 容器id
  2. $ docker logs -f 容器id 实时显示

查看容器内的进程

  1. $ docker top 容器id
  2. UID PID PPID C STIME TTY TIME CMD
  3. root 5719 5698 0 09:45 ? 00:00:00 nginx: master process nginx -g daemon off;
  4. 101 5769 5719 0 09:45 ? 00:00:00 nginx: worker process

产看容器源数据

  1. $ docker inspect 容器id
  2. [
  3. {
  4. "Id": "dfe944493963809af5d2f3ddd71c9a09bad4ff8710805d185635119167a57ffe",
  5. "Created": "2021-03-25T09:45:20.053068643Z",
  6. "Path": "/docker-entrypoint.sh",
  7. "Args": [
  8. "nginx",
  9. "-g",
  10. "daemon off;"
  11. ],
  12. "State": {
  13. "Status": "running",
  14. "Running": true,
  15. "Paused": false,
  16. "Restarting": false,
  17. "OOMKilled": false,
  18. "Dead": false,
  19. "Pid": 5719,
  20. "ExitCode": 0,
  21. "Error": "",
  22. "StartedAt": "2021-03-25T09:45:20.274997446Z",
  23. "FinishedAt": "0001-01-01T00:00:00Z"
  24. },
  25. "Image": "sha256:6084105296a952523c36eea261af38885f41e9d1d0001b4916fa426e45377ffe",
  26. "ResolvConfPath": "/mnt/sda1/var/lib/docker/containers/dfe944493963809af5d2f3ddd71c9a09bad4ff8710805d185635119167a57ffe/resolv.conf",
  27. "HostnamePath": "/mnt/sda1/var/lib/docker/containers/dfe944493963809af5d2f3ddd71c9a09bad4ff8710805d185635119167a57ffe/hostname",
  28. "HostsPath": "/mnt/sda1/var/lib/docker/containers/dfe944493963809af5d2f3ddd71c9a09bad4ff8710805d185635119167a57ffe/hosts",
  29. "LogPath": "/mnt/sda1/var/lib/docker/containers/dfe944493963809af5d2f3ddd71c9a09bad4ff8710805d185635119167a57ffe/dfe944493963809af5d2f3ddd71c9a09bad4ff8710805d185635119167a57ffe-json.log",
  30. "Name": "/boring_banach",
  31. "RestartCount": 0,
  32. "Driver": "overlay2",
  33. "Platform": "linux",
  34. "MountLabel": "",
  35. "ProcessLabel": "",
  36. "AppArmorProfile": "",
  37. "ExecIDs": null,
  38. "HostConfig": {
  39. "Binds": null,
  40. "ContainerIDFile": "",
  41. "LogConfig": {
  42. "Type": "json-file",
  43. "Config": {}
  44. },
  45. "NetworkMode": "default",
  46. "PortBindings": {},
  47. "RestartPolicy": {
  48. "Name": "no",
  49. "MaximumRetryCount": 0
  50. },
  51. "AutoRemove": false,
  52. "VolumeDriver": "",
  53. "VolumesFrom": null,
  54. "CapAdd": null,
  55. "CapDrop": null,
  56. "Capabilities": null,
  57. "Dns": [],
  58. "DnsOptions": [],
  59. "DnsSearch": [],
  60. "ExtraHosts": null,
  61. "GroupAdd": null,
  62. "IpcMode": "private",
  63. "Cgroup": "",
  64. "Links": null,
  65. "OomScoreAdj": 0,
  66. "PidMode": "",
  67. "Privileged": false,
  68. "PublishAllPorts": false,
  69. "ReadonlyRootfs": false,
  70. "SecurityOpt": null,
  71. "UTSMode": "",
  72. "UsernsMode": "",
  73. "ShmSize": 67108864,
  74. "Runtime": "runc",
  75. "ConsoleSize": [
  76. 0,
  77. 0
  78. ],
  79. "Isolation": "",
  80. "CpuShares": 0,
  81. "Memory": 0,
  82. "NanoCpus": 0,
  83. "CgroupParent": "",
  84. "BlkioWeight": 0,
  85. "BlkioWeightDevice": [],
  86. "BlkioDeviceReadBps": null,
  87. "BlkioDeviceWriteBps": null,
  88. "BlkioDeviceReadIOps": null,
  89. "BlkioDeviceWriteIOps": null,
  90. "CpuPeriod": 0,
  91. "CpuQuota": 0,
  92. "CpuRealtimePeriod": 0,
  93. "CpuRealtimeRuntime": 0,
  94. "CpusetCpus": "",
  95. "CpusetMems": "",
  96. "Devices": [],
  97. "DeviceCgroupRules": null,
  98. "DeviceRequests": null,
  99. "KernelMemory": 0,
  100. "KernelMemoryTCP": 0,
  101. "MemoryReservation": 0,
  102. "MemorySwap": 0,
  103. "MemorySwappiness": null,
  104. "OomKillDisable": false,
  105. "PidsLimit": null,
  106. "Ulimits": null,
  107. "CpuCount": 0,
  108. "CpuPercent": 0,
  109. "IOMaximumIOps": 0,
  110. "IOMaximumBandwidth": 0,
  111. "MaskedPaths": [
  112. "/proc/asound",
  113. "/proc/acpi",
  114. "/proc/kcore",
  115. "/proc/keys",
  116. "/proc/latency_stats",
  117. "/proc/timer_list",
  118. "/proc/timer_stats",
  119. "/proc/sched_debug",
  120. "/proc/scsi",
  121. "/sys/firmware"
  122. ],
  123. "ReadonlyPaths": [
  124. "/proc/bus",
  125. "/proc/fs",
  126. "/proc/irq",
  127. "/proc/sys",
  128. "/proc/sysrq-trigger"
  129. ]
  130. },
  131. "GraphDriver": {
  132. "Data": {
  133. "LowerDir": "/mnt/sda1/var/lib/docker/overlay2/9f72f3b04c31f6e027d2e524ef03f15457d95eeea57659c3bfb39df65726a633-init/diff:/mnt/sda1/var/lib/docker/overlay2/feb7a2df35deb2f0e7fb488fa7470b0cc19275defc5a220b465902bc791c41c6/diff:/mnt/sda1/var/lib/docker/overlay2/fd8f909756630403424a59d84e04295b62bb906ad10e751a37611487ea2de411/diff:/mnt/sda1/var/lib/docker/overlay2/684efe613eed54b18f2c9d4b294ed1e3a6c44f6ec3c026b750e1917a627c6e21/diff:/mnt/sda1/var/lib/docker/overlay2/2ec69ce86163e9f84af812b7ed1898fbc215046da1126bc2ff4941278eec5fbb/diff:/mnt/sda1/var/lib/docker/overlay2/1a260596ce2d589cffc9620f6c042ce0e406bf923cc14405735bd1ea1f7bfc30/diff:/mnt/sda1/var/lib/docker/overlay2/1c172fe9802e3dc73800b0aaa2bc3cf8271de28c24e1515ff380b21ca8852527/diff",
  134. "MergedDir": "/mnt/sda1/var/lib/docker/overlay2/9f72f3b04c31f6e027d2e524ef03f15457d95eeea57659c3bfb39df65726a633/merged",
  135. "UpperDir": "/mnt/sda1/var/lib/docker/overlay2/9f72f3b04c31f6e027d2e524ef03f15457d95eeea57659c3bfb39df65726a633/diff",
  136. "WorkDir": "/mnt/sda1/var/lib/docker/overlay2/9f72f3b04c31f6e027d2e524ef03f15457d95eeea57659c3bfb39df65726a633/work"
  137. },
  138. "Name": "overlay2"
  139. },
  140. "Mounts": [],
  141. "Config": {
  142. "Hostname": "dfe944493963",
  143. "Domainname": "",
  144. "User": "",
  145. "AttachStdin": false,
  146. "AttachStdout": false,
  147. "AttachStderr": false,
  148. "ExposedPorts": {
  149. "80/tcp": {}
  150. },
  151. "Tty": false,
  152. "OpenStdin": false,
  153. "StdinOnce": false,
  154. "Env": [
  155. "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
  156. "NGINX_VERSION=1.19.8",
  157. "NJS_VERSION=0.5.2",
  158. "PKG_RELEASE=1~buster"
  159. ],
  160. "Cmd": [
  161. "nginx",
  162. "-g",
  163. "daemon off;"
  164. ],
  165. "Image": "nginx",
  166. "Volumes": null,
  167. "WorkingDir": "",
  168. "Entrypoint": [
  169. "/docker-entrypoint.sh"
  170. ],
  171. "OnBuild": null,
  172. "Labels": {
  173. "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
  174. },
  175. "StopSignal": "SIGQUIT"
  176. },
  177. "NetworkSettings": {
  178. "Bridge": "",
  179. "SandboxID": "8b11b5c4140b319436fb9b72e057fa38451e8b7ead9f426a35aba31db90f0100",
  180. "HairpinMode": false,
  181. "LinkLocalIPv6Address": "",
  182. "LinkLocalIPv6PrefixLen": 0,
  183. "Ports": {
  184. "80/tcp": null
  185. },
  186. "SandboxKey": "/var/run/docker/netns/8b11b5c4140b",
  187. "SecondaryIPAddresses": null,
  188. "SecondaryIPv6Addresses": null,
  189. "EndpointID": "cf85258d6966d49cbfb3d459ef73818e03838f51aa714410d5293947c45ecee9",
  190. "Gateway": "172.17.0.1",
  191. "GlobalIPv6Address": "",
  192. "GlobalIPv6PrefixLen": 0,
  193. "IPAddress": "172.17.0.2",
  194. "IPPrefixLen": 16,
  195. "IPv6Gateway": "",
  196. "MacAddress": "02:42:ac:11:00:02",
  197. "Networks": {
  198. "bridge": {
  199. "IPAMConfig": null,
  200. "Links": null,
  201. "Aliases": null,
  202. "NetworkID": "df591bdd5408f34135676a31ffb32733e052a296061797a51442e05529c4ec33",
  203. "EndpointID": "cf85258d6966d49cbfb3d459ef73818e03838f51aa714410d5293947c45ecee9",
  204. "Gateway": "172.17.0.1",
  205. "IPAddress": "172.17.0.2",
  206. "IPPrefixLen": 16,
  207. "IPv6Gateway": "",
  208. "GlobalIPv6Address": "",
  209. "GlobalIPv6PrefixLen": 0,
  210. "MacAddress": "02:42:ac:11:00:02",
  211. "DriverOpts": null
  212. }
  213. }
  214. }
  215. }
  216. ]

进入容器

  1. $ docker exec -it 容器id bash # 进入容器,相当于开启一个新的终端
  2. $ docker attach 容器id # 进入正在运行的容器,相当于打开原来的终端

从容器中复制内容到宿主机

  1. $ docker cp 容器id:容器内文件的绝对路径 主机路径
  2. $ docker cp dfe944493963:/etc/nginx ./ #将容器内容 nginx 目录复制到宿主机的当前目录下