Docker学习之路04:创建定制Nginx镜像

Docker学习之路04:创建定制Nginx镜像


Docker学习路线传送门:

Docker学习之路01:Docker的安装
Docker学习之路02:阿里云镜像加速器
Docker学习之路03:Docker的常用命令
Docker学习之路04:创建定制Nginx镜像
Docker学习之路05:五分钟用docker compose搭建一个自己的个人博客网站!
Docker学习之路06:基于 Docker 在Ubuntu系统部署Hadoop、Hbase以及Spark


目的:

1、掌握利用commit命令构建镜像的方法
2、掌握利用Dockerfile构建镜像的方法

内容:

下载镜像

# 查看docker镜像
[root@master ~]# docker images
REPOSITORY      TAG       IMAGE ID       CREATED         SIZE
centos          7         8652b9f0cb4c   4 months ago    204MB
elasticsearch   7.6.2     f29a1ee41030   11 months ago   791MB

# 下载nginx镜像
[root@master ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
a076a628af6f: Pull complete 
0732ab25fa22: Pull complete 
d7f36f6fe38f: Pull complete 
f72584a26f32: Pull complete 
7125e4df9063: Pull complete 
Digest: sha256:10b8cc432d56da8b61b070f4c7d2543a9ed17c2b23010b43af434fd40e2ca4aa
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

[root@master ~]# docker images
REPOSITORY      TAG       IMAGE ID       CREATED         SIZE
nginx           latest    f6d0b4767a6c   2 months ago    133MB
centos          7         8652b9f0cb4c   4 months ago    204MB
elasticsearch   7.6.2     f29a1ee41030   11 months ago   791MB

在这里插入图片描述

方式一:利用commit命令构建镜像

1、利用nginx镜像生成容器后,进入容器,并修改主页

# 下载镜像nginx
[root@master ~]# docker images
REPOSITORY      TAG       IMAGE ID       CREATED         SIZE
centos          7         8652b9f0cb4c   4 months ago    204MB
elasticsearch   7.6.2     f29a1ee41030   11 months ago   791MB
[root@master ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
a076a628af6f: Pull complete 
0732ab25fa22: Pull complete 
d7f36f6fe38f: Pull complete 
f72584a26f32: Pull complete 
7125e4df9063: Pull complete 
Digest: sha256:10b8cc432d56da8b61b070f4c7d2543a9ed17c2b23010b43af434fd40e2ca4aa
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

在这里插入图片描述

# 后台运行
[root@master ~]# docker run -dit --name nginx_my -p 3344:80  nginx
61b07df37ef72416b9e8175dcd1aced6ef857002df2e2ab3e966a1bd21d06a43
[root@master ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                  NAMES
61b07df37ef7   nginx     "/docker-entrypoint.…"   2 seconds ago   Up 2 seconds   0.0.0.0:3344->80/tcp   nginx_my

# 进入进行nginx
[root@master ~]# docker exec -it nginx_my /bin/bash

# 修改页面内容
root@61b07df37ef7:/# echo "John Zhunang's Docker Nginx" >/usr/share/nginx/html/index.html

# 退出
root@61b07df37ef7:/# exit
exit

在这里插入图片描述

2、利用commit命令构建新镜像nginx1.0

# 创建新的nginx镜像1.0
[root@master ~]# docker commit -a="John Zhuang" -a="echo message" nginx_my nginx_my:1.0
sha256:42a10034f25eff710dd126c41ccb02a829d5d301f90ec20cb5e391e2e19a5ded
[root@master ~]# docker images
REPOSITORY      TAG       IMAGE ID       CREATED         SIZE
nginx_my        1.0       42a10034f25e   3 seconds ago   133MB
nginx           latest    f6d0b4767a6c   2 months ago    133MB
centos          7         8652b9f0cb4c   4 months ago    204MB
elasticsearch   7.6.2     f29a1ee41030   11 months ago   791MB

在这里插入图片描述

3、利用新构建的镜像nginx1.0生成容器

# 后台运行新的nginx镜像1.0
[root@master ~]# docker run -dit --name nginx_1.0_test -p 3355:80 nginx_my:1.0
d6c908e88b10fe9d0c55933707aec4550d2b2e6c7fb9fe12191bf56885442fd2
[root@master ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                  NAMES
d6c908e88b10   nginx_my:1.0   "/docker-entrypoint.…"   3 seconds ago   Up 2 seconds   0.0.0.0:3355->80/tcp   nginx_1.0_test
61b07df37ef7   nginx          "/docker-entrypoint.…"   2 minutes ago   Up 2 minutes   0.0.0.0:3344->80/tcp   nginx_my

# 进入新的nginx镜像1.0
[root@master ~]# docker exec -it nginx_1.0_test /bin/bash
root@d6c908e88b10:/# ls
bin   dev		   docker-entrypoint.sh  home  lib64  mnt  proc  run   srv  tmp  var
boot  docker-entrypoint.d  etc			 lib   media  opt  root  sbin  sys  usr
root@d6c908e88b10:/# exit
exit

在这里插入图片描述

4、测试

# 测试
[root@master ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                  NAMES
d6c908e88b10   nginx_my:1.0   "/docker-entrypoint.…"   7 minutes ago   Up 7 minutes   0.0.0.0:3355->80/tcp   nginx_1.0_test
61b07df37ef7   nginx          "/docker-entrypoint.…"   9 minutes ago   Up 9 minutes   0.0.0.0:3344->80/tcp   nginx_my
[root@master ~]# curl localhost:3344
John Zhunang's Docker Nginx
[root@master ~]# curl localhost:3355
John Zhunang's Docker Nginx

curl测试效果~
在这里插入图片描述

网页测试效果~
在这里插入图片描述

方式二:利用Dockerfile构建镜像

1、建立镜像目录,将nginx安装包复制到当前目录,然后在该目录中新建Dockerfile文件

Nginx安装包下载地址http://nginx.org/en/download.html

在这里插入图片描述

# 创建工作目录
[root@master ~]# mkdir /usr/dockertestFile

# 创建Dockerfile文件
[root@master ~]# cd /usr/dockertestFile

# 拷贝nginx安装包复制到当前目录
[root@master dockertestFile]# cp /opt/software/nginx-1.12.2.tar.gz /usr/dockertestFile/

# 配置Dockerfile文件
[root@master dockertestFile]# vim Dockerfile

Dockerfile文件配置信息如下:

# 基础镜像 
FROM centos:7

# 作者信息
MAINTAINER JohnZhuang<825165686@qq.com>

# 容器内执行的命令:创建用户 创建文件 安装编译依赖
RUN useradd  John -M -s /sbin/nologin
RUN mkdir -p /var/log/nginx
RUN yum install -y cmake pcre pcre-devel openssl openssl-devel gd-devel \
    zlib-devel gcc gcc-c++ net-tools iproute telnet wget curl &&\
    yum clean all && \
    rm -rf /var/cache/yum/*

# 解压nginx安装包
ADD nginx-1.12.2.tar.gz /usr/local/src
WORKDIR /usr/local/src/nginx-1.12.2

# 配置
RUN ./configure --prefix=/usr/local/nginx --with-http_image_filter_module --user=John --group=John \
    --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module \
    --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log \
    --pid-path=/var/run/nginx/nginx.pid

RUN make -j 4 && make install && \
    rm -rf /usr/local/nginx/html/*  && \
    echo "John Zhunang's Docker Nginx" >/usr/local/nginx/html/index.html  && \
    rm -rf nginx* && \
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&\
    ln -sf /dev/stdout /var/log/nginx/access.log && \
    ln -sf /dev/stderr /var/log/nginx/error.log

# 设置权限
RUN chown -R John.John /var/log/nginx

# 设置环境
ENV LOG_DIR /var/log/nginx
ENV PATH $PATH:/usr/local/nginx/sbin

# 设置端口号
EXPOSE 80

# 设置工作目录
WORKDIR /usr/local/nginx

# nginx命令参数
CMD ["nginx","-g","daemon off;"]

注意:以上配置文件中用户信息、nginx安装包版本、nginx安装目录等差异根据自身的需求修改!

2、利用docker build命令生成镜像

# 创建新的nginx镜像2.0
[root@master ~]# docker build -t nginx_my:2.0 .
构建过程...
构建过程...
Successfully built eaa8c9f8b689
Successfully tagged nginx_my:2.0
[root@master ~]# docker images
REPOSITORY      TAG       IMAGE ID       CREATED          SIZE
nginx_my        2.0       eaa8c9f8b689   2 minutes ago    421MB
nginx_my        1.0       42a10034f25e   24 minutes ago   133MB
nginx           latest    f6d0b4767a6c   2 months ago     133MB
centos          7         8652b9f0cb4c   4 months ago     204MB
elasticsearch   7.6.2     f29a1ee41030   11 months ago    791MB

如果出现两个Successful则表示成功!

在这里插入图片描述

3、利用新构建的镜像生成容器

# 后台运行镜像nginx2.0
[root@master ~]# docker run -d --name nginx_test_2 -p 3366:80  nginx_my:2.0
9c17e93ae9dd7d0066d40fb68dcad99d0f8814c77a3535d2b4b5fabc16f30b1e
[root@master ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                  NAMES
9c17e93ae9dd   nginx_my:2.0   "nginx -g 'daemon of…"   8 seconds ago    Up 6 seconds    0.0.0.0:3366->80/tcp   nginx_test_2
d6c908e88b10   nginx_my:1.0   "/docker-entrypoint.…"   24 minutes ago   Up 24 minutes   0.0.0.0:3355->80/tcp   nginx_1.0_test
61b07df37ef7   nginx          "/docker-entrypoint.…"   27 minutes ago   Up 27 minutes   0.0.0.0:3344->80/tcp   nginx_my

# 进入镜像nginx2.0
[root@master ~]# docker exec -it nginx_test_2 /bin/bash
[root@9c17e93ae9dd nginx]# ls
client_body_temp  conf  fastcgi_temp  html  proxy_temp  sbin  scgi_temp  uwsgi_temp

# 退出
[root@9c17e93ae9dd nginx]# exit
exit

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sv8Bom5l-1615959316575)(C:\Users\John\AppData\Roaming\Typora\typora-user-images\image-20210317130719145.png)]

# 测试
[root@master ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS              PORTS                  NAMES
9c17e93ae9dd   nginx_my:2.0   "nginx -g 'daemon of…"   About a minute ago   Up About a minute   0.0.0.0:3366->80/tcp   nginx_test_2
d6c908e88b10   nginx_my:1.0   "/docker-entrypoint.…"   26 minutes ago       Up 26 minutes       0.0.0.0:3355->80/tcp   nginx_1.0_test
61b07df37ef7   nginx          "/docker-entrypoint.…"   28 minutes ago       Up 28 minutes       0.0.0.0:3344->80/tcp   nginx_my
[root@master ~]# curl localhost:3366
John Zhunang's Docker Nginx

curl测试效果~
在这里插入图片描述

网页测试效果~
在这里插入图片描述

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

John Zhuang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值