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

posted @ 2025-05-23 20:43  国家一级冲浪yzk  阅读(19)  评论(0)    收藏  举报