Dockerfile编写 支持systemctl ,支持ssh ,支持nginx,(容器自启进程)
支持ssh+nginx+进程自启的dockerfile
--------Dockerfile 1 -------------------------------------------------------------------------------------------
在同一目录下编写Dokerfile文件,以及提前copy authorized_keys 文件,支持ssh验证,yum源如果下载不了自己配置源
vim Dockerfile
FROM centos:latest MAINTAINER xiaoxue xiaoxuenice@qq.com 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 xiaoxuenice@qq.com 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指定命令覆盖)##########
- Docker使用Dockerfile创建支持ssh服务自启动的容器镜像
- Dockerfile创建支持ssh服务自启动的容器
- Docker使用Dockerfile创建支持ssh服务自启动的容器镜像
- 使用Dockerfile构建支持ssh服务自启动的容器镜像
- Docker实战:使用Dockerfile创建带nginx服务并支持ssh的Centos Docker镜像
- Docker使用Dockerfile创建支持ssh服务自启动的容器镜像
- Docker使用Dockerfile创建支持ssh服务自启动的容器镜像
- Docker使用Dockerfile创建支持ssh服务自启动的容器镜像
- docker 安装 创建支持ssh服务的镜像 创建nginx服务的镜像 用dockerfile制作nginx镜像
- Docker使用Dockerfile创建支持ssh服务自启动的容器镜像
- Docker使用Dockerfile创建支持ssh服务自启动的容器镜像
- 使用Dockerfile创建支持ssh服务自启动的容器镜像
- Docker实战:使用Dockerfile创建带Apache服务并支持ssh的Centos Docker镜像
- Docker创建支持ssh服务的容器和镜像
- Docker创建支持ssh服务的容器和镜像
- docker 支持ssh远程容器
- 使用Dockerfile创建nginx服务容器镜像
- 通过Dockerfile创建支持SSH服务的CentOS镜像
- Docker创建支持ssh服务的容器和镜像
- Dockerfile创建一个tomcat_java_ssh_vim容器镜像