一、题目
(1)使用dockerifle制作一个镜像,基于centos:7镜像部署安装nginx服务。
(2)将制作的镜像运行一个容器,使容器运行时自动开启nginx服务。验证服务正常运行。
(3)运行一个私有仓库,将自制镜像上传到私有仓库,且开启另外一台虚拟机同样加入私有仓库,在docker02上下载私有仓库镜像并运行一个容器,验证服务正常运行。
二、部署步骤
(一、)制作镜像
1.创建一个目录用于创建dockerfile文件
mkdir test3
2.上传nginx源码包,如果没有可以进入官网下载
rz
或者
wget http://nginx.org/download/nginx-1.14.2.tar.gz
3.进行编写dockerfile
vim Dockerfile
FROM centos:7 #设置基础镜像。
RUN yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel #解决nginx依赖环境,安装依赖包。
ADD nginx-1.14.0.tar.gz /usr/src/ #将本地的nginx源码包复制到镜像中并解压。
RUN useradd -M -s /sbin/nologin nginx #创建nginx服务需要的用户。
WORKDIR /usr/src/nginx-1.14.0 #切换源码包目录,进行编译安装。
RUN ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
RUN make && make install #编译安装。
RUN ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ #对nginx执行命令文件做软链接。
RUN nginx -t #检查配置是否有误。
RUN nginx #启动服务。
EXPOSE 80 #开启容器的80端口。
4.生成镜像
docker build -t centos-nginx:wang .
5.查看镜像
(二、)运行容器
6.运行容器
docker run -itd --name nginx-moban -p 80:80 --restart=always centos-nginx:wang nginx -g "daemon off;"
参数说明:
-itd:提供一个可交互的伪终端,并且保存后台运行。
--name:为容器取名。
-p:端口映射,宿主端口:容器端口
--restart=always:始终保持运行(随着docker开启而运行)
nginx -g "daemon off;" :保证容器运行之后,nginx服务就直接开启,不必手动开启。
7.访问测试
(三、)构建私有仓库
1.下载私有仓库镜像
docker pull registry:2
2.查看镜像
3.运行容器
docker run -itd --name siyoucangku --restart=always -p 5000:5000 -v /registry:/mnt/registry registry:2
参数:前面使用过的略过。
-itd:在容器中打开一个伪终端进行交互操作,并在后台运行;
-v:把宿主机的/data/registry目录绑定 到 容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化 (挂载目录。宿主机的目录:容器内的目录。 #也可以自动创建目录);
-p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了;
--restart=always:这是重启的策略,假如这个容器异常退出会自动重启容器;
--name registry:创建容器命名为registry,你可以随便命名;
registry:latest:这个是刚才pull下来的镜像;
4.打标签
docker tag centos-nginx:wang 120.26.83.25:5000/nginx
5.验证
curl http://120.26.83.25:5000/v2/_catalog
能看到json格式的返回值时,说 明registry已经运行起来了。
6.上传镜像,但是会报错
docker push 120.26.83.25:5000/nginx:latest
解决方法:
vim /etc/docker/daemon.json
{
"registry-mirrors": [ "https://registry.docker-cn.com"],
"insecure-registries": [ "120.26.83.25:5000"]
}
7.重启docker
ystemctl restart docker
8.再次上传镜像
docker push 120.26.83.25:5000/nginx:latest
9.查看是否成功
curl http://120.26.83.25:5000/v2/_catalog
(四、)验证
1.删除原有镜像
docker rmi centos-nginx
2.下载镜像:
docker pull 120.26.83.25:5000/nginx
3.启动查看: