帮助命令

命令 描述
docker version 打印docker的基本信息
docker info 显示docker的详细信息,包括镜像和容器信息
docker —help 帮助命令

帮助文档地址

镜像命令

docker images

查看本机的镜像文件。如果不知道怎么用,可以用 docker images —help 命令。
下面是 docker images 命令输出的属性:

命令 描述
repository 镜像的仓库源
tag 镜像的标签
image id 镜像的ID
created 镜像的创建时间
size 镜像的大小

选项参数

选项 描述
-a, —all 显示所有镜像(如果没有这个参数,默认隐藏临时镜像)
-q, —quiet 仅列出镜像ID

docker search 搜索镜像

搜索mysql

  1. C:\Users\27801>docker search mysql
  2. NAME DESCRIPTION STARS OFFICIAL AUTOMATED
  3. mysql MySQL is a widely used, open-source relation 11079 [OK]
  4. mariadb MariaDB Server is a high performing open sou 4197 [OK]

选项参数

选项 描述
—filter 过滤某些属性

比如说查找 STARS 超过4000的镜像文件,可以用命令 docker search mysql --filter=STARS=4000

docker pull 下载镜像

  1. docker pull 镜像名[:tag]

比如docker pull mysql,下载mysql的镜像文件。如果不写tag,默认下载最新版本的镜像文件。docker pull mysql:5.7,下载5.7版本的mysql。

docker rmi 删除镜像

  1. docker rmi 容器名/容器ID

容器命令

有了镜像才可以创建容器。

docker run 启动

  1. docker run [可选参数] 镜像名

选项参数

选项 描述
—name=”name” 容器名字(别名),tomcat1, tomcat2, 用以区分容器
-d 后台方式运行
-it 交互方式运行,进入容器查看内容
-p 制定容器端口。-p 主机端口:容器端口
-P 随机制定容器端口

docker ps 列出运行中的容器

选项参数

选项 描述
-a 列出当前运行的容器+历史运行的容器
-n=? 显示最近运行的容器
-q 仅列出容器ID

退出容器

exit:退出容器并停止
Ctrl+P+Q:仅退出容器

docker rm 删除容器

  1. docker rm 容器ID

启动和停止容器

把以前停止的容器重新启动

  1. docker start 容器ID

停止容器

  1. docker stop 容器ID

重启容器

  1. docker restart 容器ID

强制停止容器

  1. docker kill 容器ID

常用其他命令

查看日志

  1. docker logs -t -f 容器ID

容器必须运行中,且有日志产生。

查看容器内部进程

  1. docker top 容器ID

容器详细信息

  1. docker inspect 容器ID

查看hello-world容器的信息

  1. C:\Users\27801>docker ps -a
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. ab8499780ba7 hello-world "/hello" About an hour ago Exited (0) About an hour ago tender_agnesi
  4. C:\Users\27801>docker inspect ab8499780ba7
  5. [
  6. {
  7. "Id": "ab8499780ba7cae764b0f5abb73e48caf3a98ad695d3c6494cd6e3d5e3d95640",
  8. "Created": "2021-07-03T01:43:17.0177871Z",
  9. "Path": "/hello",
  10. "Args": [],
  11. "State": {
  12. "Status": "exited",
  13. "Running": false,
  14. "Paused": false,
  15. "Restarting": false,
  16. "OOMKilled": false,
  17. "Dead": false,
  18. "Pid": 0,
  19. "ExitCode": 0,
  20. "Error": "",
  21. "StartedAt": "2021-07-03T01:43:17.3805793Z",
  22. "FinishedAt": "2021-07-03T01:43:17.3802664Z"
  23. },
  24. "Image": "sha256:d1165f2212346b2bab48cb01c1e39ee8ad1be46b87873d9ca7a4e434980a7726",
  25. "ResolvConfPath": "/var/lib/docker/containers/ab8499780ba7cae764b0f5abb73e48caf3a98ad695d3c6494cd6e3d5e3d95640/resolv.conf",
  26. "HostnamePath": "/var/lib/docker/containers/ab8499780ba7cae764b0f5abb73e48caf3a98ad695d3c6494cd6e3d5e3d95640/hostname",
  27. "HostsPath": "/var/lib/docker/containers/ab8499780ba7cae764b0f5abb73e48caf3a98ad695d3c6494cd6e3d5e3d95640/hosts",
  28. "LogPath": "/var/lib/docker/containers/ab8499780ba7cae764b0f5abb73e48caf3a98ad695d3c6494cd6e3d5e3d95640/ab8499780ba7cae764b0f5abb73e48caf3a98ad695d3c6494cd6e3d5e3d95640-json.log",
  29. "Name": "/tender_agnesi",
  30. "RestartCount": 0,
  31. "Driver": "overlay2",
  32. "Platform": "linux",
  33. "MountLabel": "",
  34. "ProcessLabel": "",
  35. "AppArmorProfile": "",
  36. "ExecIDs": null,
  37. "HostConfig": {
  38. "Binds": null,
  39. "ContainerIDFile": "",
  40. "LogConfig": {
  41. "Type": "json-file",
  42. "Config": {}
  43. },
  44. "NetworkMode": "default",
  45. "PortBindings": {},
  46. "RestartPolicy": {
  47. "Name": "no",
  48. "MaximumRetryCount": 0
  49. },
  50. "AutoRemove": false,
  51. "VolumeDriver": "",
  52. "VolumesFrom": null,
  53. "CapAdd": null,
  54. "CapDrop": null,
  55. "CgroupnsMode": "host",
  56. "Dns": [],
  57. "DnsOptions": [],
  58. "DnsSearch": [],
  59. "ExtraHosts": null,
  60. "GroupAdd": null,
  61. "IpcMode": "private",
  62. "Cgroup": "",
  63. "Links": null,
  64. "OomScoreAdj": 0,
  65. "PidMode": "",
  66. "Privileged": false,
  67. "PublishAllPorts": false,
  68. "ReadonlyRootfs": false,
  69. "SecurityOpt": null,
  70. "UTSMode": "",
  71. "UsernsMode": "",
  72. "ShmSize": 67108864,
  73. "Runtime": "runc",
  74. "ConsoleSize": [
  75. 30,
  76. 120
  77. ],
  78. "Isolation": "",
  79. "CpuShares": 0,
  80. "Memory": 0,
  81. "NanoCpus": 0,
  82. "CgroupParent": "",
  83. "BlkioWeight": 0,
  84. "BlkioWeightDevice": [],
  85. "BlkioDeviceReadBps": null,
  86. "BlkioDeviceWriteBps": null,
  87. "BlkioDeviceReadIOps": null,
  88. "BlkioDeviceWriteIOps": null,
  89. "CpuPeriod": 0,
  90. "CpuQuota": 0,
  91. "CpuRealtimePeriod": 0,
  92. "CpuRealtimeRuntime": 0,
  93. "CpusetCpus": "",
  94. "CpusetMems": "",
  95. "Devices": [],
  96. "DeviceCgroupRules": null,
  97. "DeviceRequests": null,
  98. "KernelMemory": 0,
  99. "KernelMemoryTCP": 0,
  100. "MemoryReservation": 0,
  101. "MemorySwap": 0,
  102. "MemorySwappiness": null,
  103. "OomKillDisable": false,
  104. "PidsLimit": null,
  105. "Ulimits": null,
  106. "CpuCount": 0,
  107. "CpuPercent": 0,
  108. "IOMaximumIOps": 0,
  109. "IOMaximumBandwidth": 0,
  110. "MaskedPaths": [
  111. "/proc/asound",
  112. "/proc/acpi",
  113. "/proc/kcore",
  114. "/proc/keys",
  115. "/proc/latency_stats",
  116. "/proc/timer_list",
  117. "/proc/timer_stats",
  118. "/proc/sched_debug",
  119. "/proc/scsi",
  120. "/sys/firmware"
  121. ],
  122. "ReadonlyPaths": [
  123. "/proc/bus",
  124. "/proc/fs",
  125. "/proc/irq",
  126. "/proc/sys",
  127. "/proc/sysrq-trigger"
  128. ]
  129. },
  130. "GraphDriver": {
  131. "Data": {
  132. "LowerDir": "/var/lib/docker/overlay2/a6e0516e33f9e4381907d394265515db0d0d82037bfd434f160c6bfad59b9735-init/diff:/var/lib/docker/overlay2/49f2ef518f5b1cf5a3fdd363eff91d1526ea977f4fe7e377c513e3b7eac96e61/diff",
  133. "MergedDir": "/var/lib/docker/overlay2/a6e0516e33f9e4381907d394265515db0d0d82037bfd434f160c6bfad59b9735/merged",
  134. "UpperDir": "/var/lib/docker/overlay2/a6e0516e33f9e4381907d394265515db0d0d82037bfd434f160c6bfad59b9735/diff",
  135. "WorkDir": "/var/lib/docker/overlay2/a6e0516e33f9e4381907d394265515db0d0d82037bfd434f160c6bfad59b9735/work"
  136. },
  137. "Name": "overlay2"
  138. },
  139. "Mounts": [],
  140. "Config": {
  141. "Hostname": "ab8499780ba7",
  142. "Domainname": "",
  143. "User": "",
  144. "AttachStdin": false,
  145. "AttachStdout": true,
  146. "AttachStderr": true,
  147. "Tty": false,
  148. "OpenStdin": false,
  149. "StdinOnce": false,
  150. "Env": [
  151. "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
  152. ],
  153. "Cmd": [
  154. "/hello"
  155. ],
  156. "Image": "hello-world",
  157. "Volumes": null,
  158. "WorkingDir": "",
  159. "Entrypoint": null,
  160. "OnBuild": null,
  161. "Labels": {}
  162. },
  163. "NetworkSettings": {
  164. "Bridge": "",
  165. "SandboxID": "eb4909ebd0550654c6b4f882a47a9539cae3aca49bdb112d26218e2c87e1b01a",
  166. "HairpinMode": false,
  167. "LinkLocalIPv6Address": "",
  168. "LinkLocalIPv6PrefixLen": 0,
  169. "Ports": {},
  170. "SandboxKey": "/var/run/docker/netns/eb4909ebd055",
  171. "SecondaryIPAddresses": null,
  172. "SecondaryIPv6Addresses": null,
  173. "EndpointID": "",
  174. "Gateway": "",
  175. "GlobalIPv6Address": "",
  176. "GlobalIPv6PrefixLen": 0,
  177. "IPAddress": "",
  178. "IPPrefixLen": 0,
  179. "IPv6Gateway": "",
  180. "MacAddress": "",
  181. "Networks": {
  182. "bridge": {
  183. "IPAMConfig": null,
  184. "Links": null,
  185. "Aliases": null,
  186. "NetworkID": "687509dc5975469e6868d3af2a7946a391bf03da9bc2e1695601f6e06f07d7b5",
  187. "EndpointID": "",
  188. "Gateway": "",
  189. "IPAddress": "",
  190. "IPPrefixLen": 0,
  191. "IPv6Gateway": "",
  192. "GlobalIPv6Address": "",
  193. "GlobalIPv6PrefixLen": 0,
  194. "MacAddress": "",
  195. "DriverOpts": null
  196. }
  197. }
  198. }
  199. }
  200. ]

进入容器

方式一

命令:

  1. docker exec -it 容器ID bashShell

进入容器后,开启一个新的终端。

方式二

命令:

  1. docker attach 容器ID

进入容器后,不会开启新的终端,只进入以前的终端。

拷贝容器文件到宿主机

  1. docker cp 容器ID:容器内的路径 宿主机路径
  1. 进入容器创建一个文件,并退出容器。退出容器后,容器停止运行,但文件依然存在于容器内。

    1. C:\Users\27801>docker attach 7e5f3bdd5fd6
    2. [root@7e5f3bdd5fd6 /]# cd /home/
    3. [root@7e5f3bdd5fd6 home]# touch Dj.java
    4. [root@7e5f3bdd5fd6 home]# ls
    5. Dj.java
    6. [root@7e5f3bdd5fd6 home]# exit;
    7. exit
  2. 拷贝文件到宿主机,宿主机的文件目录必须存在,否则会拷贝失败。

    1. C:\Users\27801>docker cp 7e5f3bdd5fd6:/home/Dj.java D:/temp/

    拷贝是一个手动过程,相当繁琐。后面会通过挂载卷的方式把容器内的文件同步到宿主机内。