云计算之 docker 02 自定义镜像

制作本地局域网yum源

1. 安装vsftpd软件
[root@docker ~]# yum install -y vsftpd
mkdir -p /var/ftp/centos6.9
mkdir -p /var/ftp/centos7.6

2. 启动ftp
[root@docker ~]# systemctl enable vsftpd
[root@docker ~]# systemctl start vsftpd

3. 上传系统进行到虚拟机
上传到/mnt
并挂载
mount -o loop /mnt/CentOS-6.9-x86_64DVD1.iso /var/ftp/centos6.9
mount -o loop /mnt/CentOS-7.6-x86_64-DVD-1810.iso /var/ftp/centos7.6
验证ftp 能否正常访问




++++++++ centos6.9 镜像制作
先启动一个容器,以centos6.9的基础镜像
docker run -it --name="xcentos69" 2199b8eb8390 /bin/bash

在容器中操作:
cd /etc/yum.repos.d/
mv ./* /tmp/
配置yum仓库
echo -e "[ftp]\nname=ftp\nbaseurl=ftp://172.17.0.1/centos6.9\ngpgcheck=0">/etc/yum.repos.d/ftp.repo
yum clean all
yum makecache
yum install -y openssh-server
/etc/init.d/sshd start
ssh在第一次启动时,会生成一个密钥对

passwd #为root用户设置密码
制作镜像:(宿主机上操作),安装的软件装完后,就可以重新制作一个,基于这个容器的镜像。
docker commit xcentos69 dfsc/centos6.9_sshd:v1
docker commit xcentos69#(容器名称) dfsc/centos6.9_sshd:v1##(制作的镜像名称)



启动容器的时候,把sshd 启动sshd ,做为第一个进程,一直启动。
docker container run -d --name=sshd 2648a608aac8 /etc/init.d/sshd -d ##前台启动,一直挂在那里。

++++++
# 7. 镜像制作
## 7.1 基于容器的镜像制作
## 例子1: Aliyum ECS (Centos6.9_sshd 单服务)
## 7.1.1 启动基础镜像容器(网上pull)
 docker run -it --name="oldguo_centos" centos:6.9

### 7.1.2 安装所需要的软件包,并且启动测试

mv /etc/yum.repos.d/*.repo /tmp
echo -e "[ftp]\nname=ftp\nbaseurl=ftp://172.17.0.1/pub/centos6\ngpgcheck=0">/etc/yum.repos.d/ftp.repo

yum makecache fast && yum install openssh-server -y
/etc/init.d/sshd start  ---->重要: ssh第一次启动时,需要生成秘钥,生成pam验证配置文件


/etc/init.d/sshd stop
echo "123456" |passwd --stdin

### 7.1.3 镜像的制作
docker commit xcentos69 dfsc/centos6.9_sshd:v1

### 4.1.4 基于新镜像启动容器实现,centos6.9+sshd的功能
docker container run -d --name=sshd_3222 -p 2222:22 2648a608aac8 /usr/sbin/sshd -D



+++++++++++++++++++++++++++++++

## 例子2: 构建企业镜像(Centos6.9_SSHD_LAMP_BBS(discuz3.4))

### 7.2.1 启动基础镜像容器(宿主机里面启动容器)
[root@docker ~]# mkdir -- /opt/vol/mysql /opt/vol/html
docker run -it --name="dfsc_centos_bbs" -v /opt/vol/mysql:/var/lib/mysql
-v /opt/vol/html:/var/www/html centos:6.9

### 7.2.2 优化yum源并安装软件 (在容器里面操作)
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 clean all
yum makecache
yum install openssh-server httpd mysql mysql-server php php-mysql -y

### 7.2.3 软件初始化
### sshd 初始化
/etc/init.d/sshd start
/etc/init.d/sshd stop
echo "windows@123" |passwd root --stdin


### mysqld 初始化

[root@c3fd597ec194 mysql]# /etc/init.d/mysqld start ##启动的时候会自动初始化

登录mysql ,创建用户
mysql> create database discuz charset utf8;
mysql> grant all on *.* to root@'%' identified by '123456';
mysql> grant all on *.* to discuz@'%' identified by '123456';
grant all on discuz.* to discuz@'127.0.0.1' identified by '123456';

### apache初始化
[root@c3fd597ec194 mysql]# /etc/init.d/httpd start

### 7.2.4 制作LAMP第一版基础镜像(宿主机上面操作)
[root@c3fd597ec194 mysql]# docker commit c70aafa49932 dfsc/centos6.9_lamp:v1



这时可以把这个容器down掉了,后面用不到了。

### 7.2.5 根据第一版镜像,启动新容器(宿主机上面操作)


docker run -it --name="dfsc_centos_bbs_v2" -v /opt/vol/mysql:/var/lib/mysql -v /opt/vol/html:/var/www/html -p 8080:80 83ab56d25c26

容器里面启动服务:
/etc/init.d/mysqld start
/etc/init.d/httpd start
验证Apache




### 7.2.6 测试php功能(容器里面操作)
vi /var/www/html/index.php 或者 宿主机 vim /opt/vol/html/index.php

<?php

phpinfo();

?>


### 7.2.7 安装bbs论坛
上传bbs(discuz3.4)代码到宿主机/opt/vol/html并解压
chmod o+w -R uc_* config data

安装
IE打开:
http://192.168.20.211:8080/install/



登录测试,用admin 登录,是否能正常登录。

### 7.2.8 制作 LAMP+bbs第二版镜像
docker commit a1519be4f782 dfsc/centos6.9_lamp_discuz3.4:v3


### 7.2.9 创建启动脚本 (容器在启动时,有且仅能启动一个主进程,而且这个进程必须要一直启动,不能停。)

在宿主机上面操作
[root@docker html]# cd /opt/vol/html
[root@docker html]# vim init.sh
#!/bin/bash
/etc/init.d/mysqld start
/etc/init.d/httpd start
/usr/sbin/sshd -D
[root@docker html]# chmod +x init.sh

### 7.2.10 启动容器,映射端口,自动启多服务
docker container run -d --name="dfsc_lamp_discuz3.4" -v /opt/vol/mysql:/var/lib/mysql -v /opt/vol/html:/var/www/html -p 2222:22 -p 8888:80 -p 33060:3306 51c8672191d8 /var/www/html/init.sh



# 7.3 centos7.6.1810_sshd
+++++++++++++++++++++
# 7.3.1 起容器
从网上下载镜像,并启动容器。
docker run -it --name=c76sshd centos:7.6.1810 ## 宿主机里面操作

容器里面操作:
mv /etc/yum.repos.d/*.repo /tmp
echo -e "[ftp]\nname=ftp\nbaseurl=ftp://172.17.0.1/centos7.6\ngpgcheck=0">/etc/yum.repos.d/ftp.repo
yum makecache fast && yum install openssh-server -y

手动生成密钥(类似于centos 6.9里面的/etc/init.d/sshd start

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

制作ssh的基础镜像 (sshd)
docker commit db746a103b05 dfsc76_sshd ##(宿主机上操作)


docker container rund -d –name=sshd_222 -p 222:22 dfsc76_sshd /usr/sbin/sshd -D
++++++++++++++++++++