基于容器的镜像制作
制作本地局域网yum源
安装vsftpd软件
yum install -y vsftpd
启动ftp
systemctl enable vsftpd
systemctl start vsftpd
上传系统进行到虚拟机
#镜像可以去各大镜像站下载,上传后镜像后挂在到指定目录
mount -o loop /mnt/CentOS-6.9-x86_64-bin-DVD1.iso /var/ftp/centos6.9/
mount -o loop /mnt/CentOS-7-x86_64-DVD-1804.iso /var/ftp/centos7.5/
配置yum仓库
mkdir -p /var/ftp/centos6.9
mkdir -p /var/ftp/centos7.5
cat >/etc/yum.repos.d/ftp_6.repo <<EOF
[ftp]
name=ftpbase
baseurl=ftp://10.0.0.100/centos6.9
enabled=1
gpgcheck=0
EOF
cat >/etc/yum.repos.d/ftp_7.repo <<EOF
[ftp]
name=ftpbase
baseurl=ftp://10.0.0.100/centos7.5
enabled=1
gpgcheck=0
EOF
通过浏览器查看
ftp://10.0.0.100
基于容器的镜像制作-Aliyun ECS(Centos6.9_sshd 单服务)
启动基础镜像容器
docker pull centos:6.9
docker container run -it --name="1997sty_centos" 2199b8eb8390
容器中操作安装ssh
#移走原有文件
mv /etc/yum.repos.d/* /tmp/
#创建新的yum源
cat >/etc/yum.repos.d/ftp_6.repo <<EOF
[ftp]
name=ftpbase
baseurl=ftp://172.17.0.1/centos6.9
enabled=1
gpgcheck=0
EOF
#用命令让配置生效
yum clean all
yum makecache
#安装对应软件
yum install -y openssh-server
#启动一次sshd服务(第一次启动会生成密钥对)
/etc/init.d/sshd start
#给容器中的root用户设置密码
passwd
宿主机ssh登录验证
#登录容器(需要设置密码)
ssh 172.17.0.10
#登录后可以看到ssh相关进程
docker container top 1997sty_centos
基于当前容器生成镜像
#生成新的镜像
docker commit 1997sty_centos 1997sty/centos6.9_sshd:v1
#查看镜像
[root@home ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
1997sty/centos6.9_sshd v1 73a4c56c7546 45 seconds ago 340 MB
centos 6.9 2199b8eb8390 14 months ago 195 MB
启动容器
- --name=sshd_2222 : 容器命名为sshd_2222
- -p 2222:22 : 将容器22端口映射到宿主机2222端口
- /usr/sbin/sshd -D : 启动sshd服务在前台运行,如果使用
/etc/init.d/sshd start
,执行完命令后容器会直接关闭
docker container run -d --name=sshd_2222 -p 2222:22 73a4c56c7546 /usr/sbin/sshd -D
构建企业网站定制镜像(Centos6.9_SSHD_LAMP_BBS)
创建数据卷目录
mkdir -p /opt/vol/mysql /opt/vol/html
启动基础镜像容器
docker run -it --name="1997sty_centos_bbs" -v /opt/vol/mysql:/var/lib/mysql -v /opt/vol/html:/var/www/html centos:6.9
容器中操作安装ssh lamp环境
#移走原有文件
mv /etc/yum.repos.d/* /tmp/
#创建新的yum源
echo -e "[ftp]\nname=ftp\nbaseurl=ftp://172.17.0.1/centos6.9\ngpgcheck=0">/etc/yum.repos.d/ftp.repo
#用命令让配置生效并安装对应软件
yum makecache fast && 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 root --stdin
#mysqld初始化
/etc/init.d/mysqld start
#登录mysql执行以下命令
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
基于当前容器生成第一版基础镜像
#生成新的镜像
docker commit 1997sty_centos_bbs 1997sty/centos_lamp:v1
#查看镜像
[root@home ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
1997sty/centos_lamp v1 f30af1e8537c 8 seconds ago 415 MB
根据第一版镜像启动新容器
docker run -it --name="1997sty_centos_bbs_v2" -v /opt/vol/mysql:/var/lib/mysql -v /opt/vol/html:/var/www/html -p 90:80 f30af1e8537c
容器中操作启动httpd和mysqld
/etc/init.d/mysqld start
/etc/init.d/httpd start
容器中操作测试php功能
#修改文件后访问宿主机的90端口进行验证
cat >/var/www/html/index.php <<EOF
<?php
phpinfo();
?>
EOF
安装bbs论坛
- 上传bbs代码到宿主机/opt/vol/html并解压,需要保证该目录有可读可写权限
- Discuz_X3.3_SC_GBK.zip
制作LAMP+bbs第二版镜像
docker commit 1997sty_centos_bbs_v2 1997sty/centos6.9_sshd_lamp_bbs:v1
创建启动脚本并修改脚本权限
cat > /opt/vol/html/init.sh <<EOF
#!/bin/bash
/etc/init.d/mysqld start
/etc/init.d/httpd start
/usr/sbin/sshd -D
EOF
chmod 777 /opt/vol/html/init.sh
启动容器,映射端口,挂载数据卷,自动启动多服务
docker container run -d --name="1997sty_lamp_bbs" -v /opt/vol/mysql:/var/lib/mysql -v /opt/vol/html:/var/www/html -p 22222:22 -p 8888:80 -p 33060:3306 7fbe0892eda0 /var/www/html/init.sh
centos:7.5.1804_sshd
启动基础镜像容器
docker run -it --name=c75sshd centos:7.5.1804
容器中操作安装ssh
#移走原有文件
mv /etc/yum.repos.d/* /tmp/
#创建新的yum源
echo -e "[ftp]\nname=ftp\nbaseurl=ftp://172.17.0.1/centos7.5\ngpgcheck=0">/etc/yum.repos.d/ftp.repo
#用命令让配置生效并安装对应软件
yum makecache fast && yum install openssh-server -y
#初始化sshd服务(第一次会生成密钥对)
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 afffbc4cb114 1997sty/centos7.5_sshd
#查看镜像
[root@home ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
1997sty/centos7.5_sshd latest 91315ca27116 4 seconds ago 244 MB
启动容器
- --name=sshd_222 : 容器命名为sshd_222
- -p 222:22 : 将容器22端口映射到宿主机222端口
- /usr/sbin/sshd -D : 启动sshd服务在前台运行,如果使用
/etc/init.d/sshd start
,执行完命令后容器会直接关闭
docker container run -d --name=sshd_222 -p 222:22 91315ca27116 /usr/sbin/sshd -D
通过Dockerfile定制镜像
- 创建
Dockerfile
文件,根据实际操作情况编写文件,执行该文件生成对应镜像 - 构建镜像过程中每一步都会生成一个临时镜像,以方便构建错误时查看情况
Dockerfile常用指令
- FROM : 指定基础镜像
FROM centos:6.9
FROM centos@2199b8eb8390
- RUN : 构建镜像过程中运行的命令
RUN mv /etc/yum.repos.d/*.repo /tmp && echo -e
- EXPOSE : 向外暴露的端口
EXPOSE 22
- CMD : 使用镜像启动容器时运行的命令
CMD ["/usr/sbin/sshd","-D"]
- COPY : 从dockerfile所在目录,拷贝目标文件到容器的制定目录下,可以支持统配符,如果拷贝的是目录,只拷贝目录下的子文件子目录
COPY init.sh /
- ADD : 除了COPY命令的功能以外,还可以自动解压.tar*的软件包到目标目录下,可以指定源文件为URL地址
ADD index.tar.gz
ADD https://mirrors.aliyun.com/centos/7.8.2003/os/x86_64/Packages/adwaita-qt-1.0-1.el7.x86_64.rpm /tmp
- VOLUME : 使用基映像中指定位置的任何数据初始化新创建的卷
VOLUME ["/var/www/html","/data/mysql/data"]
- ENV : 设置变量
ENV CODEDIR /var/www/html/
ENV DATADIR /data/mysql/data
ADD bbs.tar.gz ${CODEDIR}
VOLUME ["${CODEDIR}","${DATADIR}"]
- ENTRYPOINT : 指定在启动容器时第一个进程,不会被手工输入的命令替换掉,防止容器秒起秒关
ENTRYPOINT ["/usr/sbin/sshd","-D"]
Dockerfile的基本使用(centos6.9_sshd)
创建目录并进入
mkdir -p /opt/dockerfile/centos6.9_sshd
cd /opt/dockerfile/centos6.9_sshd
编辑文件导入以下内容
vi Dockerfile
# Centos6.9-SSHDv1.0
FROM centos:6.9
RUN mv /etc/yum.repos.d/*.repo /tmp && echo -e "[ftp]\nname=ftp\nbaseurl=ftp://172.17.0.1/centos6.9\ngpgcheck=0">/etc/yum.repos.d/ftp.repo && yum makecache fast && yum install openssh-server -y
RUN /etc/init.d/sshd start && /etc/init.d/sshd stop && echo "123456" | passwd root --stdin
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]
构建镜像
docker build -t "197sty/centos6.9_sshd:v1.0" ./
查看构建的镜像
[root@home centos6.9_sshd]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
197sty/centos6.9_sshd v1.0 93efea3b6b54 18 seconds ago 331 MB
dockerfile构建Lamp基础环境镜像
创建目录并进入
mkdir -p /opt/dockerfile/lamp
cd /opt/dockerfile/lamp
编辑文件导入以下内容
vi Dockerfile
# Centos6.9_sshd_LAMP
FROM centos:6.9
RUN mv /etc/yum.repos.d/*.repo /tmp && echo -e "[ftp]\nname=ftp\nbaseurl=ftp://172.17.0.1/centos6.9\ngpgcheck=0">/etc/yum.repos.d/ftp.repo && yum makecache fast && 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 index.php /var/www/html/
ADD https://mirrors.aliyun.com/centos/7.8.2003/os/x86_64/Packages/adwaita-qt-1.0-1.el7.x86_64.rpm /tmp
EXPOSE 22
EXPOSE 80
EXPOSE 3306
CMD ["/bin/bash","/init.sh"]
- index.php
vi index.php
<?php phpinfo(); ?>
- init.sh
vi init.sh
#!/bin/bash
/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;"
/etc/init.d/httpd start
/usr/sbin/sshd -D
构建镜像
docker build -t "centos6.9_lamp:v1.0" ./
查看构建的镜像
[root@home lamp]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
centos6.9_lamp v1.0 9652a9c1da95 9 seconds ago 437 MB
最后一次更新于2020-06-02 15:34
0 条评论