Docker搭建私有镜像仓库与WordPress

最近在看CI/CD与k8s,作为前期准备,先熟悉一下Docker的基本操作,这里我们先用Docker部署几个服务

Docker搭建私有镜像仓库Docker Registry

在Docker Hub上搜索registry,目的是为了确定我们要拉取的镜像版本

https://registry.hub.docker.com/_/registry

最终确定最新的稳定版本2.8.1

拉取镜像

<span class="token function">docker</span> pull registry:2.8.1
<span class="token function">docker</span> pull registry:2.8.1 
docker pull registry:2.8.1

运行registry实例

<span class="token function">docker</span> run -d -p <span class="token number">5000</span>:5000 registry:2.8.1
<span class="token function">docker</span> run -d -p <span class="token number">5000</span>:5000 registry:2.8.1 
docker run -d -p 5000:5000 registry:2.8.1

说明:

  • -d 后台运行
  • -p 端口映射,容器端口:主机端口

查看运行状态

<span class="token function">docker</span> <span class="token function">ps</span>
<span class="token function">docker</span> <span class="token function">ps</span> 
docker ps

打标签上传

<span class="token function">docker</span> pull nginxLalpine <span class="token function">docker</span> images <span class="token function">docker</span> tag nginx:alpine <span class="token number">127.0</span>.0.1:5000/nginx:alpine <span class="token function">docker</span> push <span class="token number">127.0</span>.0.1:5000/nginx:alpine
 <span class="token function">docker</span> pull nginxLalpine  <span class="token function">docker</span> images <span class="token function">docker</span> tag nginx:alpine <span class="token number">127.0</span>.0.1:5000/nginx:alpine <span class="token function">docker</span> push <span class="token number">127.0</span>.0.1:5000/nginx:alpine 
docker pull nginxLalpine docker images docker tag nginx:alpine 127.0.0.1:5000/nginx:alpine docker push 127.0.0.1:5000/nginx:alpine

说明:

  • 因为上传的目标不是默认的Docker Hub,而是本地私有仓库,所以镜像的名字前必须加仓库地址

验证是否推送成功

<span class="token function">docker</span> rmi <span class="token number">127.0</span>.0.1:5000/nginx:alpine <span class="token function">docker</span> pull <span class="token number">127.0</span>.0.1:5000/nginx:alpine
<span class="token function">docker</span> rmi <span class="token number">127.0</span>.0.1:5000/nginx:alpine <span class="token function">docker</span> pull <span class="token number">127.0</span>.0.1:5000/nginx:alpine 
docker rmi 127.0.0.1:5000/nginx:alpine docker pull 127.0.0.1:5000/nginx:alpine

查看Registry仓库镜像,Registry只提供了RESTful API

<span class="token function">curl</span> <span class="token number">127.0</span>.0.1:5000/v2/_catalog <span class="token function">curl</span> <span class="token number">127.0</span>.0.1:5000/v2/nginx/tags/list
<span class="token function">curl</span> <span class="token number">127.0</span>.0.1:5000/v2/_catalog <span class="token function">curl</span> <span class="token number">127.0</span>.0.1:5000/v2/nginx/tags/list 
curl 127.0.0.1:5000/v2/_catalog curl 127.0.0.1:5000/v2/nginx/tags/list

Docker搭建WordPress网站

网络架构图

在这里插入图片描述

拉取相关镜像

<span class="token function">docker</span> pull wordpress:5 <span class="token function">docker</span> pull mariadb:10 <span class="token function">docker</span> pull nginx:alpine
<span class="token function">docker</span> pull wordpress:5 <span class="token function">docker</span> pull mariadb:10 <span class="token function">docker</span> pull nginx:alpine 
docker pull wordpress:5 docker pull mariadb:10 docker pull nginx:alpine

运行MariaDB实例

<span class="token function">docker</span> run -d --rm <span class="token punctuation">\</span> --name wp-mariadb --env <span class="token assign-left variable">MARIADB_DATABASE</span><span class="token operator">=</span>db <span class="token punctuation">\</span> --env <span class="token assign-left variable">MARIADB_USER</span><span class="token operator">=</span>wp <span class="token punctuation">\</span> --env <span class="token assign-left variable">MARIADB_PASSWORD</span><span class="token operator">=</span><span class="token number">123</span> <span class="token punctuation">\</span> --env <span class="token assign-left variable">MARIADB_ROOT_PASSWORD</span><span class="token operator">=</span><span class="token number">123</span> <span class="token punctuation">\</span> mariadb:10
 <span class="token function">docker</span> run -d --rm <span class="token punctuation">\</span> --name wp-mariadb --env <span class="token assign-left variable">MARIADB_DATABASE</span><span class="token operator">=</span>db <span class="token punctuation">\</span> --env <span class="token assign-left variable">MARIADB_USER</span><span class="token operator">=</span>wp <span class="token punctuation">\</span> --env <span class="token assign-left variable">MARIADB_PASSWORD</span><span class="token operator">=</span><span class="token number">123</span> <span class="token punctuation">\</span> --env <span class="token assign-left variable">MARIADB_ROOT_PASSWORD</span><span class="token operator">=</span><span class="token number">123</span> <span class="token punctuation">\</span> mariadb:10 
docker run -d --rm \ --name wp-mariadb --env MARIADB_DATABASE=db \ --env MARIADB_USER=wp \ --env MARIADB_PASSWORD=123 \ --env MARIADB_ROOT_PASSWORD=123 \ mariadb:10

说明:

  • 我们指定数据库为db,用户名为wp,密码为123,管理员密码为123

验证数据库,通过执行数据库客户端工具进入数据库

<span class="token function">docker</span> <span class="token builtin class-name">exec</span> -it wp-mariadb mysql -u wp -p
<span class="token function">docker</span> <span class="token builtin class-name">exec</span> -it wp-mariadb mysql -u wp -p 
docker exec -it wp-mariadb mysql -u wp -p

查看容器的IP

<span class="token function">docker</span> inspect wp-mariadb <span class="token operator">|</span> <span class="token function">grep</span> IPAddress
<span class="token function">docker</span> inspect wp-mariadb <span class="token operator">|</span> <span class="token function">grep</span> IPAddress 
docker inspect wp-mariadb | grep IPAddress

运行wordpress实例

<span class="token function">docker</span> run -d --rm <span class="token punctuation">\</span> --name wp --env <span class="token assign-left variable">WORDPRESS_DB_HOST</span><span class="token operator">=</span><span class="token number">172.17</span>.0.2 <span class="token punctuation">\</span> --env <span class="token assign-left variable">WORDPRESS_DB_USER</span><span class="token operator">=</span>wp <span class="token punctuation">\</span> --env <span class="token assign-left variable">WORDPRESS_DB_PASSWORD</span><span class="token operator">=</span><span class="token number">123</span> <span class="token punctuation">\</span> --env <span class="token assign-left variable">WORDPRESS_DB_NAME</span><span class="token operator">=</span>db <span class="token punctuation">\</span> wordpress:5
 <span class="token function">docker</span> run -d --rm <span class="token punctuation">\</span> --name wp --env <span class="token assign-left variable">WORDPRESS_DB_HOST</span><span class="token operator">=</span><span class="token number">172.17</span>.0.2 <span class="token punctuation">\</span> --env <span class="token assign-left variable">WORDPRESS_DB_USER</span><span class="token operator">=</span>wp <span class="token punctuation">\</span> --env <span class="token assign-left variable">WORDPRESS_DB_PASSWORD</span><span class="token operator">=</span><span class="token number">123</span> <span class="token punctuation">\</span> --env <span class="token assign-left variable">WORDPRESS_DB_NAME</span><span class="token operator">=</span>db <span class="token punctuation">\</span> wordpress:5 
docker run -d --rm \ --name wp --env WORDPRESS_DB_HOST=172.17.0.2 \ --env WORDPRESS_DB_USER=wp \ --env WORDPRESS_DB_PASSWORD=123 \ --env WORDPRESS_DB_NAME=db \ wordpress:5

先准备一份nginx配置文件 /opt/docker/wordpress/wp.conf

server <span class="token punctuation">{<!-- --></span> listen <span class="token number">80</span><span class="token punctuation">;</span> default_type text/html<span class="token punctuation">;</span> location / <span class="token punctuation">{<!-- --></span> proxy_http_version <span class="token number">1.1</span><span class="token punctuation">;</span> proxy_set_header Host <span class="token variable">$host</span><span class="token punctuation">;</span> proxy_pass http://172.17.0.3<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span>
 server <span class="token punctuation">{<!-- --></span> listen <span class="token number">80</span><span class="token punctuation">;</span> default_type text/html<span class="token punctuation">;</span> location / <span class="token punctuation">{<!-- --></span> proxy_http_version <span class="token number">1.1</span><span class="token punctuation">;</span> proxy_set_header Host <span class="token variable">$host</span><span class="token punctuation">;</span> proxy_pass http://172.17.0.3<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> 
server { listen 80; default_type text/html; location / { proxy_http_version 1.1; proxy_set_header Host $host; proxy_pass http://172.17.0.3; } }

运行nginx实例

<span class="token function">docker</span> run -d --rm <span class="token punctuation">\</span> -p <span class="token number">80</span>:80 <span class="token punctuation">\</span> -v <span class="token variable"><span class="token variable">`</span><span class="token builtin class-name">pwd</span><span class="token variable">`</span></span>/wp.conf:/etc/nginx/conf.d/default.conf <span class="token punctuation">\</span> nginx:alpine
 <span class="token function">docker</span> run -d --rm <span class="token punctuation">\</span> -p <span class="token number">80</span>:80 <span class="token punctuation">\</span> -v <span class="token variable"><span class="token variable">`</span><span class="token builtin class-name">pwd</span><span class="token variable">`</span></span>/wp.conf:/etc/nginx/conf.d/default.conf <span class="token punctuation">\</span> nginx:alpine 
docker run -d --rm \ -p 80:80 \ -v `pwd`/wp.conf:/etc/nginx/conf.d/default.conf \ nginx:alpine

验证是否启动成功

<span class="token function">docker</span> <span class="token function">ps</span>
<span class="token function">docker</span> <span class="token function">ps</span> 
docker ps

初始化网站

浏览器输入 http://192.168.2.101:80,进行WordPress初始化

验证是否搭建成功

再次登录MariDB,db数据库里创建了好多表

原文链接:https://blog.csdn.net/ln_ydc/article/details/127342291

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享