使用dockerfile构建一个nginx镜像

准备配置文件

mkdir nginx
[root@bogon nginx]# vi epel-6.repo 

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
baseurl=http://mirrors.aliyun.com/epel/6/$basearch
        http://mirrors.aliyuncs.com/epel/6/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 6 - $basearch - Debug
baseurl=http://mirrors.aliyun.com/epel/6/$basearch/debug
        http://mirrors.aliyuncs.com/epel/6/$basearch/debug
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=0

[epel-source]
name=Extra Packages for Enterprise Linux 6 - $basearch - Source
baseurl=http://mirrors.aliyun.com/epel/6/SRPMS
        http://mirrors.aliyuncs.com/epel/6/SRPMS
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=0


[root@bogon nginx]# cat Dockerfile

#author dennis
from centos:centos6
ADD epel-6.repo /etc/yum.repos.d
RUN yum install -y net-tools
RUN yum install -y iputils
RUN yum install -y nginx
RUN echo "daemon off;">> /etc/nginx/nginx.conf
CMD service nginx start

上面运行nginx前台运行,可以保证容器不会自动退出,容器没有一个运行的进程是会自动退出的,如果不这样运行,也要运行一个其他的长运行的进程,如top命令

[root@bogon nginx]# docker build -t mynginx:1.0 .

[root@bogon nginx]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
mynginx                     1.0                 f5387b3daae3        22 seconds ago      446MB
test                        latest              b5e4ce650f0d        5 hours ago         194MB
redis                       latest              b6dddb991dfa        9 days ago          107MB
centos                      centos6             5dedbd63518e        2 weeks ago         194MB
daocloud.io/library/nginx   1.13.2              2f7f7bce8929        2 months ago        107MB
#mynginx就是使用docker file构建的镜像

通过自己构建的镜像,启动容器

[root@bogon nginx]# docker run  -it --name mynginx01   f5387b3daae3 /bin/bash
#新建另一个ssh回话,启动另一个容器
[root@bogon ~]# docker run  -it --name mynginx02   f5387b3daae3 /bin/bash

容器连通性测试

mynginx01

[root@2887c1ce177b /]# ping 172.17.0.5
PING 172.17.0.5 (172.17.0.5) 56(84) bytes of data.
64 bytes from 172.17.0.5: icmp_seq=1 ttl=64 time=0.289 ms
64 bytes from 172.17.0.5: icmp_seq=2 ttl=64 time=0.176 ms
^C
--- 172.17.0.5 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1947ms
rtt min/avg/max/mdev = 0.176/0.232/0.289/0.058 ms

mynginx02

[root@db8d5e5bb1a2 /]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
72: eth0@if73: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ac:11:00:05 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.5/16 scope global eth0
       valid_lft forever preferred_lft forever
[root@db8d5e5bb1a2 /]# ping 172.17.0.5
PING 172.17.0.5 (172.17.0.5) 56(84) bytes of data.
64 bytes from 172.17.0.5: icmp_seq=1 ttl=64 time=0.098 ms
64 bytes from 172.17.0.5: icmp_seq=2 ttl=64 time=0.090 ms
^C
--- 172.17.0.5 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1453ms
rtt min/avg/max/mdev = 0.090/0.094/0.098/0.004 ms

宿主机

[root@bogon ~]# ping 172.17.0.5
PING 172.17.0.5 (172.17.0.5) 56(84) bytes of data.
64 bytes from 172.17.0.5: icmp_seq=1 ttl=64 time=0.197 ms
64 bytes from 172.17.0.5: icmp_seq=2 ttl=64 time=0.120 ms
^C
--- 172.17.0.5 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.120/0.158/0.197/0.040 ms

结论:同一个宿主机中的容器相互连通的,宿主机也和容器相互连通

单机网络架构

image
image

同一个系统docker共享同一个网桥

构建一个tomcat镜像

创建tomcat目录,新建Dockerfile和相关包

[root@node3 tomcat]# tree
├── apache-tomcat-7.0.76.tar.gz
├── Centos-6.repo
├──Dockerfile
├── epel-6.repo
├── jdk-8u121-linux-x64.tar.gz
└──supervisord.conf

编写Dockerfile

[root@node3 tomcat]# cat Dockerfile
#pull down centos image
FROM centos:centos6
MAINTAINER dennis52o1314@163.com
ADD epel-6.repo /etc/yum.repos.d/
ADD Centos-6.repo /etc/yum.repos.d/
RUN yum install -y supervisor
RUN mkdir -p /var/log/supervisor
ADD ./apache-tomcat-7.0.76.tar.gz /opt
ADD ./jdk-8u121-linux-x64.tar.gz /opt
#set environment variable
ENV JAVA_HOME /opt/jdk1.8.0_121
ENV PATH $JAVA_HOME/bin:$PATH
ENV CATALINA_HOME /opt/apache-tomcat-7.0.76  
ENV PATH $PATH:$CATALINA_HOME/bin
EXPOSE 8080
COPY supervisord.conf /etc/supervisor/supervisord.conf
CMD supervisord -c /etc/supervisor/supervisord.conf