目录

Dockerfile 部分命令解释

1、ENTRYPOINT

而ENTRYPOINT 语言 CMD的区别

1、docker run 启动容器的时候,可以传递参数进入给ENTRYPOINT里面的命令(-e)

2、当2者都存在的时候,CMD里的内容会成为 ENTRYPOINT 里的参数(位置参数)

如图所示,完成如下实例

配置nginx镜像,并配置监听端口为8007项目:

编译Dockerfile文件

编译好one_creat_ngin.sh文件

在下载过程中,我们可以使用docker stats查看容器的性能

编辑

下面我们将修改nginx的配置文件

进入容器内部查看nginx配置文件路径,从而得到nginx的配置文件:

修改nginx配置文件(将listen 80 改为 8007)

创建volume

修改Dockerfile文件


Dockerfile 部分命令解释

1、ENTRYPOINT

ENTRYPOINT  ["xxx"] --》指定启动容器的时候运行命令

撰写方式:

haproxy keepalived制作docker镜像 制作docker nginx镜像_运维

而ENTRYPOINT 语言 CMD的区别

1、docker run 启动容器的时候,可以传递参数进入给ENTRYPOINT里面的命令(-e)

haproxy keepalived制作docker镜像 制作docker nginx镜像_nginx_02

2、当2者都存在的时候,CMD里的内容会成为 ENTRYPOINT 里的参数(位置参数)

 

haproxy keepalived制作docker镜像 制作docker nginx镜像_docker_03

因此相当于docker-entrypoint.sh mysqld 

因此ENTRYPOINT更加高级

dockerfile中CMD和ENTRYPOINT必须要有一个吗?

在 Dockerfile 中定义CMD和ENTRYPOINT指令并不是必须的,但如果想要以容器形式运行应用程序,则至少需要定义其中一个。

如图所示,完成如下实例

haproxy keepalived制作docker镜像 制作docker nginx镜像_运维_04

其中需要注意while.sh 文件的权限问题

chmod +x while.h

测试:

[root@mysql mydocker2]# vim hello.txt
[root@mysql mydocker2]# vim Dockerfile 
[root@mysql mydocker2]# vim while.sh
[root@mysql mydocker2]# chmod +x while.sh
[root@mysql mydocker2]# ll
总用量 8
-rw-r--r-- 1 root root 83 6月  19 09:51 Dockerfile
-rwxr-xr-x 1 root root 95 6月  19 09:53 while.sh
[root@mysql mydocker2]# docker build -t scbusybox:1.2 .


[root@mysql mydocker2]# docker run --rm -it --name scbusybox-1 scbusybox:1.2
hello world sanchuang! 1
hello world sanchuang! 2
hello world sanchuang! 3
hello world sanchuang! 4
hello world sanchuang! 5
hello world sanchuang! 6
hello world sanchuang! 7
hello world sanchuang! 8
hello world sanchuang! 9
hello world sanchuang! 10

配置nginx镜像,并配置监听端口为8007项目:

准备一台虚拟机centos7.9

安装好docker,创建文件夹/dockernginx

编译Dockerfile文件

[root@mysql dockernginx]# cat Dockerfile 
FROM centos:7             #FROM语句指定了创建镜像的基础镜像
ENV NGINX_VERSION 1.23.1   #定义环境变量
ENV AUTHOR sc_clay
LABEL maintainer="clay<2384319786@qq.com>"   #LABEL语句用于给镜像添加元数据信息

WORKDIR /sc          #WORKDIR语句用于设置当前工作目录
COPY . /sc          #将宿主机本地的文件copy到镜像中的/sc目录下
RUN yum install vim net-tools iputils iproute -y \
    && bash /sc/one_creat_nginx.sh && mkdir /scvolume        #镜像生成过程中执行的命令
EXPOSE 80            #暴露80端口
VOLUME /scvolume       #设置卷为/scvolume
ENV PATH=/usr/local/scnginx66/sbin:$PATH    #定义环境变量PATH
STOPSIGNAL SIGQUIT       #STOPSIGNAL语句用于设置容器停止时发送给进程的信号,其中,<signal>参数表示要发送的信号名称或编号,默认为SIGTERM

CMD ["nginx","-g","daemon off;"] 


[root@mysql dockernginx]#

编译好one_creat_ngin.sh文件

[root@mysql dockernginx]# cat one_creat_nginx.sh 
#!/bin/bash

#新建一个文件夹用来存放下载的nginx源码包
mkdir -p  /nginx
cd /nginx

#新建工具人用户、设置无法登录模式
useradd  -s /sbin/nologin  clay

#下载nginx
#wget  http://nginx.org/download/nginx-1.23.2.tar.gz
curl -O http://nginx.org/download/nginx-1.23.2.tar.gz

#解压nginx源码包
tar xf nginx-1.23.2.tar.gz

#解决软件依赖关系、需要安装的软件包
yum install epel-release -y
yum install gcc gcc-c++ openssl openssl-devel  pcre pcre-devel  automake  make  psmisc  net-tools lsof vim geoip  geoip-devel wget  zlib zlib-devel -y  

#到达nginx配置文件目录下
cd nginx-1.23.2

#编译前的配置
./configure  --prefix=/usr/local/scnginx66  --user=clay  --with-http_ssl_module --with-http_v2_module --with-stream --with-http_stub_status_module --with-threads 

#编译、开启一个进程同时编译
make -j 1

#编译安装
make install

[root@mysql dockernginx]#

在下载过程中,我们可以使用docker stats查看容器的性能

如果我们想知道容器内进程的消耗,我们就可以使用docker top 容器名

haproxy keepalived制作docker镜像 制作docker nginx镜像_容器_05

下载完成后查看镜像

[root@mysql dockernginx]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED          SIZE
sclpf-nginx   1.23.1    e704e64746c5   14 minutes ago   671MB
scbusybox     1.2       c86b8980dcc1   5 hours ago      4.86MB
sccentos      7         d1c7ea7a3707   10 hours ago     204MB
nginx         latest    3f8a00f137a0   4 months ago     142MB
mysql         5.7.35    8a8a506ccfdc   20 months ago    448MB
centos        7         eeb6ee3f44bd   21 months ago    204MB
[root@mysql dockernginx]#

创建容器 

[root@mysql ~]# docker run -d -p 4430:80 --name lpf-nginx sclpf-nginx:1.23.1
2eed8b767d2f4bc133b77655776911ff00460164ba02a92e6c8865b8412a6dd8
[root@mysql ~]#

查看容器是否启动:

[root@mysql ~]# docker ps
CONTAINER ID   IMAGE                COMMAND                   CREATED              STATUS              PORTS                                   NAMES
2eed8b767d2f   sclpf-nginx:1.23.1   "nginx -g 'daemon of…"   About a minute ago   Up About a minute   0.0.0.0:4430->80/tcp, :::4430->80/tcp   lpf-nginx
22e10551d3cd   nginx                "/docker-entrypoint.…"   24 hours ago         Up 4 hours          0.0.0.0:6606->80/tcp, :::6606->80/tcp   claylpf-nginx-1
[root@mysql ~]#

haproxy keepalived制作docker镜像 制作docker nginx镜像_docker_06

下面我们将修改nginx的配置文件

1、指定nginx.conf配置文件

        监听端口号为8007

2、创建容器的时候使用卷,加载里面的网页

        2.1创建卷nginx_web,新建一个index.html网页文件

        2.2创建容器,加载容器

进入容器内部查看nginx配置文件路径,从而得到nginx的配置文件:

[root@mysql ~]# docker exec -it lpf-nginx bash
[root@2eed8b767d2f sc]# ls

[root@2eed8b767d2f /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  nginx  opt  proc  root  run  sbin  sc  scvolume  srv  sys  tmp  usr  var
[root@2eed8b767d2f /]# cd /usr/local/scnginx66/conf/
[root@2eed8b767d2f conf]# ls
fastcgi.conf          fastcgi_params          koi-utf  mime.types          nginx.conf          scgi_params          uwsgi_params          win-utf
fastcgi.conf.default  fastcgi_params.default  koi-win  mime.types.default  nginx.conf.default  scgi_params.default  uwsgi_params.default
[root@2eed8b767d2f conf]#

得到nginx的配置文件

[root@mysql dockernginx]# docker cp lpf-nginx:/usr/local/scnginx66/conf/nginx.conf .
Successfully copied 4.61kB to /dockernginx/.
[root@mysql dockernginx]# ls
Dockerfile  nginx.conf  one_creat_nginx.sh
[root@mysql dockernginx]#

修改nginx配置文件(将listen 80 改为 8007)

 

haproxy keepalived制作docker镜像 制作docker nginx镜像_容器_07

创建volume

[root@mysql dockernginx]# docker volume create nginx_web
nginx_web
[root@mysql dockernginx]# docker volume ls
DRIVER    VOLUME NAME
local     4c7c035ff15b9b022f6fc875d8303f6286cf61d8e89ea1692996760169393f1e
local     6167418cb7d0a3dfacef4439f410e1860c088d297cf47aeceaf88d3e56528219
local     a5c3ab3de7511c90ba7a623e4b458e18a4411b2c5140a35b7e03eb52c5ad0b48
local     e129efa82af7232ec5cdfd9f1ebb5e2ab35be29216166551aefe7d322b0309bf
local     nginx-web

 创建index.html 放在卷的数据目录下

[root@mysql dockernginx]# cd /var/lib/docker/volumes/nginx_web/_data
[root@mysql _data]# ls
[root@mysql _data]# vim index.html;
[root@mysql _data]# ls
index.html
[root@mysql _data]# cat index.html 
wo shi da shuai ge lpf 
niu bi

修改Dockerfile文件

FROM centos:7
ENV NGINX_VERSION 1.23.1
ENV AUTHOR sc_clay
LABEL maintainer="clay<2384319786@qq.com>"

WORKDIR /sc
COPY . /sc
RUN yum install vim net-tools iputils iproute -y \
    && bash /sc/one_creat_nginx.sh && mkdir /scvolume
EXPOSE 8007
VOLUME /scvolume
ENV PATH=/usr/local/scnginx66/sbin:$PATH
STOPSIGNAL SIGQUIT
COPY nginx.conf /usr/local/scnginx66/conf      #添加这一条

CMD ["nginx","-g","daemon off;"]

重新编译镜像

[root@mysql dockernginx]# docker build -t sclpf-nginx:1.23.2 .

启动容器使用我们的镜像 和 需要使用的卷

[root@mysql dockernginx]# docker images                                                                                                                                                      
REPOSITORY    TAG       IMAGE ID       CREATED             SIZE
sclpf-nginx   1.23.2    361d4088b257   15 minutes ago      671MB
sclpf-nginx   1.23.1    e704e64746c5   About an hour ago   671MB
scbusybox     1.2       c86b8980dcc1   6 hours ago         4.86MB
sccentos      7         d1c7ea7a3707   11 hours ago        204MB
nginx         latest    3f8a00f137a0   4 months ago        142MB
mysql         5.7.35    8a8a506ccfdc   20 months ago       448MB
centos        7         eeb6ee3f44bd   21 months ago       204MB
[root@mysql dockernginx]# docker run -d -p 4455:8007 --name lpf-nginx-1 -v nginx_web:/usr/local/scnginx66/html sclpf-nginx:1.23.2
dec86911d80e28e1bd2ce8b58cf5222d0c752ad17d8d73f141e3fce0f63c7e37
[root@mysql dockernginx]# docker ps
CONTAINER ID   IMAGE                COMMAND                   CREATED             STATUS             PORTS                                       NAMES
dec86911d80e   sclpf-nginx:1.23.2   "nginx -g 'daemon of…"   7 seconds ago       Up 6 seconds       0.0.0.0:4455->8007/tcp, :::4455->8007/tcp   lpf-nginx-1
2eed8b767d2f   sclpf-nginx:1.23.1   "nginx -g 'daemon of…"   About an hour ago   Up About an hour   0.0.0.0:4430->80/tcp, :::4430->80/tcp       lpf-nginx
22e10551d3cd   nginx                "/docker-entrypoint.…"   25 hours ago        Up 5 hours         0.0.0.0:6606->80/tcp, :::6606->80/tcp       claylpf-nginx-1
[root@mysql dockernginx]#

 最后测试端口:

haproxy keepalived制作docker镜像 制作docker nginx镜像_容器_08