简单案列分析
1. 将容器作为数据卷来使用
mkdir -p /opt/vol/{a,b}
touch /opt/vol/a/a.txt
touch /opt/vol/b/b.txt
容器j卷的启动
docker container run -it "nginx_volumes" -v /opt/vol/a:/opt/a -v /opt/vol/b:/opt/b id /bin/bash
ctrl+p q
使用数据卷的容器
docker container run -d -p 8085:80 --volumes-from nginx_volumes --name="nginx1" nginx
docker container run -d -p 8086:80 --volumes-from nginx_volumes --name="nginx2" nginx
作用: 在集中管理集群中,大批量的容器都需要挂载相同的多个数据卷时,可以采用数卷容器进行统一管理
2. 制作本地局域网的yum源
步骤
1.安装vsftp
2.上传镜像文件,进行挂载
3.windows验证
yum install -y vsftpd
systemctl start vsftpd
systemctl enable vsftpd
mkdir -p /var/ftp/centos6.9
上传镜像文件
mount -o loop /mnt/CentOS-6.9-x86_64-bin-DVD1.iso /var/ftp/centos6.9/
df -h
注意,df -h的结果与下边一致,否则可能上传的镜像文件损坏了
配置文件:重要一步
6.9的
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
7.5的
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/centos6.9/
但是有的windows需要配置ftp
可以虚拟机
yum install -y lftp
ftp 192.168.80.201
默认的匿名账户ftp 不需要密码
ls即可
3. 基于容器的镜像制作,第二步要完成
3.1 sshd的镜像容器
步骤:
1.启动基础的镜像容器
2.安装需要的软件包
3.启动应用
4.镜像制作
5.实现功能
代码:
docker container run -it --name="sshd1" centos:6.9
进入容器内的操作
cd /etc/yum.repo.d/
mv ./* /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
/etc/init.d/sshd start
/etc/init.d/sshd stop
echo "123456" | passwd root --stdin
docker container commit sshd1 sshd1:v1
docker container run -d --name="ssh2" -p 2222:22 id
3.2 安装lamp(linux+apache+mysql+php)
步骤:
1.启动基础容器
2.优化yum,安装软件
3.软件初始化
4.制作第一镜像
5.启动第一镜像
6.测试php
代码:
mkdir /opt/vol/{mysql,html} -p
docker run -it --name="bbs1" -v /opt/vol/mysql:/var/lib/mysql -v /opt/vol/html:/var/www/html centos:6.9
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
/etc/init.d/sshd start
/etc/init.d/sshd stop
echo "123456" | passwd root --stdin
/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;
/etc/init.d/httpd start
docker commit c3fd597ec194 bbs1:v1
docker run -it --name="bbs2" -v /opt/vol/mysql:/var/lib/mysql -v /opt/vol/html:/var/www/html -p 8080:80 1cd314cba420
/etc/init.d/mysqld start
/etc/init.d/httpd start
测试:
vim /var/www/html/index.php
<?php
phpinfo();
?>
192.168.80.201:8080
3.3 安装discuz论坛,基于centos6.9
网站代码的下载地址:
https://gitee.com/3dming/DiscuzL/attach_files
尽量下载简体
上传bbs代码到宿主机/opt/vol/html并解压
yum install -y lrzsz
rz -E
unzip DX3.4_R20210630_TC_UTF8.zip
chmod -R 777 /opt/vol/html
docker commit bbs2 bbs:v1
创建启动脚本:
cd /opt/vol/html
vim init.sh
#!/bin/bash
/etc/init.d/mysqld start
/etc/init.d/httpd start
/usr/sbin/sshd -D
chmod 777 init.sh
docker container run -d --name="bbs3" -v /opt/vol/mysql:/var/lib/mysql -v /opt/vol/html:/var/www/html -p 22222:22 -p 8888:80 -p 33060:3306 ac8888ea3e21 /var/www/html/init.sh
浏览器访问:
我的discuz的源码目录是这样的,安装目录在upload下边,所以访问的地址在:8888是你自己映射的端口号
192.168.80.201:8888/upload
出现错误:
改图片的这个位置×:
解决:
cd /opt/vol/html/upload/config
ll
cp config_ucenter_default.php config_ucenter.php
cp config_global_default.php config_global.php
修改目录权限:
chmod -R 777 /opt/vol/html
刷新解决:
问题2:
连接数据库失败:
登录进去设置数据库账户密码:
docker containrt exec -it id /bin/bash
mysql
grant all on *.* to root@'%' identified by '123';
grant all on *.* to discuz@'%' identified by '123';
还不行就把其他没用的用户删除了,使用密码登录试试
select user,host from mysql.user;
delete from mysql.user where user="" and host="";
接下来注册登录就行了
4. 补充说明,centos7.5
centos:7.5.1804_sshd
mv /etc/yum.repos.d/*.repo /tmp
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
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 oldguo_c75sshd d2bcdbdfd0f8
docker container run -d --name=sshd_2222 -p 222:22 oldguo_c75sshd /usr/sbin/sshd -D