携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第22天,点击查看活动详情
初识dockerfile
dockerfile就是用来构建docker镜像的构建文件!命令脚本! 通过这个脚本可以生成镜像,镜像是一层一层的, 脚本的一个个命令,每个命令都是一层
创建一个dockerfile文件,名字可以随机,简易是dockerfile
文件中的内容 指令(大写) 参数
[root@VM-0-12-centos home]# mkdir docker-test-volume
[root@VM-0-12-centos home]# ls
ceshi docker-test-volume mysql www
[root@VM-0-12-centos home]# pwd
/home
[root@VM-0-12-centos home]# cd docker-test-volume
[root@VM-0-12-centos docker-test-volume]# ls
[root@VM-0-12-centos docker-test-volume]# pwd
/home/docker-test-volume
[root@VM-0-12-centos docker-test-volume]# vim dockerfile1
[root@VM-0-12-centos docker-test-volume]# cat dockerfile1
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "----end-----"
CMD /bin/bash
这里的每个命令,就是镜像的一层
docker build -f /home/docker-test-volume/dockerfile1 -t kuangshen/centos:1.0 .
启动自己写的容器
docker run -it f3d872475f2b /bin/bash
发现两个好玩的
这两个目录就是我们生成镜像时自动挂载的目录
这个卷和外部一定有一个同步的目录!
查看一下卷挂载路径
docker inspect +容器id
[root@VM-0-12-centos data]# cd //var/lib/docker/volumes/5211c168e8c5cfa2321fdb48d2ed9a30c6296c56e0edae632846a260e938ad0e/_data
[root@VM-0-12-centos _data]# ls
container.txt
这种方式我们未来使用的十分多 我们通过会构建自己爹镜像
假设构建镜像时候没有挂载卷,要手动镜像挂载 -v 卷名:容器内路径 !
数据卷容器
多个mysql同步数据
测试可以删除docker01,查看一下docker02和docker03是否还可以访问这个文件
测试依旧可以访问
多个mysql实现数据共享
docker run -d -p 3310:3306 -v /etc/mysql/conf-d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-form mysql01 mysql:5.7
这个时候 可以实现两个容器数据同步
结论 容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止 但是一旦你持续化到了本地,这个时候,本地的数据是不会删除的!
DockerFile
dockerfile是用来构建docker镜像的文件 命令参数脚本
构建步骤:
编写一个dockerfile文件
docker build 构建成为一个镜像
docker run 运行镜像
docker push 发布镜像 (dockerhub ,阿里云镜像仓库!)
dockerfile构建过程
每个保留关键字(指令)都必须是大写字母
执行从上到下顺序执行
#表示注释
每一个指令都会创建提交一个新的镜像层,并提交!
dockerfile是面向开发的,我们以后要开发项目,做镜像,就需要编写dockerfile文件,这个文件十分简单
docker镜像逐渐成为企业交付的标准,必须掌握!
步骤:开发,部署,运维 缺一不可
dockerfile:构建文件,定义了一切的步骤,源代码
dockerimages:通过dockerfile构建生成的镜像,最终发布和运行的产品
docker容器:容器就是镜像运行起来提供服务器