各种常规服务的Dockerfile
1.ssh免密登陆(远程)
vim Dockerfile
FROM centos:7
MAINTAINER The CentOS Project <cloud-centos>
RUN yum -y update
RUN yum -y install openssh* net- tools lsof telnet passwd
RUN echo '123456' | passwd --stdin root
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_ config
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN sed -i '/^session\s\+requred\s\+pam_loginuid.so/s/^/#/' /etc/pam.d/sshd
RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh
EXPOSE 22
CMD ["/usr/sbin/sshd" , "-D"]
docker build -t sshd:new . 生成镜像
docker ps -a | awk '{print "docker rm "$1}' | bash 批量删除镜像
docker run -d -P sshd:new 启动容器并修改root密码
ssh localhost -p 32770
2. systemctl系统命令
mkdir systemctl
cd systemctl
vim Dockerfile
FROM sshd:new
ENV container docker
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/socket. 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"]
docker build -t systemd:new .
docker run --privileged -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro systemd:new /sbin/init &
docker exec -it cbb185912d04 /bin/bash 不做降权处理
systemctl start sshd
3.nginx容器
mkdir nginx
cd nginx
//拷贝nginx-1.12.0源码包到nginx/中
vim Dockerfile
#基于基础镜像
FROM centos:7
#用户信息
MAINTAINER this is nginx image <wang>
#添加环境包
RUN yum -y update
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin nginx
#下载nginnx软件包
ADD nginx-1.12.0.tar.gz /usr/local/src
WORKDIR /usr/local/src
#指定工作目录
WORKDIR 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
#添加宿主机中run.sh到容器中
ADD run.sh /sun.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]
ENV:后加上原本的环境变量
将 run.sh添加到容器中
给执行权
容器启动时执行这个脚本 即执行命令
nginx源码包放到Dockfile同级别目录中
做个启动脚本(不需要给执行权限 因为添加过来就有执行权限了)
4.tomcat容器
vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx
docker build -t nginx:new . 有一个warning正常
docker images 看 是手动定义安装的镜像
docker run -d -P nginx:new 创建容器 up着(是nginx基于centos的容器 运行着)
docker ps -a
FROM centos:7
MAINTAINER this is tomcat
ADD jdk-8u9i-linux-x64.tar.gz /usr/local/src
WORKDIR /usr/local/src/
RUN mv jdk1.8.0_91 /usr/local/java
ENV JAVA_HOME /usr/local/java
ENV JAVA_BIN /usr/local/java/bin
ENV JRE_HOME /usr/local/java/jre
ENV PATH $PATH:/usr/local/java/bin:/usr/local/java/jre/bin
ENV CLASSPATH /usr/local/java/bin:/usr/local/java/lib:/usr/local/java/lib/charsets.jar
ADD apache-tomcat-8.5.16.tar.gz /usr/local/
WORKDIR /usr/local/
RUN mv apache-tomcat-8.5.16 /usr/local/tomcat8
EXPOSE 8080
ENTRYPOINT ["/usr/local/tomcat8/bin/catalina.sh","run"]
docker build -t tomcat:new0 . 构建tomcat镜像
docker run -d -P tomcat:new0运行tomcat容器