dockerfile 是用来构建docker镜像文件,
docker build 构建一个镜像
docker pull 拉取一个镜像
docker push 发布镜像(DockerHub,阿里云镜像仓库)
DockerFile构建过程
DockerFile 指令
构建自己的centos
默认的centos 是没有vim 等命令的,我们构建一个拥有vim的centos
vi dockerFile_centos
启动构建容器,并查看vim是否成功
查看镜像历史记录
CMD 和ENTRYPOINT 的区别!
Docker 镜像发布到阿里云容器
小结
理解Docker0
测试:启动一个tomcat 网络信息会发生一个什么变化
总结
1.我们每启动一个docker容器 ,docker就会给docker容器分配一个ip,我们只要安装了docker,就会有一个网卡docker0桥接模式,使用的技术是veth-pair技术
结论:容器与容器之间是相互可以ping通的
容器之间网络通讯流程
小结
–link
容器之间互联怎么在不直接使用ip呢?
–link 可以直接使用容器名称 ping
原理如下
本质还是访问的ip
这样带来一个很大的问题 容器之间是相互隔离的,这默认的情况下容器之间可以互联的,没有隔离,这个安全性不好。而且 –link 是 修改 /etc/hosts 文件来完成的,只要是使用了 –link 就会修改文件,来达到互通的效果。
现在是非常不建议使用了
其次,修改 /etc/hosts 文件有很多弊病。比如,高频繁的容器启停环境时,容易产生竞争冒险,导致 /etc/hosts 文件损坏,出现访问故障;或者有些应用发现是来自于 /etc/hosts 文件后,就假定其为静态文件,而缓存结果不再查询,从而导致容器启停 IP 变更后,使用旧的条目而无法连接到正确的容器等等。
docker0问题:它不支持容器名称连接访问!
应该是有 docker network建立网络。
自定义网络
网络模式分为
- bridge :桥接网络 (默认,自定义也是有桥接)
- host:主机网络 和宿主机共享
- none:不配置网络
- container:容器网络联通(很少使用,局限偶然很大)
在默认创建容器的时候默认使用 bridge网络模式
下面,我们创建两个容器 使用我们自定义网络。这不使用–link后也是可以ping通的。
我们自定义网络docker都以及帮我们维护好了对应的关系,推荐我们平时这样使用网络!
网络连通
创建两个tomcat。一个使用默认的桥接(docker0),另一个使用自定义桥接网络。
我们发现他们两个容器 ip地址都在一个网段中肯定ping不同,那么怎么让这两个容器网络互连呢??
解决方案如下
我们发现 已经将tomcat01 连通到 mynet 自定义网络中。同时tomcat-mynet-02 容器也在这个网络下,这个时候两个容器可以ping通了
最后测试ping两个容器
小结
假设需要跨网络操作别人,就需要使用docker network connect 连通!。。
实战:部署redis集群
安装启动配置redis 3主 3从集群
- 打包
- 编写Dockerfile
4.上传到服务器进行打包并运行