Dockerfile 镜像实战(构建 SSH、Systemctl、Tomcat、Mysql 镜像)

发布时间:2022-07-02 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Dockerfile 镜像实战(构建 SSH、Systemctl、Tomcat、Mysql 镜像)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

一、构建 SSH 镜像

mkdir /opt/sshd
cd /opt/sshd
 
vim dockerfile
#第一行必须指明基于的基础镜像
From centos:7
#作者信息
MaiNTAINER this is ssh image <abc>
#镜像的操作指令
RUN yum -y update
RUN yum -y install oPEnssh* net-tools lsof telnet passwd
RUN echo 'abc123' | passwd --stdin root
RUN sed -i 's/UsePAM yes/UsePam no/g' /etc/ssh/sshd_config                      #不使用PAM认证
RUN sed -ri '/^sessions+requireds+pam_loginuid.so/s/^/#/' /etc/pam.d/sshd        #取消pam限制
RUN ssh-keygen -t rsa -A                                                          #生成密钥认证文件
RUN mkdir -p /root/.ssh && chown root.root /root &amp;& chmod 700 /root/.ssh
ExpOSE 22
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 镜像实战(构建 SSH、Systemctl、Tomcat、Mysql 镜像)

Dockerfile 镜像实战(构建 SSH、Systemctl、Tomcat、Mysql 镜像)

Dockerfile 镜像实战(构建 SSH、Systemctl、Tomcat、Mysql 镜像)

Dockerfile 镜像实战(构建 SSH、Systemctl、Tomcat、Mysql 镜像)

 

二、构建 Systemctl 镜像

mkdir /opt/systemctl
cd /opt/systemctl
 
vim Dockerfile
 
From sshd:centos
MAINTAINER this is systemctl image <ABC>
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"]
 
 
//生成镜像
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 &

Dockerfile 镜像实战(构建 SSH、Systemctl、Tomcat、Mysql 镜像)

Dockerfile 镜像实战(构建 SSH、Systemctl、Tomcat、Mysql 镜像)

Dockerfile 镜像实战(构建 SSH、Systemctl、Tomcat、Mysql 镜像)

 

三、构建 tomcat 镜像

mkdir /opt/tomcat
cd /opt/tomcat
cp /opt/jdk-8u91-linux-x64.tar.gz /opt/tomcat
cp /opt/apache-tomcat-8.5.16.tar.gz /opt/tomcat
 
vim Dockerfile
 
FROM centos:7
MAINTAINER this is tomcat image <XXX>
ADD jdk-8u91-linux-x64.tar.gz /usr/local/
WORKDIR /usr/local/
RUN mv jdk1.8.0_91 /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"]
 
 
//创建新镜像
docker build -t tomcat:centos .
 
docker run -d --name tomcat1 -p 1111:8080 tomcat:centos
  
http://20.0.0.6:1111

Dockerfile 镜像实战(构建 SSH、Systemctl、Tomcat、Mysql 镜像)

Dockerfile 镜像实战(构建 SSH、Systemctl、Tomcat、Mysql 镜像)

Dockerfile 镜像实战(构建 SSH、Systemctl、Tomcat、Mysql 镜像)

 

四、构建 MySQL 镜像

mkdir /opt/mySQLd
cd /opt/mysqld
 
vim Dockerfile
 
FROM centos:7
MAINTAINER this is mysql image <ly>
RUN yum -y install gcc gcc-c++ ncurses ncurses-devel bison @R_996_1512@ make
RUN useradd -M -s /sbin/noLOGin  mysql
ADD mysql-boost-5.7.20.tar.gz /usr/local/src/
WORKDIR /usr/local/src/mysql-5.7.20/
RUN cmake 
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql 
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock 
-DSYSCONFDIR=/etc 
-DSYSTEMD_PID_DIR=/usr/local/mysql 
-DDEFAULT_CHARSET=utf8  
-DDEFAULT_COLLATION=utf8_general_ci 
-DWITH_INNOBASE_STORAGE_ENGINE=1 
-DWITH_ArchIVE_STORAGE_ENGINE=1 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 
-DMYSQL_DATADIR=/usr/local/mysql/data 
-DWITH_BOOST=boost 
-DWITH_SYSTEMD=1 && make && make install
RUN chown -R mysql:mysql /usr/local/mysql/
RUN rm -rf /etc/my.cnf
ADD my.cnf /etc/
RUN chown mysql:mysql /etc/my.cnf
ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
WORKDIR /usr/local/mysql/
RUN bin/mysqld 
--initialize-insecure 
--user=mysql 
--basedir=/usr/local/mysql 
--datadir=/usr/local/mysql/data
RUN cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
EXPOSE 3306
ADD run.sh /usr/local/src
RUN chmod 755 /usr/local/src/run.sh
RUN sh /usr/local/src/run.sh
#CMD ["/usr/sbin/init"]
 
 
vim my.cnf
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
 
[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
 
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
 
sql_mode=NO_ENGINE_SubSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
 
 
vim run.sh
#!/bin/bash
/usr/local/mysql/bin/mysqld
systemctl enable mysqld
 
 
//创建新镜像
docker build -t mysql:centos .
 
//启动容器,并进行初始化
docker run --name=mysql_server -d -P --privileged mysql:centos /usr/sbin/init &
 
//进容器给权限
docker ps -a
CONTAINER ID   IMAGE          COMMAND             CREATED          STATUS          PORTS                     names
f9a4d8f6c65f   mysql:centos   "/usr/sbin/init"    17 seconds ago   Up 16 seconds   0.0.0.0:49153->3306/tcp   mysql_server
 
//进入容器,授权远程连接 mysql
docker exec -it f9a4d8f6c65f /bin/bash
 
mysql -u root -p
grant all privileges on *.* to 'root'@'%' identified by 'abc123';
grant all privileges on *.* to 'root'@'localhost' identified by 'abc123';
flush privileges;
 
//在客户端连接mysql容器
mysql -h 20.0.0.6 -u root -P 49153 -pabc123 

Dockerfile 镜像实战(构建 SSH、Systemctl、Tomcat、Mysql 镜像)

#编写 Dockerfile 文件vim Dockerfile FROM centos:7
MAINTAINER this is mysql image <ly>
RUN yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake make
RUN useradd -M -s /sbin/nologin  mysql
ADD mysql-boost-5.7.20.tar.gz /usr/local/src/
WORKDIR /usr/local/src/mysql-5.7.20/
RUN cmake 
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql 
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock 
-DSYSCONFDIR=/etc 
-DSYSTEMD_PID_DIR=/usr/local/mysql 
-DDEFAULT_CHARSET=utf8  
-DDEFAULT_COLLATION=utf8_general_ci 
-DWITH_INNOBASE_STORAGE_ENGINE=1 
-DWITH_ARCHIVE_STORAGE_ENGINE=1 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 
-DMYSQL_DATADIR=/usr/local/mysql/data 
-DWITH_BOOST=boost 
-DWITH_SYSTEMD=1 && make -j4 && make install
RUN chown -R mysql:mysql /usr/local/mysql/
ADD my.cnf /etc/my.cnf
RUN chown mysql:mysql /etc/my.cnf
ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
WORKDIR /usr/local/mysql/
RUN bin/mysqld 
--initialize-insecure 
--user=mysql 
--basedir=/usr/local/mysql 
--datadir=/usr/local/mysql/data
RUN cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
EXPOSE 3306
RUN systemctl enable mysqld
CMD ["/usr/sbin/init"]

Dockerfile 镜像实战(构建 SSH、Systemctl、Tomcat、Mysql 镜像)

Dockerfile 镜像实战(构建 SSH、Systemctl、Tomcat、Mysql 镜像)

Dockerfile 镜像实战(构建 SSH、Systemctl、Tomcat、Mysql 镜像)

 

脚本宝典总结

以上是脚本宝典为你收集整理的Dockerfile 镜像实战(构建 SSH、Systemctl、Tomcat、Mysql 镜像)全部内容,希望文章能够帮你解决Dockerfile 镜像实战(构建 SSH、Systemctl、Tomcat、Mysql 镜像)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。