本文最后更新于 2024-06-04,文章内容可能已经过时。

停止所有容器

docker stop $(docker ps -a -q)

Plain Text

Docker run -v 的 rw 和 ro 模式

rw、ro 和 不指定 的 区别

不指定(默认)权限同rw

ro

文件:容器内不能修改,会提示read-only

文件夹:容器内不能修改、新增、删除文件夹中的文件,会提示read-only

rw

文件:不管是宿主机还是容器内修改,都会相互同步;但容器内不允许删除,会提示Device or resource busy;宿主机删除文件,容器内的不会被同步

文件夹:不管是宿主机还是容器内修改、新增、删除文件,都会相互同步

attach 连接到正在运行中的容器。

要attach上去的容器必须正在运行,可以同时连接上同一个container来共享屏幕(与screen命令的attach类似)。

官方文档中说attach后可以通过CTRL-C来detach,但实际上经过我的测试,如果container当前在运行bash,CTRL-C自然是当前行的输入,没有退出;如果container当前正在前台运行进程,如输出nginx的access.log日志,CTRL-C不仅会导致退出容器,而且还stop了。这不是我们想要的,detach的意思按理应该是脱离容器终端,但容器依然运行。好在attach是可以带上--sig-proxy=false来确保CTRL-D或CTRL-C不会关闭容器。

docker exec 相当于进入容器并开启一个新的终端,可以在里面操作。

如果使用exit退出,容器也不会停止。

docker系列-端口映射

  • -P:随机映射一个物理机的 49000~49900 之间的端口到内部容器开放的网络端口。

  • -p:指定想要映射的物理机端口,并且,在一个指定端口上只可以绑定一个容器。

映射本地指定 IP 的任意端口到容器的一个端口,本地主机会自动分配一个端口···

docker run -it -p 192.168.10.10::80  busybox

Plain Text

映射本机的所有的地址的指定端口到容器的指定端口

docker run -it -p 8000:80  busybox

Plain Text

绑定多个端口

docker run -it -p 8848:8848 -p 8888:8888 -p 9999:9999 -p 9998:9998 --name openall openjdk:14 /bin/bash

Plain Text

查看容器所有映射端口

docker port 容器名容器IP再加容器端口号 查看容器内某个端口号映射到哪

Plain Text