GVKun编程网logo

Docker搭建私有镜像仓库与WordPress(docker 搭建私有镜像仓库)

24

对于想了解Docker搭建私有镜像仓库与WordPress的读者,本文将提供新的信息,我们将详细介绍docker搭建私有镜像仓库,并且为您提供关于03:使用docker搭建Harbor私有镜像仓库、6

对于想了解Docker搭建私有镜像仓库与WordPress的读者,本文将提供新的信息,我们将详细介绍docker 搭建私有镜像仓库,并且为您提供关于03: 使用docker搭建Harbor私有镜像仓库、6.1 基于docker搭建wordpress、Centos7 docker 私有镜像仓库搭建并配置域名、Docker Registry快速搭建私有镜像仓库的有价值信息。

本文目录一览:

Docker搭建私有镜像仓库与WordPress(docker 搭建私有镜像仓库)

Docker搭建私有镜像仓库与WordPress(docker 搭建私有镜像仓库)

最近在看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数据库里创建了好多表

03: 使用docker搭建Harbor私有镜像仓库

03: 使用docker搭建Harbor私有镜像仓库

1.1 harbor介绍

  1、Harbor简介

      1. Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器

      2. 镜像的存储harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。

      3. harbor在docker distribution的基础上增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求。

      4. harbor以docker-compose的规范形式组织各个组件,并通过docker-compose工具进行启停。

      5. docker的registry是用本地存储或者s3都是可以的

      6. Harbor的镜像拷贝功能是通过docker registry的API去拷贝,这种做法屏蔽了繁琐的底层文件操作

  2、Harbor架构图

       

  3、主要组件

      

 1.2 Harbor安装

  1、参考文档及安装步骤梳理

      下载v1.4.0版本harbor:https://github.com/goharbor/harbor/releases?after=v1.5.0-rc5

      安装参考文档:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md

      配置证书:https://github.com/goharbor/harbor/blob/master/docs/configure_https.md

      1、  下载离线安装包

      2、  安装docker

      3、  安装docker-compose

      4、  自签TLS证书

      5、  Harbor安装与配置

      6、  Docker主机访问Harbor

  2、安装docker和docker-compose(192.168.56.14)

# 1)安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2

# 2)添加Docker软件包源(否则doker安装的不是新版本)
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

# 3)安装Docker CE
yum install -y docker-ce

# 4)启动Docker服务并设置开机启动
systemctl start docker
systemctl enable docker

# 5)安装docker compose
curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version  # 测试docker-compose是否安装好

   2、安装Harbor

''''''安装Harbor镜像仓库''''''
# 1、下载离线安装包
https://github.com/goharbor/harbor/releases

# 2、解压并配置访问地址''''''
cd /home/work
tar zxvf harbor-offline-installer-v1.8.1.tgz cd /home/work/harbor vi harbor.yml '''''' hostname = 192.168.56.14 harbor_admin_password = 123456 '''''' # 3、准备配置 ./prepare # 4、导入镜像并启动 ./install.sh # 5、查看容器状态 docker-compose ps 安装完成后可以登录Harbor:http://192.168.56.14

 1.3 为Harbor配置Https

  1、简介      

      1. 配置ssl证书https://github.com/goharbor/harbor/blob/master/docs/configure_https.md

      2. 由于Harbor没有附带任何证书,所以它默认使用HTTP来服务注册表请求,但是,强烈建议为任何生产环境启用安全性。

      3. 在测试或开发环境中,您可以选择使用自签名证书,而不是来自受信任的第三方CA的证书。

  2、获得CA证书颁发机构(CN为域名)

mkdir /home/work/harbor/ssl/  # 创建一个ssl目录用来存放要创建的证书
cd /home/work/harbor/ssl

# 获得CA证书颁发机构(CN为域名,最好为主机名)
openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -sha512 -days 3650 \
    -subj "/C=TW/ST=Taipei/L=Taipei/O=example/OU=Personal/CN=linux-node4.example.com" \
    -key ca.key \
    -out ca.crt

  3、获取服务器证书

      1. 假设注册表的主机名是linux-node4.example.com,其DNS记录指向运行Harbor的主机。

      2. 在生产环境中,您首先应该从CA获得证书,在测试或开发环境中,您可以使用自己的CA。

      3. 证书通常包含一个.crt文件和一个.key文件,例如linux-node4.example.com.crt和linux-node4.example.com.key。

# 创建自己的私钥
openssl genrsa -out linux-node4.example.com.key 4096
# 生成部署请求认证
# 如果使用像linux-node4.example.com这样的FQDN连接注册表主机,则必须使用linux-node4.example.com作为CN(通用名称)。
openssl req -sha512 -new \
  -subj "/C=TW/ST=Taipei/L=Taipei/O=example/OU=Personal/CN=linux-node4.example.com" \
  -key linux-node4.example.com.key \
  -out linux-node4.example.com.csr

  4、为注册的主机生成证书

      1. 无论您使用的是像linux-node4.example.com这样的FQDN还是IP来连接注册表主机

      2. 都可以运行这个命令来生成符合Subject Alternative Name (SAN)和x509 v3扩展要求的注册表主机证书

# 生成v3.ext文件
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth 
subjectAltName = @alt_names

[alt_names]
DNS.1=linux-node4.example.com
DNS.2=linux-node4.example
DNS.3=example
EOF

# 生成证书
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in linux-node4.example.com.csr \
-out linux-node4.example.com.crt

  5、为Harbor配置服务器证书和密钥

# 在获得linux-node4.example.com.crt和linux-node4.example.com.key文件之后,可以将它们放入/data/cert/这样的目录中
mkdir -p /data/cert
cp linux-node4.example.com.crt /data/cert/
cp linux-node4.example.com.key /data/cert/

  6、为Docker配置服务器证书、密钥和CA

# Docker守护进程将.crt文件解释为CA证书,将.cert文件解释为客户机证书
# 将服务器linux-node4.example.com.crt转换为linux-node4.example.com.cert
openssl x509 -inform PEM -in linux-node4.example.com.crt -out linux-node4.example.com.cert

# 为docker部署 linux-node4.example.com.cert、linux-node4.example.com.key和ca.crt
mkdir -p /etc/docker/certs.d/linux-node4.example.com/
cp linux-node4.example.com.cert /etc/docker/certs.d/linux-node4.example.com/
cp linux-node4.example.com.key /etc/docker/certs.d/linux-node4.example.com/
cp ca.crt /etc/docker/certs.d/linux-node4.example.com/

  7、配置Harbor

# 编辑文件端口,更新主机名并取消对https块的注释,更新属性证书和private_key
#set hostname
hostname: linux-node4.example.com
harbor_admin_password: 123456

http:
  port: 80

https:
  # https port for harbor, default is 443
  port: 443
  # The path of cert and key files for nginx
  certificate: /data/cert/example.com.crt
  private_key: /data/cert/example.com.key

  8、为Harbor重新生成配置文件

#1、为Harbor重新生成配置文件
./prepare

#2、如果Harbor已经运行,则停止并删除现有实例,镜像数据仍然保存在文件系统中
docker-compose down -v

#3、重启harbor
docker-compose up -d

#4、此时可以通过浏览器访问https: https://192.168.56.14/harbor/projects

#5、可以在linux-node4.example.com本机上测试docker登录
docker login linux-node4.example.com

  9、在其他docker机器中配置登录harbor(192.168.56.13)

mkdir -p /etc/docker/certs.d/linux-node4.example.com/
scp -r root@192.168.56.14:/home/work/harbor/ssl/linux-node4.example.com.cert /etc/docker/certs.d/linux-node4.example.com/
scp -r root@192.168.56.14:/home/work/harbor/ssl/linux-node4.example.com.key /etc/docker/certs.d/linux-node4.example.com/
scp -r root@192.168.56.14:/home/work/harbor/ssl/ca.crt /etc/docker/certs.d/linux-node4.example.com/
vi /usr/lib/systemd/system/docker.service # 添加--insecure-registry 192.168.56.14 '''''' ExecStart=/usr/bin/dockerd --insecure-registry 192.168.56.14 ''''''
systemctl restart docker.service # 重启docker

 

 

 

 

 

 

 

 

 111111

 

 

 

 

 

 

 

 

 

 

1111111111111111

6.1 基于docker搭建wordpress

6.1 基于docker搭建wordpress

创建一个mysql容器

docker run -d --name mysql -v mysqldata:/var/lib/mysql -e MYSQL_DATABASE=wp -e MYSQL_ROOT_PASSWORD=root mysql:5.7.22

创建一个wordpress容器

docker run --name wordpress --link mysql -d -p 8080:80 wordpress

然后即可通过访问 http://192.168.205.10:8080/ 来进行安装了

Centos7 docker 私有镜像仓库搭建并配置域名

Centos7 docker 私有镜像仓库搭建并配置域名

1.生成证书

可以在任意一台机器上生成(注意时间很重要,很重要,很主要)
vim /etc/pki/tls/openssl.cnf

[ v3_ca ]

  
subjectAltName = IP:192.168.0.99  #仓库的物理地址
  • 生成证书
[root@xxxx-test-221 basic-repository.xxxx.com-yuan]# openssl req -nodes -subj "/C=CN/ST=BeiJing/L=ChaoYao/CN=basic-repository.xxxx.com" -newkey rsa:2048 -keyout basic-repository.key -out basic-repository.csr  
Generating a 2048 bit RSA private key  
..........+++  
.............................+++  
writing new private key to ''basic-repository.key''  
-----  
[root@xxxx-test-221 basic-repository.xxxx.com-yuan]# openssl x509 -req -days 3650 -in basic-repository.csr -signkey basic-repository.key -out basic-repository.crt  
Signature ok  
subject=/C=CN/ST=BeiJing/L=ChaoYao/CN=basic-repository.xxxx.com  
Getting Private key  
[root@xxxx-test-221 basic-repository.xxxx.com-yuan]# openssl x509 -req -in basic-repository.csr -CA basic-repository.crt -CAkey basic-repository.key -CAcreateserial -out basic-repository.crt -days 10000  
Signature ok  
subject=/C=CN/ST=BeiJing/L=ChaoYao/CN=basic-repository.xxxx.com  
Getting CA Private Key  
[root@xxxx-test-221 basic-repository.xxxx.com-yuan]# ls  
basic-repository.crt  basic-repository.csr  basic-repository.key  basic-repository.srl

2.拷贝证书并且启动nginx

注意:本实验环境是基于swarm集群环境部署的,首先搭建swarm集群,然后创建swarm network,启动的容器均在swarm network中。(具体步骤见我的博客)
[root@skf-docker-99l xxxx]# pwd  
/data/web/xxxx  
[root@skf-docker-99l xxxx]# cat public.conf   
server {  
  listen  80;  
  listen  443 ssl;  
  server_name  basic-repository.xxxx.com;  
  access_log  logs/basic-repository.log  main;  
  #ssl   on;  
  ssl_certificate /data/ssl/basic-repository.crt;  
  ssl_certificate_key /data/ssl/basic-repository.key;  
  location / {  
    proxy_pass   https://basic-repository:5000;  
    proxy_redirect    off;  
    proxy_set_header    Host       $http_host;  
    proxy_set_header    X-Real-IP  $remote_addr;  
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;  
  }  
}

[root@skf-docker-99l xxxx]# cd ../certs  
[root@skf-docker-99l certs]# pwd  
/data/web/certs  
[root@skf-docker-99l certs]# ls  
a.key      a.pem      basic-registry.crt  basic-repository.crt  registry.crt  
a.key.bak  a.pem.bak  basic-registry.key  basic-repository.key  registry.key

[root@skf-docker-99l ~]# docker run -d --name nginx --network sk-net -p 80:80 -p 443:443 --restart=always -v /data/web/web/:/data/web -v /data/web/xxxx/:/data/conf/ -v /data/web/certs/:/data/ssl/ basic-repository.xxxx.com/xxxx/nginx:1.16.0

拷贝证书并且启动仓库

[root@skf-docker-99l certs]# cd /data/certs/  
[root@skf-docker-99l certs]# ls  
a.key  a.pem  
[root@skf-docker-99l certs]# cd /etc/docker/certs.d/  
[root@skf-docker-99l certs.d]# ls  
basic-registry.xxxx.com  basic-repository.xxxx.com  registry.xxxx.com  
[root@skf-docker-99l certs.d]# cd basic-repository.xxxx.com/  
[root@skf-docker-99l basic-repository.xxxx.com]# ls  
basic-repository.crt  
[root@skf-docker-99l basic-repository.xxxx.com]#   
 

[root@skf-docker-99l ~]# docker run -d --name basic-repository --restart=always -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/basic-repository.crt -e REGISTRY_HTTP_TLS_KEY=/certs/basic-repository.key --net=sk-net  --expose=5000 -v /data/registry:/var/lib/registry -v /data/web/certs:/certs  basic-registry.xxxx.com/xxxx/registry:latest

Docker Registry快速搭建私有镜像仓库

Docker Registry快速搭建私有镜像仓库

一.软件环境

宿主机操作系统:CentOS Linux release 7.5

虚拟机工具:VMware® Workstation 10

应用容器引擎:Docker version 19.03.7

二.任务背景

所谓私有仓库,也就是在本地(局域网)搭建的一个类似公共仓库的东西,搭建好之后,我们可以将镜像提交到私有仓库中。这样我们既能使用 Docker 来运行我们的项目镜像,也避免从公共仓库中来取来拿所暴露出去的风险;利用Docker Registry快速搭建私有镜像仓库。

三.操作步骤

仓库地址:192.168.153.141

#下载registry镜像

[root@docker docker]# docker pull registry

#创建registry容器并启动

[root@docker docker]# docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 

--restart=always --name registry registry

b697d68647a95e01ee09115c3b9c035a393cac7e51f96e2e58c1896b500e8cfb

[root@docker docker]# docker ps

CONTAINER ID       IMAGE           COMMAND               CREATED                          STATUS         PORTS            NAMES

b697d68647a9       registry        "/entrypoint.sh /etc…"   40 seconds ago      Up 19 seconds   0.0.0.0:5000->5000/tcp   registry

客户端:192.168.153.142

#测试,查看镜像仓库中所有镜像

[root@redis_master docker]# curl http://192.168.153.141:5000/v2/_catalog

{"repositories":[]}

#私有镜像仓库管理

#配置私有仓库:

# vi /etc/docker/dameon.jsp

{

"registry-mirrors": ["https://9cpn8tt6.mirror.aliyuncs.com"],

 "insecure-registries":["192.168.153.141:5000"]

}

~

# systemctl restart docker

#下载镜像

# docker pull Nginx:1.12

#打标签

# docker tag Nginx:1.12 192.168.153.142:5000/centos:7

# docker tag Nginx:1.12 192.168.153.141:5000/Nginx:1.12

# docker images

REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE

192.168.153.141:5000/Nginx    1.12       4037a5562b03        22 months ago       108 MB

192.168.153.142:5000/centos   7           4037a5562b03        22 months ago       108 MB

docker.io/Nginx               1.12                4037a5562b03        22 months ago       108 MB

#上传镜像到仓库

# docker  push 192.168.153.141:5000/Nginx:1.12

The push refers to a repository [192.168.153.141:5000/Nginx]

4258832b2570: Pushed 

683a28d1d7fd: Pushed 

d626a8ad97a1: Pushed

1.12: digest: sha256:09e210fe1e7f54647344d278a8d0dee8a4f59f275b72280e8b5a7c18c560057f size: 948

# docker tag Nginx:1.12  192.168.153.141:5000/centos:7

#查看仓库镜像

[root@redis_master /]# curl http://192.168.153.141:5000/v2/_catalog

{"repositories":["centos","Nginx"]}

#列出镜像标签

[root@redis_master /]# curl http://192.168.153.141:5000/v2/Nginx/tags/list

{"name":"Nginx","tags":["1.12"]}

# curl http://192.168.153.141:5000/v2/centos/tags/list

{"name":"centos","tags":["7"]}

#从本地仓库(192.168.153.141:5000)下载镜像

#并创建Nginx容器

[root@redis_master /]# docker run -itd --name Nginx -p 88:80 192.168.153.141:5000/Nginx:1.12

0c75bba5a04eb075d432f4409923007a4f8c29b4fb987475d37cae4eeccb303b

#查看正在运行的容器

[root@redis_master /]# docker ps

CONTAINER ID        IMAGE                             COMMAND                  CREATED             STATUS              PORTS                NAMES

0c75bba5a04e        192.168.153.141:5000/Nginx:1.12   "Nginx -g 'daemon ..."   40 seconds ago      Up 38 seconds       0.0.0.0:88->80/tcp   Nginx

本地镜像查收.jpg


关于Docker搭建私有镜像仓库与WordPressdocker 搭建私有镜像仓库的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于03: 使用docker搭建Harbor私有镜像仓库、6.1 基于docker搭建wordpress、Centos7 docker 私有镜像仓库搭建并配置域名、Docker Registry快速搭建私有镜像仓库等相关内容,可以在本站寻找。

本文标签: