1、通过容器制作镜像
1.1、centos6.9_sshd
#宿主机操作:启动容器
docker pull centos:6.9
docker run -it --name "centos69" 2199b8eb8
#容器内操作:配置源,启动服务
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/* /etc/yum.repos.d/bak/ /dev/null
curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.xmpan.com/Centos-6-Vault-Aliyun.repo
yum clean all
yum makecache
yum install openssh-server -y
/etc/init.d/sshd start
/etc/init.d/sshd stop
echo "123456" | passwd --stdin root
#宿主机操作:制造镜像
docker commit centos69 love2/centos6.9_sshd:v1
#基于新镜像启动容器实现,centos6.9+sshd的功能
docker container run -d --name "sshd_2222" -p 2222:22 14b7b3f0ef80 /usr/sbin/sshd -D
1.2、centos6.9_lamp
#启动基础镜像容器
docker container rm -f `docker ps -aq`
m -rf /opt/*
mkdir -p /opt/vol/mysql /opt/vol/html
docker run -it --name "centos_bbs" -v /opt/vol/mysql:/var/lib/mysql -v /opt/vol/html:/var/www/html centos:6.9
#优化yum源并安装软件
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/* /etc/yum.repos.d/bak/ /dev/null
curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.xmpan.com/Centos-6-Vault-Aliyun.repo
yum clean all
yum makecache
yum install openssh-server htppd mysql mysql-server php php-mysql -y
# sshd 初始化
/etc/init.d/sshd start
/etc/init.d/sshd stop
echo "123456" | passwd --stdin root
#mysqld 初始化
/etc/init.d/mysqld start
mysql -e "grant all on *.* to root@'%' identified by '123';grant all on *.* to discuz@'%' identified by '123';create database discuz charset utf8;"
#apache初始化
/etc/init.d/httpd start
#添加启动脚本
cat >/init.sh<<-EOF
#!/bin/bash
/etc/init.d/mysqld start
/etc/init.d/httpd start
/usr/sbin/sshd -D
EOF
chmod 777 /init.sh
#制作LAMP镜像
docker commit 07994ea9fd53 love2/centos_lamp:v1
#根据镜像,启动新容器
docker run -d --name="centos_bbs" -v /opt/vol/mysql:/var/lib/mysql -v /opt/vol/html:/var/www/html -p 8080:80 -p 2222:22 -p 3306:3306 4dc5e602cb7f /init.sh
#测试php功能
cat >/opt/vol/html/index.php<<-EOF
<?php
phpinfo();
?>
EOF
#安装bbs论坛
上传bbs代码到宿主机/opt/vol/html并解压
unzip Discuz_X3.4_SC_UTF8_20210119.zip -d /opt/vol/html/
1.3、centos:7.6_sshd
#宿主机操作:启动容器
docker pull centos:7.6.1810
docker run -it --name "centos76" f1cb7c7d58
#容器内操作:配置源,启动服务
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/* /etc/yum.repos.d/bak/ &>/dev/null
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
yum install openssh-server -y
mkdir /var/run/sshd
echo 'UseDNS no' >> /etc/ssh/sshd_config
sed -i -e '/pam_loginuid.so/d' /etc/pam.d/sshd
echo 'root:123456' | chpasswd
/usr/bin/ssh-keygen -A
#宿主机操作:制造镜像
docker commit centos76 love2/centos7.6_sshd:v1
#基于新镜像启动容器实现,centos7.6+sshd的功能
docker container run -d --name "sshd_2222" -p 2222:22 78294c119a10 /usr/sbin/sshd -D
2、dockerfile
2.1、dockerfile指令解释
FROM: 基础镜像
FROM centos:6.9
RUN: 构建镜像过程中运行的命令
RUN ["mysqld","--initialize-insecure","--user=mysql" ,"--basedir=/usr/local/mysql","--datadir=/data/mysql/data"]
EXPOSE: 向外暴露的端口
EXPOSE 22
CMD 使用镜像启动容器时运行的命令
CMD ["/usr/sbin/sshd","-D"]
ENTRYPOINT 在启动容器时,第一进程不会被手工输入的命令替换掉。
COPY命令: 从dockerfile所在目录,拷贝目标文件到容器的制定目录下。
可以支持统配符,如果拷贝的是目录,只拷贝目录下的子文件子目录。
cp oldguo/*
ADD
<src>... <dest>
url <dest>
比COPY命令多的功能是,可以自动解压.tar*的软件包到目标目录下
可以指定源文件为URL地址
VOLUME 数据卷目录
["/var/www/html","/data/mysql/data"]
WORKDIR 切换目录
ENV 设定变量
ENV CODEDIR /var/www/html/
ENV DATADIR /data/mysql/data
ADD bbs.tar.gz ${CODEDIR}
VOLUME ["${CODEDIR}","${DATADIR}"]
ENTRYPOINT ["/bin/bash","/init.sh"]
2.2、centos69_sshd
#创建文件目录
mkdir -p /opt/dockerfile/centos69_sshd
#编写dockerfile
vim Dockerfile
# Centos6.9-SSHDv1.0
FROM centos:6.9
RUN rm -rf /etc/yum.repos.d/*;
curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.xmpan.com/Centos-6-Vault-Aliyun.repo;
yum clean all;yum makecache fast;yum install openssh-server -y;
/etc/init.d/sshd start;/etc/init.d/sshd stop;echo "123456" | passwd --stdin root
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]
#编译
docker build -t centos69/sshd:v1.0 .
#删除构建时候,生成的中间镜像
docker rmi $(docker image ls -a | grep "none" | awk '{print $3}')
2.3、centos6.9_lamp
#创建文件目录
mkdir -p /opt/dockerfile/lamp
cd /opt/dockerfile/lamp/
#编写dockerfile
vim Dockerfile
# Centos6.rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-6
FROM centos:6.9
RUN rm -rf /etc/yum.repos.d/*;
curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.xmpan.com/Centos-6-Vault-Aliyun.repo;
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6;
yum clean all;yum install openssh-server htppd mysql mysql-server php php-mysql -y
RUN /etc/init.d/sshd start;echo "123456" | passwd root --stdin;/etc/init.d/mysqld start;
/etc/init.d/httpd start
COPY init.sh /
ADD bbs.tar.gz /var/www/html/
VOLUME ["/var/lib/mysql","/var/www/html"]
EXPOSE 22
EXPOSE 80
EXPOSE 3306
CMD ["/bin/bash","/init.sh"]
#添加启动脚本
cat >init.sh<<-EOF
#!/bin/bash
/etc/init.d/mysqld start
mysql -e "grant all on *.* to root@'%' identified by '123';grant all on discuz.* to discuz@'localhost' identified by '123';create database discuz charset utf8;"
/etc/init.d/httpd start
/usr/sbin/sshd -D
EOF
#设置权限
chmod 777 init.sh
#编译
docker build -t centos69/lamp:v1.0 .
#删除构建时候,生成的中间镜像
docker rmi $(docker image ls -a | grep "none" | awk '{print $3}')