【Dockerfile】使用Dockerfile创建带nginx服务的Centos Docker镜像

【Dockerfile】使用Dockerfile创建带nginx服务的Centos Docker镜像


在宿主机上准备的文件清单:

Dockerfile
#启动ssh和apache服务的角本
run.sh
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

以上文件都放到/root/nginx_centos目录下

mkdir -p /root/nginx_centos
cd /root/nginx_centos
  • 1
  • 2
  • 1
  • 2

一、准备run.sh文件 
在/root/nginx_centos目录新建run.sh

vim run.sh
  • 1
  • 1

角本内容如下:

#!/bin/bash
/usr/sbin/sshd &
/usr/local/nginx/sbin/nginx
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

二、准备Dockerfile 
在/root/nginx_centos目录新建Dockerfile

vim Dockerfile
  • 1
  • 1

文件内容如下:

#新生成的镜像是基于sshd:dockerfile镜像
FROM sshd-centos
MAINTAINER by cmzsteven
WORKDIR /usr/local/src
#安装wget
RUN yum install -y  wget
#下载并解压源码包
RUN wget http://nginx.org/download/nginx-1.8.0.tar.gz
RUN tar -zxvf nginx-1.8.0.tar.gz
WORKDIR nginx-1.8.0
#编译安装nginx
RUN yum install -y gcc make pcre-devel zlib-devel
RUN ./configure   --prefix=/usr/local/nginx   --with-pcre
RUN make
RUN make install
#启动Nginx服务
RUN /usr/local/nginx/sbin/nginx
#修改Nginx配置文件,以非daemon方式启动
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf
#复制服务启动脚本并设置权限
ADD run.sh /usr/local/sbin/run.sh
RUN chmod 755 /usr/local/sbin/run.sh
#设置生成容器时需要执行的脚本
CMD ["/usr/local/sbin/run.sh"]
#开放22、80、443端口
EXPOSE 22
EXPOSE 80
EXPOSE 443
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

需要注意的是:在Dockerfile文件中更换当前目录不可以用“cd”命令,而要改用“WORKDIR”. 
三、根据Dockerfile生成镜像

docker build -t nginx_dockerfile:centos .
  • 1
  • 1

查看镜像:

[root@localhost nginx_centos]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
nginx_dockerfile    centos              9ad55461b2fe        5 minutes ago       386.1 MB
nginx               centos              b738cec02b29        47 minutes ago      369.9 MB
sshd-centos         latest              64136bdc0cc8        46 hours ago        261.8 MB
centos              latest              0f73ae75014f        5 weeks ago         172.3 MB
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

四、根据镜像生成的容器并进行测试 
1、生成新的容器

[root@localhost nginx_centos]#docker run -d -p 2224:22 -p 8001:80 -p 4443:443 nginx_dockerfile:centos /usr/local/sbin/run.sh
  • 1
  • 1

将容器的22端口、80端口和443端口分别映射到到宿主机上的2224端口、8001端口和4443端口,并运行服务脚本。 
也可以使用-P参数来让系统随机指定端口映射到22、80和443端口:

docker run -d -P nginx_dockerfile:centos
  • 1
  • 1

因为在Dockerfile中指定了EXPOSE所以系统会自动将指定的端口映射出来;同时使用CMD来指定生成容器时所需要执行的角本,所以这里省略了“/usr/local/sbin/run.sh”。 
2、查看新生成的容器:

[root@localhost nginx_centos]# docker ps -a
CONTAINER ID        IMAGE                     COMMAND                CREATED             STATUS              PORTS                                       

 NAMES
c69d42541f52        nginx_dockerfile:centos   "/usr/local/sbin/run   26 seconds ago      Up 25 seconds       0.0.0.0:2224->22/tcp, 0.0.0.0:8001->80/tcp, 0.0.0.0:4443->443/tcp 

 high_colden
f5a87e085a0b        nginx:centos              "/usr/local/sbin/run   49 minutes ago      Up 49 minutes       0.0.0.0:2223->22/tcp, 0.0.0.0:8000->80/tcp  

 stoic_kirch
ed9361b598c8        sshd-centos               "/usr/sbin/sshd -D"    About an hour ago   Up About an hour    0.0.0.0:2222->22/tcp                        

 distracted_mclean
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

3、测试 
测试nignx:

[root@localhost nginx_centos]# curl localhost:8001

<html>
<head>
<title>Welcome to nginx!title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
style>
head>
<body>
<h1>Welcome to nginx!h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.orga>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.coma>.p>

<p><em>Thank you for using nginx.em>p>
body>
html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

测试成功!

测试ssh

[root@localhost nginx_centos]# ssh localhost -p 2224
The authenticity of host '[localhost]:2224 ([::1]:2224)' can't be established.
RSA key fingerprint is d7:fd:3d:40:46:b6:0c:c9:ee:f1:fb:9e:08:c4:12:57.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[localhost]:2224' (RSA) to the list of known hosts.
root@localhost's password:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

测试成功!

你可能感兴趣的:(【Docker】,【Docker】Centos6)