当前位置: 首页 > news >正文

Docker搭建私有镜像仓库与WordPress

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

Docker搭建私有镜像仓库Docker Registry

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

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

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

拉取镜像

docker pull registry:2.8.1

运行registry实例

docker run -d -p 5000:5000 registry:2.8.1

说明:

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

查看运行状态

docker ps

打标签上传

# 先下载一个nginx镜像
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,而是本地私有仓库,所以镜像的名字前必须加仓库地址

验证是否推送成功

docker rmi 127.0.0.1:5000/nginx:alpine
docker pull 127.0.0.1:5000/nginx:alpine

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

curl 127.0.0.1:5000/v2/_catalog
curl 127.0.0.1:5000/v2/nginx/tags/list

Docker搭建WordPress网站

网络架构图

在这里插入图片描述

拉取相关镜像

docker pull wordpress:5
docker pull mariadb:10
docker pull nginx:alpine

运行MariaDB实例


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

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

docker exec -it wp-mariadb mysql -u wp -p

查看容器的IP

docker inspect wp-mariadb | grep IPAddress

运行wordpress实例


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 {
  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实例


docker run -d --rm \
    -p 80:80 \
    -v `pwd`/wp.conf:/etc/nginx/conf.d/default.conf \
    nginx:alpine

验证是否启动成功

docker ps

初始化网站

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

验证是否搭建成功

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

相关文章:

  • 嵌入式软件工程师面试题(七)
  • 力扣(412.516)补8.21
  • 数据集 | 基于计算机视觉的医学影像处理数据集
  • Apache RocketMQ 在阿里云大规模商业化实践之路
  • 《uni-app》一个非canvas的飞机对战小游戏实现-敌机模型实现
  • HTML生日快乐代码 html生日快乐网站制作 html烟花表白网站制作
  • 环境卫生学重点笔记
  • 改进搜索机制的单纯形法引导麻雀搜索算法-附代码
  • 带你吃透Servlet核心编程下篇(完整图文教程)
  • 化工原理 --- 流体流动3
  • 07. 使用子表达式
  • Kubernetes_14_静态Pod网关apiserver底层都是restful接口
  • 信息学奥赛一本通:1091:求阶乘的和
  • less和sass的区别[简洁易懂]
  • 爆肝一周——PYTHON 算法基础
  • 【comparator, comparable】小总结
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • Android框架之Volley
  • Apache Pulsar 2.1 重磅发布
  • Django 博客开发教程 8 - 博客文章详情页
  • eclipse(luna)创建web工程
  • Flannel解读
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • js中forEach回调同异步问题
  • k8s如何管理Pod
  • learning koa2.x
  • php中curl和soap方式请求服务超时问题
  • Python爬虫--- 1.3 BS4库的解析器
  • python学习笔记 - ThreadLocal
  • 分享几个不错的工具
  • 给第三方使用接口的 URL 签名实现
  • 聚簇索引和非聚簇索引
  • 蓝海存储开关机注意事项总结
  • 漂亮刷新控件-iOS
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • elasticsearch-head插件安装
  • PostgreSQL之连接数修改
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #if和#ifdef区别
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (1)(1.13) SiK无线电高级配置(五)
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (笔试题)合法字符串
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (六)激光线扫描-三维重建
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转载)Linux网络编程入门
  • ***检测工具之RKHunter AIDE
  • .Net Core和.Net Standard直观理解
  • .NET DataGridView数据绑定说明