day105 容器化部署案例的学习
day105 容器化部署案例的学习
后面的内容会更加的连贯
做好理论+ 实践
加油的干,干就完了

docker容器技术
docker 安装部署
dockerfile构建镜像
企业级别仓库Harbor
docker网络模式
docker容器单机编排
docker容器跨主机通信
docker综合应用
docker部署的案例
wordpress容器化的部署
为什么要容器化的部署
为了就是利用容器提供的隔绝名称空间,彻底的解决软件依赖的问题,特别是php这种语言,经常性的需要更新,出现漏洞版本的问题,以及太多的版本,太多的依赖,难以管理将你的宿主机搞得环境很乱。
2.具体如何描述容器化的迁移
1.便于快速的更新,正如php的后端出现一个版本的漏洞,需要更新php依赖的操作。
但是更新完是一个大坑,你的一堆的依赖服务某一个的LNMP环境的运行,所谓牵一发而动全身。
2.因此容器化的部署后,利用wordpress镜像,运行多个容器,基于nginx实现反向代理,以及完成后续的更新,就单单提交一个新的镜像版本即可,可以很快的升级出一个新的容器镜像。
3.足够的安全,应用部署在容器内的环境中,再禁止特权的模式下,对宿主机也是一种保护。
4.整体的架构性得到啦大幅度的提高
容器部署wordpress
# 在根下创建一个wordpress-docker和下面地db目录
[root@docker-100 wordpress-docker]# tree
.
├── conf
│ └── my.cnf
└── db
看看docker主命令地帮助
docker --help
看看docker二级命令的帮助
docker run --help
1.mysql的配置
cat > my.cnf <<'EOF'
[mysqld]
port=3306
user=mysql
character_set_server=utf8mb4
collation-server=utf8mb4_general_ci
[mysql]
socket=/tmp/mysql.sock
EOF
# 1.直接再宿主机部署mysql,这更为的合理
# 基于centos镜像基础,构建maridb数据库镜像环境。
--restart=always
# 运行mysql容器
docker run \
--restart=always \
--name blog_mysql -d \
-v /wordpress-docker/db/:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD="yzk666" \
-v /wordpress-docker/conf/:/etc/mysql \
-d mysql:5.7.25
# 自动的重启
# 执行了xxxx命令,xxx脚本启动数据库服务端,if 该变量为空,mysqld,且echo 提示你要设置xxxx变量,才能运行
# 启动时,传入
MYSQL_USER='wordpress_user'
MYSQL_PASSWORD='yzk666'
MYSQL_DATABASE='wordpress'
docker run \
--restart=always \
--name blog_mysql -d \
-v /new_mysql_data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD="yzk666" \
-e MYSQL_USER='wordpress_user' \
-e MYSQL_PASSWORD='wordpress_pwd' \
-e MYSQL_DATABASE='wordpress' \
-v /wordpress-docker/conf/:/etc/mysql \
-d mysql:5.7.25
# 做为数据的迁移使用原有的数据库作为分析
可以原来的的数据库作为原来的
2.phpadmin
官网地址:https://www.phpmyadmin.net/

docker run -it --name blog_phpadmin phpmyadmin
拿到新的镜像的时候,该如何的去用,传入什么环境的变量才能正确启动
docker run -it --rm --name blog_phpadmin phpmyadmin
1. 看dockerhub,给了什么资料,
https://hub.docker.com/_/phpmyadmin
2. docker history
docker run 去分析 入口点脚本,启动脚本,都调用了哪些变量
# 启动php-admin,链接数据库
docker run --restart=always --link blog_mysql --name blog_phpadmin -d -e PMA_HOST=blog_mysql phpmyadmin
# 这里表示的是总是自启动,连接数据库的名字,-e表示环境
3.wordpress
docker run -d --link blog_mysql --restart=always --name blog_wordpress \
-v /wordpress-docker/html:/var/www/html \
wordpress
# 提供好lnp的wordpress环境了,代码,php版本都是适配的
4.检测这3个容器的ip
# 第一种的方法列出容器的ip地址
docker inspect `docker ps -aq` | grep -i IPAddress
# 批量获取主机名和ip,格式化的输出
--format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'
https://pkg.go.dev/text/template
[root@docker-100 html]# --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'
-bash: --format={{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}: command not found
[root@docker-100 html]# docker inspect --format='{{.NetworkSettings.Networks.bridge.IPAddress}}' blog_mysql
172.17.0.2 《----------
# 简单玩法, 基于key 提取value,格式化主机名,容器ip
[root@docker-100 html]# docker inspect --format='{{.Name}} {{.NetworkSettings.Networks.bridge.IPAddress}}' `docker ps -aq`
/blog_wordpress 172.17.0.4
/blog_phpadmin 172.17.0.3
/blog_mysql 172.17.0.2
接入层的网关,nginx跑起来

我们一步一步的来
2.准备好七层代理配置文件,基于应用层的转发代理,http层代理,http协议,url,port等
[root@docker-200 /wordpress-docker/html]#docker inspect --format='{{.Config.ExposedPorts}}' blog_wordpress
map[80/tcp:{}]
# 批量获取容器ip技巧 ,别名技巧
[root@docker-200 /wordpress-docker/html]#alias dockerport='docker inspect --format="{{.Name}} {{.NetworkSettings.Networks.bridge.IPAddress}}" `docker ps -aq`'
# 安装nginx
yum install nginx -y
# 准备好一个7层代理的配置文件,基于应用层转发的代理
htpp层代理 http,port,url等
# 做好服务名称和容器之间的解析关系
# 转发业务配置
server {
listen 80;
server_name blog.yzk.cc;
# http://blog.linux0224.cc:80
# http://blog.linux0224.cc:80/
# http://blog.linux0224.cc:80/xxxx
# http://blog.linux0224.cc:80/index
# http://blog.linux0224.cc:80/ooo
location /
{
# 默认转发给wordpress
proxy_pass http://172.17.0.4:80/;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
}
}
# phpadmin配置
server {
listen 80;
server_name phpmyadmin.yzk.cc;
location / {
proxy_pass http://172.17.0.3:80/;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
}
}

检测wordpress的连接情况
[root@docker-100 conf.d]# docker exec -it blog_wordpress bash
root@52441d81d785:/var/www/html# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 blog_mysql 0aa154327955
172.17.0.4 52441d81d785
浙公网安备 33010602011771号