Docker生产案例

一:自从2013年Docker诞生以来Docker就持续火热,也推动了相关技术生态的快速成长。企业的应用需求纷繁复杂,Docker不可能解决企业客户的所有需求,因此Docker相关技术层出不穷,进一步带动了Docker在企业的落地,丰富了Docker的生态圈,本文将站在企业的角度设计如何使用Docker:

1.1:Dockerfile的规划:

1.1.1:按照不同的功能将不同的Dockerfile分类保存,便于区分和保存,Dockerfile要定期做备份:

<code>[root@docker-server1 docker]# tree 
.
├── app #对应用进行分类
│   ├── nginx-web
│   └── tomcat-user
├── system #对系统进行分类
│   ├── Centos
│   ├── RHEL
│   └── Ubuntu
└── test #测试的镜像分类
├── test-nginx-web
└── test-tomcat
#对xx进行分类
。。。。。。。。。/<code>

1.1.2:基础系统镜像的Dockerfile,安装好基础软件并设置密码:

<code>[root@docker-server1 centos]# pwd
/opt/docker/system/centos

#Docker For CentOS 7.2
#Base images centos 7.2
FROM centos

#Author
MAINTAINER ZhangJie

#Yum Setting
ADD epel.repo /etc/yum.repos.d/epel.repo
ADD CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo

#rpm install
RUN yum install -y openssh-server openssh-clients  openssl openssl-devel vim wget net-tools mysql-dev mysql supervisor git redis tree sudo psmisc lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute  && yum clean all

#For SSHD
RUN ssh-keygen -t rsa -f  /etc/ssh/ssh_host_rsa_key

RUN ssh-keygen -t ecdsa -f   /etc/ssh/ssh_host_ecdsa_key
RUN echo "root:123456" | chpasswd/<code>

1.1.3:构建基础系统镜像:

<code>[root@docker-server1 Centos]# pwd
/opt/docker/system/Centos
[root@docker-server1 Centos]# docker build -t  jack/ssh-centos . #构建成一个安装好基础环境的基础镜像,后期即可通过此基础镜像构建不同的业务镜像/<code>

1.2:基于上一步骤的基础镜像构建应用镜像,如还是nginx的:

1.2.1:Dockerfile文件内容:

<code>[root@docker-server1 nginx-web]# pwd
/opt/docker/app/nginx-web
[root@docker-server1 nginx-web]# cat Dockerfile
from jack/ssh-centos
MAINTAINER Jack.Zhang [email protected]
run yum install nginx -y
run echo "daemon off;" >> /etc/nginx/nginx.conf
run echo "test nginx page" > /usr/share/nginx/html/index.html
expose 80 443
cmd ["nginx"]/<code>

1.2.2:执行构建镜像:

<code>[root@docker-server1 nginx-web]# pwd
/opt/docker/app/nginx-web
[root@docker-server1 nginx-web]# docker build -t jack/nginx-base:v1 . #构建成一个可以提供web服务的nginx镜像/<code>

二:基于可以ssh的镜像构建可以访问web界面并可以ssh连接的镜像:

<code>[root@docker-server1 shop-api]# pwd
/opt/docker/app/shop-api
[root@docker-server1 shop-api]# cat Dockerfile
#Base image
FROM jack/ssh-centos

#Maintainer
MAINTAINER kf

# Add www user
RUN useradd -s /sbin/nologin -M www

#install pip
RUN yum install -y python-devel python-pip supervisor

# Upgrade pip
RUN pip install --upgrade pip

# ADD file
ADD app.py /opt/app.py
ADD requirements.txt /opt/
ADD supervisord.conf /etc/supervisord.conf
ADD app-supervisor.ini /etc/supervisord.d/

# pip
RUN /usr/bin/pip2.7 install -r /opt/requirements.txt

# Port
EXPOSE 22 5000

#CMD
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]/<code>

2.2:构建新镜像:

<code>[root@docker-server1 shop-api]# pwd
/opt/docker/app/shop-api
[root@docker-server1 shop-api]# docker build -t jack/pythonweb-ssh-centos ./<code>

2.3:从构建的镜像启动容器:

<code>[root@docker-server1 shop-api]# docker run --name web-ssh  -d -p  9901:5000 -p  9902:22  jack/pythonweb-ssh-centos
14b4ef1d50ec2c16641692dbdb0d6962ec1495187456916206780f6055bfeb46/<code>

2.4:测试访问web界面:

Docker生产案例

2.5:测试是否可以ssh连接:

Docker生产案例

2.6:打包文件:

docker.tar


分享到:


相關文章: