最近在看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
© 版权声明
声明📢本站内容均来自互联网,归原创作者所有,如有侵权必删除。
本站文章皆由CC-4.0协议发布,如无来源则为原创,转载请注明出处。
THE END