一:自从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 -f /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:打包文件: