Dockerfile編寫 支持systemctl ,支持ssh ,支持nginx,(容器自啓進程)

支持ssh+nginx+進程自啓的dockerfile

--------Dockerfile 1 -------------------------------------------------------------------------------------------
在同一目錄下編寫Dokerfile文件,以及提前copy authorized_keys 文件,支持ssh驗證,yum源如果下載不了自己配置源

vim Dockerfile

FROM centos:latest
MAINTAINER xiaoxue [email protected]
run  rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
RUN yum install -y nginx openssh-server sudo net-tools
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
RUN ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
ADD authorized_keys /root/.ssh/authorized_keys
#同一目錄下提前放置authorized_keys文件
RUN echo -e "#!/bin/sh \n/usr/sbin/sshd \n /usr/sbin/nginx -g 'daemon off;' " > /a.sh
#在配置entrypoint時候,最後一個進程要後臺運行,也就是守護進程關閉,如果sshd在最後加-D
run chmod +x /a.sh
EXPOSE  80 22
#CMD ["/usr/sbin/nginx","-g","daemon off;"]
ENTRYPOINT ["/a.sh"]

然後你就執行下面兩行
docker build -t nginx:1.1 .
docker run --name container1 -dit -p8080:80 -p2222:22 nginx:1.1
docker restart container1
試試容器重啓是不是nginx開啓,ssh可以連接了,ok。。。

如果你想支持systemctl,參考這個。

-----------Dockerfile 2------------------------------------------------------------------------------------------
在同一目錄下編寫Dokerfile文件,以及提前copy authorized_keys 文件,支持ssh驗證
vim Dockerfile

FROM centos:latest
MAINTAINER xiaoxue [email protected]
run  rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
RUN yum install -y nginx openssh-server sudo net-tools
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
RUN ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
#同一目錄下提前放置authorized_keys文件
ADD authorized_keys /root/.ssh/authorized_keys
RUN echo -e "#!/bin/sh  \nsystemctl enable nginx \nsystemctl enable sshd  " > /a.sh
run chmod +x /a.sh
run sh /a.sh
EXPOSE  80
#ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]
CMD ["init"]

然後你就執行下面兩行
docker build -t nginx:1.2 .
docker run --name container2 --privileged -dit -p222:22 -p880:80 nginx:1.2 init
docker restart container2
試試容器重啓是不是nginx開啓,ssh可以連接了,ok。。。
###########(cmd/entrypoit,區別在於cmd會被run指定命令覆蓋)##########

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章