各种常规服务的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容器

posted @ 2020-11-30 12:00  wqhao  阅读(112)  评论(0编辑  收藏  举报