数据卷容器
应用 Dockerfile 创立镜像
docker build -f dockerfile1 -t test/centos:1.0 .
留神最初有一个.(示意生成在当前目录下)
vim dockerfile1
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "---end---"
CMD /bin/bash
查看挂载信息
docker run -it test/centos:1.0 /bin/bash
ls -l
drwxr-xr-x 2 root root 4096 Aug 1 13:42 volume01
drwxr-xr-x 2 root root 4096 Aug 1 13:42 volume02
touch volume01/test1
#查看容器信息
docker inspect 容器 ID
"Mounts": [
{
"Type": "volume",
"Name": "f031e6bb7308ae91279cf1ba149aa04fb657bfdb612df79ad8e1e14d9ddd1b3a",
"Source": "/var/lib/docker/volumes/f031e6bb7308ae91279cf1ba149aa04fb657bfdb612df79ad8e1e14d9ddd1b3a/_data",
"Destination": "volume01",
"Driver": "local",
"Mode": "","RW": true,"Propagation":""
},
{
"Type": "volume",
"Name": "e34e2bae85f36f00364ec5c59a3fa85e92f946010a50099d97a92bd41c9d1c96",
"Source": "/var/lib/docker/volumes/e34e2bae85f36f00364ec5c59a3fa85e92f946010a50099d97a92bd41c9d1c96/_data",
"Destination": "volume02",
"Driver": "local",
"Mode": "","RW": true,"Propagation":""
}
]
容器间数据共享
–volumes-from 数据卷容器
docker run -itd --name docker01 test/centos:1.0
docker run -itd --name docker02 --volumes-from docker01 test/centos:1.0
docker run -itd --name docker03 --volumes-from docker01 test/centos:1.0
#docker01 就是数据卷容器
#docker01,02,03 共享 volume01,volume02 目录
注:删除 docker01 后,02 和 03 仍能够访问共享文件
多个 Mysql 实现数据共享
docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD= 明码 --name mysql01 mysql:5.7
docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD= 明码 --name mysql02 --volumes-from mysql01 mysql:5.7
论断
容器间配置信息的传递,数据卷容器的生命周期始终继续到没有容器应用为止。
Dockerfile
介绍
用来构建 docker 镜像的文件
1. 编写 dockerfile 文件
2.docker build 构建镜像
3.docker run 运行镜像
4.docker push 公布镜像
构建过程
基础知识:
1. 每个保留关键字(指令)都是大写字母
2. 从上到下执行
3.# 示意正文
4. 每个指令都会创立提交一个新的镜像层
根底指令
FROM #根底镜像
MAINTAINER #镜像维护者:姓名 + 邮箱
RUN #镜像构建时须要运行的命令
ADD #增加内容
WORKDIR #工作目录
VOLUME #挂载目录
EXPOSE #指定裸露端口
CMD #容器启动时运行(仅最初一个失效,可被代替)ENTRYPOINT #容器启动时运行,可追加命令
ONBUILD #构建被继承的 dockerfile 时运行
COPY #将文件拷贝到镜像中
ENV #构建时设置环境变量
构建 centos
1. 编写文件
vim dockerfile-centos
FROM centos
MAINTAINER itxiaoma<xxx@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "--- BUILD END ---"
CMD /bin/bash
2. 执行构建命令
docker build dockerfile-centos -t mycentos:0.1 .
3. 测试运行
docker run -it mycentos:0.1
vim test
ifconfig
docker history 镜像 ID #查看镜像构建过程
CMD 和 ENTRYPOINT 的区别
测试 CMD
vim dockerfile-cmd
FROM centos
CMD ["ls","-a"]
docker build -f dockerfile-cmd -t cmdtest .
docker run cmdtest
docker run entrytest ls -al #不可追加命令
测试 ENTRYPOINT
vim dockerfile-entry
FROM centos
ENTRYPOINT ["ls","-a"]
docker build -f dockerfile-entry -t entrytest .
docker run entrytest
docker run entrytest -l #可追加命令
追加命令是间接拼接在 ENTRYPOINT 命令后的
公布镜像
1. 注册登录 Docker Hub
docker login -u itxiaoma
Login Succeeded
2. 提交镜像
docker tag entrytest itxiaoma/entrytest:1.0
docker push itxiaoma/entrytest:1.0
公布到阿里云镜像
1. 在容器镜像服务创立命名空间,创立本地仓库
2. 依据疏导推送镜像