帮助命令

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

还可以查询在线文档:https://docs.docker.com/reference/

镜像命令

docker images

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

  1. root@kylin:~# docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. hello-world latest bf756fb1ae65 7 months ago 13.3kB
  4. #解释
  5. REPOSITORY 镜像的仓库源
  6. TAG 镜像的标签
  7. IMAGE ID 镜像的ID
  8. CREATED 镜像的创建时间
  9. SIZE 镜像的大小
  10. #可选项
  11. -a, --all #列出所有的镜像
  12. -q, --quiet #只列出镜像的id

docker search 搜索镜像

  1. root@kylin:~# docker search mysql
  2. NAME DESCRIPTION STARS OFFICIAL AUTOMATED
  3. mysql MySQL is a widely used, open-source relation 9806 [OK]
  4. mariadb MariaDB is a community-developed fork of MyS 3581 [OK]
  5. mysql/mysql-server Optimized MySQL Server Docker images. Create 719
  6. # 可选项
  7. --filter=STARS=3000 #搜索出来的镜像就是stars大于3000的

docker pull 下载镜像

  1. #下载镜像 docker pull mysql =等价于= docker pull docker.io/library/mysql:latest
  2. root@kylin:~# docker pull mysql
  3. Using default tag: latest #如果不写 TAG ,默认就是latest
  4. latest: Pulling from library/mysql
  5. bf5952930446: Pull complete #分成下载,docker image的核心,联合文件系统
  6. 8254623a9871: Pull complete
  7. 938e3e06dac4: Pull complete
  8. ea28ebf28884: Pull complete
  9. f3cef38785c2: Pull complete
  10. 894f9792565a: Pull complete
  11. 1d8a57523420: Pull complete
  12. 6c676912929f: Pull complete
  13. ff39fdb566b4: Pull complete
  14. fff872988aba: Pull complete
  15. 4d34e365ae68: Pull complete
  16. 7886ee20621e: Pull complete
  17. Digest: sha256:c358e72e100ab493a0304bda35e6f239db2ec8c9bb836d8a427ac34307d074ed #签名
  18. Status: Downloaded newer image for mysql:latest
  19. docker.io/library/mysql:latest #真实地址
  20. #指定版本下载
  21. root@kylin:~# docker pull mysql:5.7 #指定版本为5.7
  22. 5.7: Pulling from library/mysql
  23. bf5952930446: Already exists
  24. 8254623a9871: Already exists
  25. 938e3e06dac4: Already exists #已经存在的就不用下载了
  26. ea28ebf28884: Already exists
  27. f3cef38785c2: Already exists
  28. 894f9792565a: Already exists
  29. 1d8a57523420: Already exists
  30. 5f09bf1d31c1: Pull complete
  31. 1b6ff254abe7: Pull complete #下载不存在的
  32. 74310a0bf42d: Pull complete
  33. d398726627fd: Pull complete
  34. Digest: sha256:da58f943b94721d46e87d5de208dc07302a8b13e638cd1d24285d222376d6d84
  35. Status: Downloaded newer image for mysql:5.7
  36. docker.io/library/mysql:5.7

docker rmi 删除镜像

  1. docker rmi -f [DockerID | Docker Repository:TAG|...] #删除(多个)指定的镜像
  2. docker rmi -f $(docker images -aq) #删除全部的镜像

容器命令

注意:有了镜像才可以创建容器
先拉取一个镜像

  1. docker pull centos

新建容器并启动

  1. docker run [可选参数] imageName
  2. # 参数说明
  3. --name="Name" 容器名字,例如:Tomcat01 Tomcat02 Tomcat03 (可以通过一个镜像启动多个容器)
  4. -d 后台方式运行
  5. -i 使用交互方式运行,进入容器查看内容
  6. -p 指定容器的端口 -p 8080:8080
  7. -p ip:主机端口:容器端口
  8. -p 主机端口:容器端口
  9. -p 容器端口
  10. 容器端口
  11. -P 随机指定端口
  12. #举例:
  13. #测试:启动并进入容器
  14. root@kylin:~# docker run -it centos /bin/bash
  15. [root@23ac88ddce9c /]# ls #仔细看,主机名称变了.主机名就是容器ID,基础版本,命令不完善
  16. bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
  17. #通过exit退出容器
  18. [root@23ac88ddce9c /]# exit
  19. exit
  20. root@kylin:~#

列出所有的运行中的容器

  1. docker ps
  2. # 不加参数,列出当前运行的容器
  3. -a # 列出 当前正在运行的容器+历史运行过的容器
  4. -n=? #显示最近创建的容器,n是个数,让他显示几个
  5. -q #只显示容器的编号(容器ID)
  6. 举例:
  7. root@kylin:~# docker ps -a
  8. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  9. 23ac88ddce9c centos "/bin/bash" 7 minutes ago Exited (127) 3 minutes ago recursing_brattain
  10. 256394fc88b6 bf756fb1ae65 "/hello" 2 hours ago Exited (0) 2 hours ago boring_ishizaka
  11. 8ee9a5fce36c bf756fb1ae65 "/hello" 4 hours ago Exited (0) 4 hours ago focused_wilbur
  12. f8e654c7ec9a bf756fb1ae65 "/hello" 4 hours ago Exited (0) 4 hours ago boring_chatelet
  13. root@kylin:~#

退出容器

  1. exit #容器直接停止并退出
  2. Ctrl + P + Q #容器不停止退出

删除容器

  1. docker rm 容器ID #删除指定容器,不能删除正在运行的容器,除非使用 -f 参数
  2. docker rm -f $(docker ps -aq) #删除全部容器
  3. docker ps -a -q | xargs docker rm -f #删除全部容器

启动和停止容器的操作

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

常用其他命令

后台启动容器

  • docker run -d 镜像名 ```shell

    命令: docker run -d 镜像名

root@kylin:~# docker run -d centos 682170d085f07ded7d0f2699b2717c1a548f54916e40463f486dc2005afd5d00

问题:运行docker ps时,发现后台启动的centos容器停止了

常见的坑,docker 容器使用后台进程,就必须要有一个前台进程,docker发现没有应用(前台应用)了,就会自动停止

比如说:我们以后台方式启动了一个nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了(nginx被停止了)

  1. <a name="4a15fca2"></a>
  2. ### 查看日志命令
  3. - docker logs [-f | --tail n] -t 容器id
  4. ```shell
  5. docker logs [-f | --tail n] -t 容器id
  6. #自己编写一段shell脚本
  7. root@kylin:~# docker run -d centos /bin/sh -c "while true;do echo hello_kylin;sleep 1 ;done"
  8. root@kylin:~# docker ps
  9. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  10. 184a25f33373 centos "/bin/sh -c 'while t…" 1 second ago Up 1 second peaceful_wing
  11. #显示日志
  12. -f # 来一条输出一条
  13. -t # 时间戳
  14. --tail number # 要显示的日志条数
  15. root@kylin:~# docker logs --tail 10 -t 184a25f33373

查看容器中的进程信息

  • docker top 容器id ```shell

    命令: docker top 容器id

root@kylin:~# docker top 184a25f33373 UID PID PPID C STIME TTY TIME CMD root 26837 26802 0 15:37 ? 00:00:00 /bin/sh -c while true;do echo hello_kylin;sleep 1 ;done root 26967 26837 0 15:37 ? 00:00:00 /usr/bin/coreutils —coreutils-prog-shebang=sleep /usr/bin/sleep 1 root@kylin:~#

  1. <a name="70b1e21e"></a>
  2. ### 查看镜像的元数据
  3. - docker inspect 容器id
  4. ```shell
  5. #命令: docker inspect 容器id
  6. root@kylin:~# docker inspect efcdb5da3d6e
  7. [
  8. {
  9. "Id": "efcdb5da3d6e176392b53b8da6ef1633e5d13b5beb529ee835db6f98e1587640",
  10. "Created": "2020-08-07T07:37:10.150712929Z",
  11. "Path": "/bin/sh",
  12. "Args": [
  13. "-c",
  14. "while true;do echo hello_kylin;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": 26837,
  24. "ExitCode": 0,
  25. "Error": "",
  26. "StartedAt": "2020-08-07T07:37:10.552751362Z",
  27. "FinishedAt": "0001-01-01T00:00:00Z"
  28. },
  29. "Image": "sha256:831691599b88ad6cc2a4abbd0e89661a121aff14cfa289ad840fd3946f274f1f",
  30. "ResolvConfPath": "/var/lib/docker/containers/efcdb5da3d6e176392b53b8da6ef1633e5d13b5beb529ee835db6f98e1587640/resolv.conf",
  31. "HostnamePath": "/var/lib/docker/containers/efcdb5da3d6e176392b53b8da6ef1633e5d13b5beb529ee835db6f98e1587640/hostname",
  32. "HostsPath": "/var/lib/docker/containers/efcdb5da3d6e176392b53b8da6ef1633e5d13b5beb529ee835db6f98e1587640/hosts",
  33. "LogPath": "/var/lib/docker/containers/efcdb5da3d6e176392b53b8da6ef1633e5d13b5beb529ee835db6f98e1587640/efcdb5da3d6e176392b53b8da6ef1633e5d13b5beb529ee835db6f98e1587640-json.log",
  34. "Name": "/reverent_mclean",
  35. "RestartCount": 0,
  36. "Driver": "overlay2",
  37. "Platform": "linux",
  38. "MountLabel": "",
  39. "ProcessLabel": "",
  40. "AppArmorProfile": "docker-default",
  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. "Capabilities": null,
  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/f09da2d1405d4a179b08d07f411de6718ec4f18af5e74ffbe38f589833014abc-init/diff:/var/lib/docker/overlay2/bcbf6ee4f639ce394d8eac3304e8eaa22e0ccab8c7c237c1209f966a02020fbc/diff",
  138. "MergedDir": "/var/lib/docker/overlay2/f09da2d1405d4a179b08d07f411de6718ec4f18af5e74ffbe38f589833014abc/merged",
  139. "UpperDir": "/var/lib/docker/overlay2/f09da2d1405d4a179b08d07f411de6718ec4f18af5e74ffbe38f589833014abc/diff",
  140. "WorkDir": "/var/lib/docker/overlay2/f09da2d1405d4a179b08d07f411de6718ec4f18af5e74ffbe38f589833014abc/work"
  141. },
  142. "Name": "overlay2"
  143. },
  144. "Mounts": [],
  145. "Config": {
  146. "Hostname": "efcdb5da3d6e",
  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/sh",
  160. "-c",
  161. "while true;do echo hello_kylin;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": "20200611",
  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": "5f66d3b8f7b753093ab05841bbdc09a5d197a895135882ba2e2108f9e92695c1",
  179. "HairpinMode": false,
  180. "LinkLocalIPv6Address": "",
  181. "LinkLocalIPv6PrefixLen": 0,
  182. "Ports": {},
  183. "SandboxKey": "/var/run/docker/netns/5f66d3b8f7b7",
  184. "SecondaryIPAddresses": null,
  185. "SecondaryIPv6Addresses": null,
  186. "EndpointID": "c5f2d27fe408f1217d415e53500674a1021aae67a198be49525b7a27800382fc",
  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": "ccf4aa14b8dc58dd94d81c99dfaf19ca289c994012e89d5b58be9727932d40e8",
  200. "EndpointID": "c5f2d27fe408f1217d415e53500674a1021aae67a198be49525b7a27800382fc",
  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. ]

进入当前正在运行的容器

  • docker exec -it 容器id BashShell
  • docker attach 容器id ```shell

    我们的容器通常都是使用后台方式运行的,此时我们需要进入容器,比如说修改一些配置

方法一: docker exec -it 容器id BashShell

测试

root@kylin:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES efcdb5da3d6e centos “/bin/sh -c ‘while t…” 7 minutes ago Up 7 minutes reverent_mclean root@kylin:~# docker exec -it efcdb5da3d6e /bin/bash [root@efcdb5da3d6e /]#

方式二: docker attach 容器id

两种方法的区别:

docker exec ## 进入容器后开启一个新的终端,可以在里面操作

docker attach ## 进入容器正在执行的终端,不会启动新的进程

  1. <a name="wM4wa"></a>
  2. ### 从容器内拷贝文件到主机上
  3. - docker cp 容器id:容器内路径 目的主机路径
  4. ```shell
  5. 命令: docker cp 容器id:容器内路径 目的主机路径
  6. #测试:
  7. #在容器内新建文件 aaa.kkk
  8. [root@4be7c5a522b2 home]# ls
  9. [root@4be7c5a522b2 home]# touch aaa.kkk
  10. [root@4be7c5a522b2 home]# lsread escape sequence
  11. #在主机查看,然后将文件拷贝出来后再查看
  12. root@kylin:/home# ls
  13. kylin.a
  14. root@kylin:/home# docker ps
  15. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  16. 4be7c5a522b2 centos "/bin/bash" 3 minutes ago Up 3 minutes stupefied_lehmann
  17. root@kylin:/home# docker cp 4be7c5a522b2:/home/aaa.kkk .
  18. root@kylin:/home# ls
  19. aaa.kkk kylin.a
  20. #拷贝只是一个手动过程,未来我们使用 -v 卷的技术,可以实现自动同步

命令小节

4933701-c9c04d73e0eae5fd.png

  1. attach # 当前shell下attach连接指定运行镜像
  2. build # 通过dockerfile定制镜像
  3. commit # 提交当前容器为新的镜像
  4. cp # 从容器中拷贝指定文件或者目录到宿主机中
  5. create # 创建一个新的容器,同run 但不启动容器
  6. diff # 查看docker 容器变化
  7. events # 从docker 服务获取容器实时事件
  8. exec # 在已存在的容器上运行命令
  9. export # 导出容器的内容作为一个 tar 归档文件[对应import]
  10. history # 展示一个镜像形成历史
  11. images # 列出系统当前镜像
  12. import # 从tar包中的内容创建一个新的文件系统映像[对应export]
  13. info # 显示系统相关信息
  14. inspect # 查看容器详细信息
  15. kill # kill 指定容器
  16. load # 从一个tar 包中加载一个镜像[对应save]
  17. login # 注册或者登陆一个docker源服务器
  18. logout # 从当前docker registry退出
  19. logs # 输出当前容器日志信息
  20. port # 查看映射端口对应的容器内部源端口
  21. pause # 暂停容器
  22. ps # 列出容器列表
  23. pull # 从docker镜像源服务器拉取指定镜像或者库镜像
  24. push # 推送指定镜像或者库镜像至docker源服务器
  25. restart # 重启运行的容器
  26. rm # 移除一个或者多个容器
  27. rmi # 移除一个或多个镜像[无容器使用该镜像才可删除,否则需要删除相关容器才可继续或 -f 强制删除]
  28. run # 创建一个新的容器并运行一个命令
  29. save # 保存一个镜像为一个tar包[对应load]
  30. search # 在docker hub 中搜索镜像
  31. start # 启动容器
  32. stop # 停止容器
  33. tag # 给源中镜像打标签
  34. top # 查看容器中运行的进程信息
  35. unpause # 取消暂停容器
  36. version # 查看docker版本号
  37. wait # 截取容器停止时的退出状态值

作业练习

部署Nginx

  1. 搜索nginx (建议去网站搜索,这样可以看见详细信息)

    1. docker search nginx
  2. 拉取 镜像

    1. docker pull nginx
  3. 启动 容器

  • -p 宿主机端口:容器内端口
    1. docker run -d --name nginx01 -p 3344:80 nginx #3344是主机的端口,80的nginx的端口,这样形成一种映射关系,访问公网的3344就是访问nginx的80
  1. 运行测试

    1. curl localhost:3344
  2. 进入容器

    1. docker exec -it nginx01 /bin/bash

    思考问题:我们每次改动nginx配置文件,都需要进入容器内部,十分麻烦,我要是可以在容器外部提供一个映射路径,达到在容器外部部署项目,容器外部修改文件,容器内部数据就可以自动修改? -v 数据卷技术

部署Tomcat

  1. ###注意tomcat官方的坑,文档的run语句加上了-rm,意思是用完就删除,这个是测试用的,真实环境中不要加-rm
  2. # 下载Tomcat镜像
  3. docker pull tomcat
  4. # 创建并启动Tomcat容器
  5. docker run -d -p 3355:8080 tomcat
  6. #测试访问没问题
  7. http://xx.xx.xx.xx:3355
  8. #进入容器
  9. docker exec -it 333e26b0b96c /bin/bash
  10. #发现问题: 1.Linux命令少了 2.没有webapps
  11. #这是由于阿里云的原因,默认是最小的镜像,所有不必要的都剔除了
  12. #保证最小可运行的环境

部署ES+kibana

  1. # es 暴露的端口很多
  2. # es 十分的耗内存
  3. # es的数据一般需要放置到安全目录 ! 挂载
  4. # --net somenetwork ? 网络配置
  5. #启动 elasticsearch
  6. docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag
  7. #启动了es,服务器就卡了
  8. # docker stats #查看docker CPU的状态
  9. CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
  10. f25d5269e305 elasticsearch02 0.30% 1.246GiB / 3.852GiB 32.34% 976B / 0B 0B / 0B 42
  11. es占用了1.24G!!!!!!
  12. #测试一下es是成功了
  13. root@kylin:/home# curl localhost:9200
  14. {
  15. "name" : "f25d5269e305",
  16. "cluster_name" : "docker-cluster",
  17. "cluster_uuid" : "MzkaGFUJQyKuTX_ZDcv_Pg",
  18. "version" : {
  19. "number" : "7.6.2",
  20. "build_flavor" : "default",
  21. "build_type" : "docker",
  22. "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
  23. "build_date" : "2020-03-26T06:34:37.794943Z",
  24. "build_snapshot" : false,
  25. "lucene_version" : "8.4.0",
  26. "minimum_wire_compatibility_version" : "6.8.0",
  27. "minimum_index_compatibility_version" : "6.0.0-beta1"
  28. },
  29. "tagline" : "You Know, for Search"
  30. }
  31. #赶紧关闭es,然后增加内存限制
  32. docker run -d --name elasticsearch03 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
  33. CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
  34. a56d5f35bf70 elasticsearch03 193.94% 302.8MiB / 3.852GiB 7.68% 766B / 0B 0B / 0B 27
  35. #增加了内存限制之后,明显内存占用少了

作业:将 ES 与 kibana 连接起来 docker网络原理

可视化管理

  • portainer(暂时用这个)
  • Rancher(推荐)

portainer是docker的可视化管理面板,提供一个后台供我们操作.

  1. docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name prtainer-test --privileged=true portainer/portainer