最近在看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.1docker 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.1docker 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:alpinedocker 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:alpinedocker 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/listcurl 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:alpinedocker 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:10docker 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 -pdocker 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> IPAddressdocker 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:5docker 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:alpinedocker 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?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168994567316800211558691%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=168994567316800211558691&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-11-127342291-null-null.268%5Ev1%5Ekoosearch&utm_term=docker%E3%80%81wordpress%E3%80%81wordpress%E5%BB%BA%E7%AB%99%E3%80%81wordpress%E4%B8%BB%E9%A2%98%E3%80%81%E5%AE%B9%E5%99%A8%E9%95%9C%E5%83%8F%E3%80%81