Docker进阶【数据卷、DockerFile】
容器数据卷
数据卷是一个可供一个或多个容器使用的特殊目录,它绕过UFS,可以提供很多有用的特性: - 数据卷可以在容器之间共享和重用 - 对数据卷的修改会立马生效 - 对数据卷的更新,不会影响镜像 - 数据卷默认会一直存在,即使容器被删除 Docker中提供了两种挂载方式,-v和-mount
tomcat 案例
docker run -di --name=mytomcat8 -v /home/test:/usr/local/tomcat/webapps --privileged=true -p 5000:8080 tomcat:8
查看容器元数据
docker inspect 7b34c306547a
# 挂载信息
"Mounts": [
{
"Type": "bind",
"Source": "/home/test",
"Destination": "/usr/local/tomcat/webapps",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
访问5000端口发现页面404,进入容器拷贝文件
docker exec -it 容器ID /bin/bash
cp -r webapps.dist/* webapps/
退出容器将会在宿主机只能查看挂载目录,已经发现容器内部操作的文件在这里是可以看见的,访问端口也正常查看
test# ls
docs examples host-manager manager ROOT
在宿主机操作文件,容器内同步
tomcat 案例
docker run -di --name=mysql01 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/vat/lib/mysql -p 5001:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
如何确定是具名挂载还是匿名挂载,还是指定路径挂戟!
匿名挂载
-v容器内路径
具名挂载
-v 卷名:容器内路径
指定路径挂载
-v /宿主机路径::容器内路径
初识DockerFile
简单例子
dockerfile01
FROM centos
VOLUME ['volume01','volume02']
CMD echo "----end--"
CMD /bin/bash
生成镜像
docker build -f 文件路径及名称(当前路径可省略)-t 镜像名称:版本 .
注意: 结尾有一个点
示例
docker build -f dockerfile01 -t vincentvic/centos:1.0 .
Sending build context to Docker daemon 2.048kB
Step 1/4 : FROM centos
latest: Pulling from library/centos
a1d0c7532777: Pull complete
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
---> 5d0da3dc9764
Step 2/4 : VOLUME ["volume01","volume02"]
---> Running in 8532d120ff5d
Removing intermediate container 8532d120ff5d
---> 1a8bd91bef77
Step 3/4 : CMD echo "----end--"
---> Running in<