实验环境
ip | 服务 | 备注 |
---|---|---|
192.168.1.11 | DockerA | |
192.168.1.12 | DockerB | |
192.168.1.13 | NFS&Docker Registry |
实验目的
DockerA主机内创建apache集群三台容器,热数据htdocs目录持久化到本地。(要求页面显示结果为chaiyanjiang.com)
迁移DockerA主机中的apache集群到DockerB中,需要连同htdocs目录内的数据一并迁移(把DockerA主机内的所有数据打包到镜像层中,并上传到Registry中,在DockerB下载该镜像后直接做成集群)
DockerA主机新建三台集群容器,数据来自NFS服务器,内容为“2020ComeOnWH”
实验如图所示:
实验目的:
将nginx的端口映射到宿主机,通过宿主机来访问到nginx,然后nginx的php设置将会寻找php容器所在,最终显示页面
由Docker公司维护的Registry,用户也可以将自己的镜像保存到DockerHub上中免费的response中,因为在国内访问由很多的限制
登录方法
docker login -u 用户名 密码 https://
登录后下载方法
docker pull 用户名/images名:tag
要求:dockerfile做nginx源码镜像。并且启动后容器后可以直接启动。
首先拖入nginx的tar包到物理机路径,与Dockerfile文件放在同一目录
编写Dockerfile
[root@localhost ~]# vim Dockerfile
FROM centos # 调用docker中已下载的centos镜像
MAINTAINER FeiYi # 作者名为FeiYi
# 安装环境所需包
RUN yum -y install net-tools iproute pcre-devel openssl-devel gcc gcc-c++ make zlib-devel elinks
ADD nginx-1.11.1.tar.gz /usr/src # 解压本地host中的nginx包到容器中的/usr/src目录
ENV NGINX_DIR /usr/src/nginx-1.11.1 # 定义环境变量
WORKDIR $NGINX_DIR # 进入容器中的解压目录
# 编译安装
RUN ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install
# 回到根目录
WORKDIR /
# 创建程序用户
RUN useradd nginx
# 优化命令环境
RUN ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
# 监听端口80
EXPOSE 80
# 后台启动nginx服务
CMD ["nginx", "-g", "daemon off;"]
使用Dockerfile构建镜像
前面使用过docker commit
去构建镜像
Docker并不建议用户通过这种方式构建镜像。原因如下:
既然 docker commit 不是推荐的方法,我们干嘛还要花时间学习呢?
原因是:即便是用 Dockerfile(推荐方法)构建镜像,底层也 docker commit 一层一层构建新镜像的。学习 docker commit 能够帮助我们更加深入地理解构建过程和镜像的分层结构。