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


分享到:


相關文章: