一、端口映射
最常用的绑定所有网卡
docker container run -itd -p 8080:80 nginx:1.18
绑定指定的网卡及端口
docker container run -d -p 127.0.0.1:8080:80 nginx:1.18
curl -i 127.0.0.1:8080 #访问测试,curl -i 访问不输出信息
绑定指定的网卡及随机端口
docker container run -d -p 127.0.0.1::80 nginx:1.18
curl -i 127.0.0.1:19153 #访问测试,curl -i 访问不输出信息,19153为随机产生的端口
暴露多个端口
docke container run -dp 192.168.4.7:2020:2020 -p 192.168.4.10:3030:3030 nginx:1.18
自动端口随机映射
docker run -d -P nginx:1.20
二、存储卷映射——两种保证容器数据不丢失的方法(相当于绑定挂载点)
存储卷:将宿主机的某个目录和容器内的某个目录绑定在一起。(删除容器,存储卷数据一直在)
2.1 真机目录映射容器目录(支持权限设置,比如 ro 只读)
docker container run -itd -v 宿主机目录:容器目录:ro 镜像 #删除容器后,宿主机目录文件一直存在
docker volume --help #存储卷 , --hep 选项中 pause 删除多余的存储卷
docker volume create --help #创建存储卷,选项可选
docker container volume ls #查看存储卷
2.2 存储卷映射容器目录
docker container run -itd -v 存储卷名:容器目录 镜像 #存储卷和容器目录一起存在文件,
存储卷名不能以 / 开头,/ 开头的是宿主机目录。
docker container run -itd -v 容器目录 镜像 #自动创建随机存储卷
docker container volume inspect 存储卷名 #查看存储卷信息,可以看到存储卷位置及其他信息。
2.3 容器内映射容器目录
docker container -itd --volume-from 容器名 镜像名 #挂载映射容器内的存储卷
2.4 添加磁盘不重启就可以识别
for i in 'seq 0 2'
do
echo "---" > /sys/class/scsi_host/host$i/scan
done
注意:使用 lsblk 查看磁盘
三、重启策略
no:重启 docker 服务时,该容器不会随之启动,这是默认策略。
docker container run -itd --restart no alpine:latest
systemctl restart docker
always:重启 docker 服务时,该容器会随之启动。
docker container run -itd --restart always alpine:latest
unless-stopped:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
docker container run -itd --restart unless-stopped alpine:latest
on-failture [:max-retries]:非正常退出状态会重启服务。可以指定异常退出重启的次数。
docker container run -itd --restart on-failture:2 alpine:latest