ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Dockerfile 案例之 SSh、systemctl、nginx、tomcat、mysql镜像

2021-10-19 11:31:18  阅读:133  来源: 互联网

标签:systemd tomcat sshd system nginx systemctl ssh 镜像 root


Dockerfile 案例之 SSh、systemctl、

一、Dockerfile之SSH镜像构建

mkdir /opt/sshd
cd /opt/sshd
#基础镜像 FROM centos #镜像维护人信息 MAINTAINER this is ssh image <ht> #更新基于镜像yum源 RUN yum -y update #在基于镜像上安装软件 #openssh是SSH协议的免费开源实现 #net-tools组件可支持使用ifconfig命令查看网卡信息 #lsof查看进程打开的文件、打开文件的进程、进程打开的端口 #telnet支持远程登陆 #passwd用于设置密码,更新用户身份令牌 RUN yum -y install openssh* net-tools lsof telnet passwd #更改root用户密码为abc1234 RUN echo 'abc1234' | passwd --stdin root #将ssh服务端配置文件中所有的UsePAM yes替换为UsePAM no,关闭第三方认证登陆,别人都无法远程登陆该主机 RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config #创建非密钥对文件,生成到/etc/ssh/目录下为ssh_host_rsa_key RUN sed -i '/^session\s+required\s+pam_loginuid.so/ s/^/#/' /etc/pam.d/sshd
RUN ssh-keygen -t rsa -A # 生成秘钥认证文件 #嵌套创建/root/.ssh目录并且将/root目录属主和属组改为root并且为/root/.ssh目录赋权700,只有root用户可读写执行 RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh #指定端口22 EXPOSE 22 #在运行容器时启动ssh服务,并开启守护进程 CMD ["/usr/sbin/sshd","-D"] #构建新镜像, docker build -t sshd:centos . #后台运行并启动容器,修改root密码
docker run -d -P sshd:centos
docker ps -a
ssh localhost -p 49153

二、Dockerfile之构建systemctl镜像

mkdir /opt/systemctl
cd /opt/systemctl

vim Dockerfile
# 指定基础镜像为之前的sshd容器进行
FROM sshd:centos
MAINTAINER this is systemctl image <wl>
ENV container docker  指定环境变量
#除了systemd-tmpfiles-setup.service,删除其它所有文件
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \    
rm -f /lib/systemd/system/multi-user.target.wants/*; \
rm -f /etc/systemd/system/*.wants/*; \
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;

#创建数据卷,用于挂载到宿主目录
VOLUME [ "/sys/fs/cgroup" ]
#启动容器时,用于init命令将系统初始化,作为容器的第一个进程,但是如果之前镜像中有CMD命令或 ENTRYPOINT 命令会覆盖或者只执行最后一条CMD命令
CMD ["/usr/sbin/init"] //生成新的镜像 docker build -t systemd:centos . //启动容器,并挂载宿主机目录挂载到容器中,和进行初始化 docker run --privileged -it -v /sys/fs/cgroup:/sys/fs/cgroup:ro systemd:centos /sbin/init & #--privileged:使container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。 docker ps -a //进入容器 docker exec -it a0d624d2bfa9 bash systemctl status sshd 方法二: docker run -d -P --privileged sshd:centos /usr/sbin/init &

 

 

 

 

 

标签:systemd,tomcat,sshd,system,nginx,systemctl,ssh,镜像,root
来源: https://www.cnblogs.com/yhtweirdo/p/15403951.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有