docker如何精通(下)

具名挂载vs匿名挂载

sudo docker run -d -it -P -v /etc/nginx nginx
-P 大写p是随机端口映射
-v /etc/nginx(容器内的地址) 匿名挂载

sudo docker volume ls 查看所有卷的情况
DRIVER VOLUME NAME
local 4adc377134443e553034893649b3190667965d3b2a228d4ff203d76e8d60eda7
匿名挂载: -v后面只写了容器内的地址而没有写宿主机的地址

使用具名挂载方式:
sudo docker run -d -it -P -v juming:/etc/nginx nginx

-v 具体的名字:/etc/nginx(容器内的地址)

再查看所有卷的情况 sudo docker volume ls
DRIVER VOLUME NAME
local 4adc377134443e553034893649b3190667965d3b2a228d4ff203d76e8d60eda7
local juming

查看具名挂载具体挂载的地方
sudo docker volume inspect juming
在这里插入图片描述

所有docker容器内的卷,没有指定目录的情况下都是在 上图的Mountpoint里

zhou@zhou-virtual-machine:/var/snap/docker/common/var-lib-docker$ sudo ls volumes
4adc377134443e553034893649b3190667965d3b2a228d4ff203d76e8d60eda7
juming
metadata.db

指定路径挂载 -v 宿主机路径:容器内地址(常用)

ro: readonly
rw: readwrite

例子 -v 宿主机路径:容器内路径:ro
此时只能使用宿主机来操作,容器内路径只是可读的

DockerFile

指令大写,命令小写

FROM centos
VOLUME ["volume01","volume02"]
CMD echo "=======finish=========="
CMD /bin/bash

sudo docker build -f dockerfile1 -t zhoudage/centos:1.0 .
-f dockerfile1(从哪个写好命令的文件中构建)
-t zhoudage/centos(目标的名字:版本号)
.(在当前目录下构建)

Sending build context to Docker daemon 2.048kB
Step 1/4 : FROM centos
—> 300e315adb2f
Step 2/4 : VOLUME [“volume01”,“volume02”]
—> Running in e5728377afbc
Removing intermediate container e5728377afbc
—> 2245b633b7f6
Step 3/4 : CMD echo “=finish====”
—> Running in 44819d66f93b
Removing intermediate container 44819d66f93b
—> e345b4acb282
Step 4/4 : CMD /bin/bash
—> Running in 55d7aa563d5c
Removing intermediate container 55d7aa563d5c
—> 4750777ed45f
Successfully built 4750777ed45f
在这里插入图片描述
进入新做好的镜像之后发现多了两个目录文件
在这里插入图片描述

这是一个匿名挂载,和外部文件有一个同步

使用sudo docker inspect 容器id 会发现
“Mounts”: [
{
“Type”: “volume”,
“Name”: “fc206410bcfcb8eca0e146c6095525c33d4355de3e80a502c2534cf2713e5101”,
“Source”: “/var/snap/docker/common/var-lib-docker/volumes/fc206410bcfcb8eca0e146c6095525c33d4355de3e80a502c2534cf2713e5101/_data”,
“Destination”: “volume01”,
“Driver”: “local”,
“Mode”: “”,
“RW”: true,
“Propagation”: “”
},

容器内外新建的文件 zhou.txt可以同步
在这里插入图片描述

新开一个子容器继承父容器
zhou@zhou-virtual-machine:~/Documents/docker-test-volume$ sudo docker run -it --name centos02 --volumes-from centoszhu zhoudage/centos:1.0
[root@fdab8d47e63e /]# ls
bin home lost+found opt run sys var
dev lib media proc sbin tmp volume01
etc lib64 mnt root srv usr volume02

–volumes-from centoszhu(父容器名字) zhoudage/centos:1.0(父容器镜像名字)

在这里插入图片描述

在这里插入图片描述
直到相关联的容器都删完了数据才清空

dockerfile指令

FROM 基础镜像,一切从这里开始构建
MAINTATNER 谁写的
RUN 镜像构建的时候需要运行的命令

ADD 比如创建tomcat镜像 要将tomcat压缩包添加进去 (底层有from centos镜像)
WORKDIR 镜像的工作目录
VOLUME 挂载的目录

EXPOSE 暴露端口位置
CMD 指定这个容器启动的时候要运行的命令 只有最后一个会生效,可被替代
ENTRYPOINT 指定这个容器启动的时候要运行的命令 可以追加命令

ONBUILD 当构建一个被继承的dockerfile的时候,触发
COPY 类似add,将文件拷贝进去
ENV 构建的时候设置环境变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值