六:Docker生产案例

 

 

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

1.1:Dockerfile的规划:

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

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

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

[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 -/etc/ssh/ssh_host_rsa_key
RUN ssh-keygen -t ecdsa -f   /etc/ssh/ssh_host_ecdsa_key
RUN echo "root:123456" | chpasswd

1.1.3:构建基础系统镜像:

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

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

1.2.1:Dockerfile文件内容:

[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 123456@qq.com
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"]

1.2.2:执行构建镜像:

[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镜像

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

2.1:编辑Dockerfile,

[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 ZhangJie 

# 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"]

2.2:构建新镜像:

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

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

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

2.4:测试访问web界面:

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

2.6:打包文件:

docker.tar

原文地址:https://www.cnblogs.com/dengbingbing/p/12325071.html