准备一台CentOS7-1908虚拟机虚拟机中没有docker下载源
[root@C7-Docker ~]# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@C7-Docker ~]# yum install docker-ce

国内下载国外的镜像有时候会很慢,因此可以更改 docker 配置文件添加一个加 速器,可以通过加速器达到加速下载镜像的目的
浏览器打开 http://cr.console.aliyun.com 注册或登录阿里云账号,点击左侧的 镜像加速器,将会得到一个专属加速地址


1

推荐使用 nsenter 命令进入容器,该命令需要通过容器的 PID 进入到容器内部,比较麻烦。
不过可以使用docker inspect 命令获取到容器的 PID。
安装 nsenter 工具,包名(不区分CentOS/Ubuntu):util-linux
[root@C7-Docker ~]# yum install -y util-linux
[root@C7-Docker ~]# systemctl start docker镜像的构建与使用
基于Dockerfile构建编译版nginx镜像
[root@C7-Docker ~]# docker pull centos:7.7.1908
[root@C7-Docker ~]# mkdir -p /opt/dockerfile/nginx
[root@C7-Docker ~]# vim /opt/dockerfile/nginx/Dockerfile
# Docekr image for compile installation of nginx
#
FROM centos:7.7.1908LABEL maintainer="dushan <19855325412@163.com>"ENV password 123456RUN rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpmRUN yum install -y vim wget tree lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotopADD nginx-1.16.1.tar.gz /usr/local/srcRUN cd /usr/local/src/nginx-1.16.1 && ./configure --prefix=/usr/local/nginx --with-http_sub_module && make -j 4 && make installRUN cd /usr/local/nginxADD nginx.conf /usr/local/nginx/conf/nginx.confRUN useradd nginx -s /sbin/nologinRUN ln -sv /usr/local/nginx/sbin/nginx /usr/sbin/nginxRUN echo "Hello dockerfile ..." > /usr/local/nginx/html/index.htmlEXPOSE 80 443CMD ["nginx","-g","daemon off;"]
[root@C7-Docker ~]# yum -y install nginx &> /dev/null
[root@C7-Docker ~]# cp /etc/nginx/nginx.conf /opt/dockerfile/nginx/
[root@C7-Docker ~]# ll /opt/dockerfile/nginx/
total 1020
-rw-r--r-- 1 root root     811 Jun 11 17:39 Dockerfile
-rw-r--r-- 1 root root 1032630 Jun 11 17:41 nginx-1.16.1.tar.gz
-rw-r--r-- 1 root root    2471 Jun 11 17:43 nginx.conf[root@C7-Docker ~]# cd /opt/dockerfile/nginx/
[root@C7-Docker nginx]# docker build -t nginx:compiled_V1 .
[root@C7-Docker nginx]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               compiled_V1         d1966b9ed396        2 minutes ago       535MB
centos              7.7.1908            08d05d1d5859        7 months ago        204MB
使用ARG声明变量,在构建时指定变量值
[root@C7-Docker nginx]# vim Dockerfile
# Docekr image for compile installation of nginx
#
#FROM centos:7.7.1908ARG base_versionFROM ${base_version}LABEL maintainer="dushan <19855325412@163.com>"
……..
[root@C7-Docker nginx]# docker build --build-arg base_version=centos:7.5.1804 -t nginx-test:vv1 .
…………………………………#过程省略
Step 15/15 : CMD ["nginx","-g","daemon off;"]---> Running in 4ec9b916d013
Removing intermediate container 4ec9b916d013---> 8300c44e6b2f
Successfully built 8300c44e6b2f
Successfully tagged nginx-test:vv1[root@C7-Docker nginx]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx-test          vv1                 8300c44e6b2f        50 seconds ago      533MB
nginx               compiled_V1         d1966b9ed396        16 hours ago        535MB
centos              7.7.1908            08d05d1d5859        7 months ago        204MB
centos              7.5.1804            cf49811e3cdb        15 months ago       200MB[root@C7-Docker nginx]# docker run -it --rm nginx:compiled_V1 /bin/bash
[root@c9ffac32c366 /]# cat /etc/hosts
127.0.0.1   localhost
…….
172.17.0.2  c9ffac32c366[root@c9ffac32c366 /]# /usr/local/nginx/sbin/nginx
nginx: [emerg] open() "/etc/nginx/mime.types" failed (2: No such file or directory) in /usr/local/nginx/conf/nginx.conf:30#报错?根据报错去conf目录下看一下
[root@c9ffac32c366 /]# find /usr/local/nginx -name "mime.types"
/usr/local/nginx/conf/mime.types
[root@c9ffac32c366 /]# find /usr/local/nginx -name "nginx.conf"
/usr/local/nginx/conf/nginx.conf
[root@c9ffac32c366 /]# vim /usr/local/nginx/conf/nginx.conf
#    include             /etc/nginx/mime.types;include             /usr/local/nginx/conf/mime.types;[root@c9ffac32c366 /]# /usr/local/nginx/sbin/nginx
nginx: [emerg] open() "/var/log/nginx/error.log" failed (2: No such file or directory)[root@c9ffac32c366 /]# find /usr/local/nginx -name "*.log"
/usr/local/nginx/logs/error.log[root@c9ffac32c366 /]# vim /usr/local/nginx/conf/nginx.conf
#error_log /var/log/nginx/error.log;
error_log /usr/local/nginx/logs/error.log;[root@c9ffac32c366 /]# /usr/local/nginx/sbin/nginx
nginx: [emerg] open() "/var/log/nginx/access.log" failed (2: No such file or directory)[root@c9ffac32c366 /]# cd /usr/local/nginx/logs/
[root@c9ffac32c366 logs]# ll
total 4
-rw-r--r-- 1 root root 709 Jun 12 02:05 error.log
[root@c9ffac32c366 logs]# > access.log
[root@c9ffac32c366 logs]# ll
total 4
-rw-r--r-- 1 root root   0 Jun 12 02:07 access.log
-rw-r--r-- 1 root root 709 Jun 12 02:05 error.log[root@c9ffac32c366 logs]# vim /usr/local/nginx/conf/nginx.conf
#    access_log  /var/log/nginx/access.log  main;access_log  /usr/local/nginx/logs/access.log main;[root@c9ffac32c366 logs]# /usr/local/nginx/sbin/nginx
[root@c9ffac32c366 logs]# ss -ntul
Netid State      Recv-Q Send-Q       Local Address:Port                      Peer Address:Port
tcp   LISTEN     0      128                      *:80                                   *:*
tcp   LISTEN     0      128                   [::]:80                                [::]:*                  #哈哈,终于80端口起来了
[root@c9ffac32c366 logs]# yum -y install lsof
[root@c9ffac32c366 logs]# lsof -i:80
COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx    57 root    6u  IPv4 133472      0t0  TCP *:http (LISTEN)
nginx    57 root    7u  IPv6 133473      0t0  TCP *:http (LISTEN)
[root@c9ffac32c366 logs]# exit
exit
后台启动容器
[root@C7-Docker nginx]# docker run -it -d -p 80:80 nginx:compiled_V1
1b1d886821967f4b4358b60e2a065e40b85a84acb85836b9ba2d8a191dc6229f
[root@C7-Docker nginx]# ss -ntul|grep 80
#这里显示80端口并没有被启动?#使用命令查找启动失败的容器;我在这里排错了很久没有找到原因,尝试启动了很多次
[root@C7-Docker nginx]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                          PORTS               NAMES
dff1f4c0665b        nginx-test:vv1      "nginx -g 'daemon of…"   2 seconds ago        Exited (1) 2 seconds ago                            upbeat_poitras
075fb2fe0188        nginx-test:vv1      "nginx -g 'daemon of…"   About a minute ago   Exited (1) About a minute ago                       loving_heyrovsky
1505d9858fc4        nginx-test:vv1      "nginx -g 'daemon of…"   6 minutes ago        Exited (1) 6 minutes ago                            zealous_boyd
ba70a63749c5        nginx:compiled_V1   "nginx -g 'daemon of…"   7 minutes ago        Exited (1) 7 minutes ago                            mystifying_hugle
f744dd7fb93b        nginx:compiled_V1   "nginx -g 'daemon of…"   15 minutes ago       Exited (1) 15 minutes ago                           pedantic_bassi
50d0c1c96ab0        nginx:compiled_V1   "nginx -g 'daemon of…"   24 minutes ago       Exited (1) 24 minutes ago                           charming_archimedes
1b1d88682196        nginx:compiled_V1   "nginx -g 'daemon of…"   33 minutes ago       Exited (1) 33 minutes ago                           jovial_shockley
0d79a3f2fec8        912026d6ad83        "/bin/sh -c 'yum ins…"   About an hour ago    Exited (1) About an hour ago                        zealous_buck#查看其中一个容器启动失败的具体原因是什么,这与我在之前在进入容器启动nginx时出现的问题有些类似
#使我有些怀疑:是否是容器中nginx的配置文件出现问题导致了nginx无法正常启动?
[root@C7-Docker nginx]# docker logs ba70a63749c
nginx: [emerg] open() "/etc/nginx/mime.types" failed (2: No such file or directory) in /usr/local/nginx/conf/nginx.conf:30#通过查询得知:docker的容器目录一般在/var/lib/docker/overlay/ 中

解决问题参看

[root@C7-Docker nginx]# cd /var/lib/docker/overlay2/
[root@C7-Docker overlay2]# ll
total 4
drwx------ 4 root root   72 Jun 12 09:48 0be9006fd3085bb7a21ce1490c7a8061b914828c68971ab044a95d229a82e760
drwx------ 4 root root   72 Jun 12 09:48 1362f0a05b2feb7d8c11c59a82bee03cf77510085354dbed7f6ba7bb78fa8f38
…………………………
drwx------ 3 root root   47 Jun 12 09:43 efb6134c3c4119f7fcb59e538ebd50eabbfc590d296841ed942fe42ac7a2920a
drwx------ 2 root root 4096 Jun 12 11:01 l[root@C7-Docker overlay2]# find . -name "nginx.conf"
./73fdb26b73a78b912d142bb821035fa814b5bd33cbb530001ffce5002e04acb5/diff/usr/local/src/nginx-1.16.1/conf/nginx.conf
./1d105db2982f007c2c265eef199522c91ca0dd51deeff6818b9705e366ed37e7/diff/usr/local/nginx/conf/nginx.conf
./7827a97d4d137ecff861547cbd67509d36e3fc1fe40b8bc49a0a46111228fef6/diff/usr/local/nginx/conf/nginx.conf
./77b3451211ea9f21ae8b46db50d65fb482a89ad972bc7bd6213f81320c018db6/diff/usr/local/src/nginx-1.16.1/conf/nginx.conf
./1362f0a05b2feb7d8c11c59a82bee03cf77510085354dbed7f6ba7bb78fa8f38/diff/usr/local/nginx/conf/nginx.conf
./b9b574c7e7cc6e670a113bcd15ae98df5e4c1f976ddccb0d3c2e98d820d0c995/diff/usr/local/nginx/conf/nginx.conf#还好创建的容器不多,通过排查。我找到了之前容器中的nginx.conf 文件并进行了修改
[root@C7-Docker overlay2]# vim ./7827a97d4d137ecff861547cbd67509d36e3fc1fe40b8bc49a0a46111228fef6/diff/usr/local/nginx/conf/nginx.conf
#    error_log /var/log/nginx/error.log;
error_log /usr/local/nginx/logs/error.log;#    access_log  /var/log/nginx/access.log  main;access_log  /usr/local/nginx/logs/access.log main;#    include             /etc/nginx/mime.types;include             /usr/local/nginx/conf/mime.types;#        root         /usr/share/nginx/html;root         /usr/local/nginx/html;
…………………..
[root@C7-Docker overlay2]# docker run -it -d -p 80:80 nginx:compiled_V1
99e8204f6e5b4e3da8b4426087e8bbb9bf4ab34f2cb6e874ef7f9a811267f437
[root@C7-Docker overlay2]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
99e8204f6e5b        nginx:compiled_V1   "nginx -g 'daemon of…"   3 seconds ago       Up 2 seconds        0.0.0.0:80->80/tcp, 443/tcp   festive_wilson#nginx成功在后台启动
[root@C7-Docker local]# ip a|cat -n|grep "\b9"|awk -F" |/" '{print $11}'
10.20.0.130[root@C7-Docker local]# docker exec -it 98fab51e8f2b bash
[root@99e8204f6e5b /]# cat /usr/local/nginx/html/index.html
Hello dockerfile ...
[root@99e8204f6e5b /]#


2

手动构建编译nginx镜像
[root@C7-Docker ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
8a29a15cefae: Pull complete
Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest[root@C7-Docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx-test          vv1                 8300c44e6b2f        24 hours ago        533MB
nginx               compiled_V1         d1966b9ed396        40 hours ago        535MB
centos              latest              470671670cac        4 months ago        237MB
…………………[root@C7-Docker ~]# docker run -it 470671670cac /bin/bash
[root@e2490d57e736 /]# yum install -y vim gcc gcc-c++ automake lrzsz pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop wget make[root@e2490d57e736 /]# wget http://nginx.org/download/nginx-1.16.1.tar.gz[root@e2490d57e736 /]# ls |grep nginx
nginx-1.16.1.tar.gz
[root@e2490d57e736 /]# tar xf nginx-1.16.1.tar.gz
[root@e2490d57e736 /]# cd nginx-1.16.1[root@e2490d57e736 nginx-1.16.1]# ./configure --prefix=/apps/nginx --with-http_sub_module[root@e2490d57e736 nginx-1.16.1]# make && make install[root@e2490d57e736 nginx-1.16.1]# vim /apps/nginx/conf/nginx.conf
user  nginx;
worker_processes  auto;
daemon off;
#添加该行[root@e2490d57e736 nginx-1.16.1]# ln -sv /apps/nginx/sbin/nginx /usr/sbin/nginx
'/usr/sbin/nginx' -> '/apps/nginx/sbin/nginx'[root@e2490d57e736 nginx-1.16.1]# >  /apps/nginx/html/index.html
[root@e2490d57e736 nginx-1.16.1]# vim /apps/nginx/html/index.html <DOCTYPE html />
<head><h1>You can see Docker...</h1>
</head>
<body><p>A test message...</p>
</body>[root@e2490d57e736 nginx-1.16.1]# useradd -u 2020 nginx -s /sbin/nologin
[root@e2490d57e736 nginx-1.16.1]# chown nginx:nginx /apps/nginx/ -R
[root@e2490d57e736 nginx-1.16.1]# ls -l /apps/nginx/ -d
drwxr-xr-x 6 nginx nginx 54 Jun 13 02:28 /apps/nginx/[root@C7-Docker ~]# docker commit -a "dushan <19855325412@163.com>" -m "a test image" e2490d57e736 nginx:manual-compile-v3
sha256:76bafaa33c24f793bdf03f66c7fe89957811fdc0db61103c8f6880f0d022587a
[root@C7-Docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               manual-compile-v3   76bafaa33c24        14 seconds ago      573MB
nginx-test          vv1                 8300c44e6b2f        25 hours ago        533MB
………………..[root@C7-Docker ~]# docker run -it -d -p 84:80 nginx:manual-compile-v3 nginx
0d2e2a055ba399b00f0c7b32861aa30f0ec057f11f05a3b3f9dc53bb3689d939
[root@C7-Docker ~]# docker ps
CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS              PORTS                NAMES
0d2e2a055ba3        nginx:manual-compile-v3   "nginx"             21 seconds ago      Up 20 seconds       0.0.0.0:87->80/tcp   clever_ellis
[root@C7-Docker ~]#

值得让我怀疑的是,在映射端口的时候,我无论如何都无法使用主机87端口来映射docker的nginx容器端口
虽然结果显示容器的确被成功启动了,并且日志也差找不到任何报错,但网页却始终无法正常访问
于是我又尝试映射主机的其他端口,也发现其他个别端口无法正常访问,我怀疑这有可能是系统内部占用了其中这些端口
而使用>1000 的端口号却不会出现问题

果然还是自己所知尚浅,需要多多学习。留给以后再深入研究了

75-CentOS-Docker构建nginx镜像相关推荐

  1. dockerfile以alpine为基础镜像构建nginx镜像

    dockerfile以alpine为基础镜像构建nginx镜像 文章目录 dockerfile以alpine为基础镜像构建nginx镜像 1:alpine 2:alpine软件包管理命令 apk ad ...

  2. Dockerfile构建nginx镜像

    Dockerfile构建nginx镜像[root@bogon ~]# mkdir /opt/docker-file [root@bogon ~]# cd /opt/docker-file/ [root ...

  3. 构建nginx镜像,部署到k8s

    创建dockerfile(Dockerfile-web),通过dockerfile构建nginx镜像 FROM nginx:stable-alpine COPY nginx.conf /etc/ngi ...

  4. docker之nginx镜像优化4

    系列文章目录 docker之nginx镜像优化4 docker 系列文章目录 一.镜像优化的意义及方法 二.使用多阶段构建 一.镜像优化的意义及方法 镜像的优化可以减少客户端下载时候的带宽 已经选择了 ...

  5. docker构建hadoop镜像、docker-compose启动hdfs

    之前使用镜像singularities/hadoop:2.8安装过hdfs,但鉴于这个镜像已经很久没更新了,今天就手动安装一下hadoop,并构建成镜像,方便以后使用. 参考文档:docker构建ha ...

  6. docker 配置nginx镜像出现 403 Forbidden的问题

    (1)docker 配置nginx镜像的时候,将映射文件配置到当前宿主机上,启动nginx镜像,,通过域名访问,出现 403 查看nginx error.log日志,发现出现 (2)nginx镜像文件 ...

  7. Docker构建JDK 镜像

    Docker构建JDK 镜像 在 Docker官网中的openJDK 镜像中,默认不是使用的北京时间,会导致启动jar应用程序时时区不对的情况,这里在 openJDK镜像的基础上,设置使用中国北京时间 ...

  8. Docker构建MySQL镜像并初始化

    文章目录 Docker构建MySQL镜像并初始化 Dockerfile 的一些常用语法 FROM RUN CMD ENV COPY ADD WORKDIR EXPOSE 构建自带初始化的 MySQL ...

  9. 使用docker构建jenkins镜像并运行容器

    https://my.oschina.net/donhui/blog/470372?p={{currentPage+1}}   摘要: 使用docker构建jenkins镜像并运行容器 目录: 1.基 ...

  10. Docker构建Nginx+Tomcat动静分离架构

    随着主流Nginx WEB服务器的发展,现在基于Nginx的WEB服务器已广泛应用于各大互联网企业.今天我们来使用docker构建我们的Linux+Nginx+Tomcat动静分离服务器. 1)    ...

最新文章

  1. Javascript学习7 - 脚本化浏览器窗口
  2. option:contains后面加变量_Python基础篇 -2:初识Python中的变量
  3. SQLserver分页 高效率
  4. Linux 指令简单将***IP列入iptables 限制范围
  5. note deletion case
  6. bioinformaitcs的latex版本参考文献填坑
  7. OpenShift 4 - Fedora CoreOS (1) - 最简安装
  8. 以太坊Bloom过滤器实现原理及应用场景分析
  9. python爬虫今日头条街拍美图开发背景_【Python3网络爬虫开发实战】6.4-分析Ajax爬取今日头条街拍美图...
  10. VS实现格式化代码及代码缩进
  11. SpringSocial整合QQ授权登录
  12. MoleBox PRO build 2.3.054,, Latest , Private Member Build Edition
  13. 捷径 播报日期、时间、星期
  14. 突破与改变:酒店品牌的中高端之战
  15. [CTF]天网管理系统
  16. 快速上手LaTex,书写美观学术论文
  17. 解决scipy>1.3版本中没有imresize的问题
  18. Python pyspider的安装
  19. 项目Ⅱ-注册页面的完成
  20. 方舟生存进化服务器物品叠加,方舟生存进化:“秤砣虽小压千斤”,叠加和解飞一个都不能少!...

热门文章

  1. 数据分析大数据面试题大杂烩01
  2. 爆款制作获1200w播放,B站UP主+品牌如何迈入2023
  3. 中国移动湖南公司2022校园春季招聘正在进行中
  4. 手机电池-市场现状及未来发展趋势
  5. 什么品牌的蓝牙耳机音质好?四款高音质蓝牙耳机推荐
  6. C语言 单词长度 代码
  7. 深度学习笔记——情感分析
  8. 利用css3实现3d立体特效--正方体
  9. ECshop商品详情页显示可赠送积分和购买使用金额积分
  10. VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统