目录
一、构建SSH镜像
1.1 dockerfile文件内容
1.2 生成镜像
1.3 启动容器并修改root密码
二、构建Systemctl镜像
2.1 编辑dockerfile文件
编辑2.2 生成镜像
2.3 启动容器,并挂载宿主机目录挂载到容器中,然后进行初始化
2.4 进入容器验证
三、构建nginx镜像
3.1 dockerfile文件内容
3.2 运行脚本文件内容
3.3 创建新镜像
3.3.1 构建
3.3.2 使用该镜像创建容器
3.3.3 浏览器验证
四、构建tomcat 镜像
4.1 dockerfile文件内容
4.2 创建新镜像
4.3 创建并启动容器
4.4 浏览器验证tomcat
一、构建SSH镜像
cd /home/sshd
vim dockerfile
1.1 dockerfile文件内容
#第一行必须指明基于的基础镜像
FROM centos:7
#作者信息
MAINTAINER this is ssh image <txy>
#镜像的操作指令
RUN yum -y update
RUN yum -y install openssh* net-tools lsof telnet passwd
RUN echo 'abc1234' | passwd --stdin root
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config #不使用PAM认证
RUN sed -ri '/^session\s+required\s+pam_loginuid.so/ s/^/#/' /etc/pam.d/sshd #取消pam限制
RUN ssh-keygen -t rsa -A #生成密钥认证文件
RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh
EXPOSE 22
CMD ["/usr/sbin/sshd" , "-D"] #/usr/sbin/sshd -D 用于前台启动sshd服务
1.2 生成镜像
docker build -t sshd:centos .
1.3 启动容器并修改root密码
docker run -d -P sshd:centos
docker ps -a
ssh localhost -p 32773
二、构建Systemctl镜像
mkdir /home/systemctl
cd /home/systemctl
2.1 编辑dockerfile文件
vim Dockerfile
FROM sshd:centos
MAINTAINER this is systemctl image <txy>
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" ]
#CMD ["/usr/sbin/init"]
2.2 生成镜像
docker build -t systemd:centos .
2.3 启动容器,并挂载宿主机目录挂载到容器中,然后进行初始化
docker run --privileged -d -P -v /sys/fs/cgroup:/sys/fs/cgroup:ro systemd:centos /sbin/init
docker ps -a
#--privileged:使container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。
2.4 进入容器验证
docker exec -it 84eec5b36501 bash
systemctl status sshd
三、构建nginx镜像
mkdir /home/nginx
cd /home/nginx/
cp /opt/nginx-1.16.0.tar.gz /home/nginx
vim dockerfile
3.1 dockerfile文件内容
#基于基础镜像
FROM centos:7
#用户信息
MAINTAINER this is nginx image <txy>
#添加环境包
RUN yum -y update
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin nginx
#上传nginx软件压缩包,并解压
ADD nginx-1.12.0.tar.gz /opt/
#指定工作目录
WORKDIR /opt/nginx-1.12.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin:$PATH
#指定http和https端口
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf #关闭 nginx 在后台运行
#添加宿主机中run.sh到容器中
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]
#CMD ["/usr/local/sbin/nginx", "-g", "daemon off;"]
3.2 运行脚本文件内容
vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx
3.3 创建新镜像
3.3.1 构建
docker build -t nginx:centos .
3.3.2 使用该镜像创建容器
docker run -d --name txy -p 11111:80 nginx:centos
docker ps -a
3.3.3 浏览器验证
http://192.168.10.20:11111
四、构建tomcat 镜像
mkdir /home/tomcat
cd /home/tomcat
cp /home/jdk-8u291-linux-x64.tar.gz /home/tomcat
cp /home/apache-tomcat-8.5.16.tar.gz /home/tomcat
4.1 dockerfile文件内容
vim dockerfile
FROM centos:7
MAINTAINER this is tomcat image <txy>
ADD jdk-8u291-linux-x64.tar.gz /usr/local/
WORKDIR /usr/local/
RUN mv jdk1.8.0_291 /usr/local/java
ENV JAVA_HOME /usr/local/java
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH $JAVA_HOME/bin:$PATH
ADD apache-tomcat-8.5.16.tar.gz /usr/local/
WORKDIR /usr/local/
RUN mv apache-tomcat-8.5.16 /usr/local/tomcat
EXPOSE 8080
#CMD ["/usr/local/tomcat/bin/catalina.sh","run"]
ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh","run"]
CMD ["/usr/local/tomcat/bin/startup.sh","start"]
4.2 创建新镜像
docker build -t tomcat:centos .
4.3 创建并启动容器
docker run -d --name tomcat01 -p 2002:8080 tomcat:centos
4.4 浏览器验证tomcat
http://192.168.10.20:2002