Docker的容器数据卷技术
当容器删除时,其数据也会本删除,则可以利用容器数据卷技术将容器中的文件挂载到宿主机上,这样容器内的数据就会同步到宿主机上。
挂载数据
Docker挂载数据有三种挂载方式:匿名挂载、具名挂载、指定路径挂载。
- 匿名挂载:不指定宿主机挂载位置,由Docker自己指定挂载名称(一般随机生成一串哈希值)。
docker run -d -P --name centos01 -v /usr/local centso
#可选型
-d #后台运行
-P #随机端口映射
--name #指定容器名
-v #--volume,挂载目录
- 具名挂载:指定当前挂载的名称。
docker run -d -P --name centos01 -v centos_volume01:/usr/local centos
#可选项
-v #挂载名:容器的挂载目录
- 指定路径挂载:指定宿主机的挂载目录进行挂载。
docker run -d -P --name centos01 -v /usr/local:/sur/local centos
#可选项
-v #宿主机目录:容器的挂载目录
- 使用
docker inspect
指令可以查看挂载情况
docker inspect 容器id
注意:一般在挂载的时候都是具名挂载,并且可以在挂载的时候指定权限(限制容器内的操作)。
# ro,容器内的挂载文件只有读权限
docker run -d -P --name centos01 -v centos_volume01:/usr/local:ro centos
# rw,容器内挂载的文件具有读写权限
docker run -d -P --name centos01 -v centos_volume01:/usr/local:rw centos
Dockerfile
很多镜像都是精简版的,没有一些我们需要的指令,所有就需要自己定制一份适合自己的镜像;在Docker中,可以创建一个Dockerfile文件自定义一个镜像。
在宿主机中创建以一个dockerfile文件后,里面加入指令构建镜像。
- Dockerfile的指令
FROM <IMAGE>:<TAG> #自定义的镜像的基础镜像,开始构建的标志
MAINTAINER <NAME@EMAIL> #镜像的作者,姓名+邮箱
RUN ["executable", "param1", "param2"] #镜像构建的时候需要运行的指令
ADD <src>... <dest> #步骤:添加内容
WORKDIR $PATH <PATH> #镜像的工作目录
VOLUME ["VOLUME1","VOLUME2"] #容器卷挂载位置
EXPOSE 端口号 #指定暴露端口
CMD CMD [ "echo", "$HOME" ] #指定容器启动的时候需要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT ["executable", "param1", "param2"] #指定容器启动的时候运行的命令,可以追加命令
ONBUILD #当构建一个被继承Dockerfile时会运行ONBUILD的指令,触发指令
COPY <src>... <dest> #类似ADD,将自己的文件拷贝到镜像中
ENV <key> <value> #构架镜像的时候配置环境变量
- CMD与ENTRYPOINT的区别
CMD #指定容器启动的时候需要运行的命令,指令不可以被追加
ENTRYPOINT #指定容器启动的时候运行的命令,可以追加命令