美文网首页@IT·互联网技术研发汇集
【Docker】使用 Docker Compose 部署 Doc

【Docker】使用 Docker Compose 部署 Doc

作者: 星辰大海的精灵 | 来源:发表于2024-01-24 09:23 被阅读0次

    在内网环境中,我们期望能够在本地共享镜像。为了解决这一问题,Docker Registry成为了我们的救星。Docker Registry是一个用于存储和管理Docker镜像的开源工具。通过在本地部署Docker Registry,您可以轻松地构建、存储和分享自己的Docker镜像。本文将详细介绍如何使用Docker Compose快速部署Docker Registry,并开始轻松应对这一镜像管理问题。此外,我们还将介绍如何将您的镜像传输到阿里云容器镜像服务,为您提供更广泛的镜像管理和分发选项。

    第一步:创建docker-compose.yml文件

    首先我们创建一个Registry的部署目录 Registry,在目录registry 下创建一个 docker-compose.yml 文件,内容如下:

    version: "3.8"

    services:

    registry:

    privileged: true     #这里把权限配置成true

    image: registry      #镜像来源

    restart: always      #开机后自己启动

    container_name: registry   #自定义服务名

    ports:               #暴露端口

    - 5000:5000

    volumes:            #挂载目录配置

    - ./data:/var/lib/registry

    web:

    image: konradkleine/docker-registry-frontend:v2

    restart: always

    ports:

    - 8035:80

    environment:

    - ENV_DOCKER_REGISTRY_HOST=192.168.10.106

    - ENV_DOCKER_REGISTRY_PORT=5000

    registry服务就是我们镜像仓库的服务,web服务会给我们提供一个可视化的web页面,方便我们查看镜像,web服务中配置的环境变量就是我们仓库服务registry的ip和端口

    第二步:启动服务

    在docker-compose.yml统计目录下执行如下命令启动容器:

    docker-compose up -d 

    查看容器启动日志

    docker-compose logs -f

    如果不出意外的话我们的服务就启动了

    第三步:使用仓库

    配置 Docker 客户端

    为了能够推送和拉取镜像,我们需要在 Docker 客户端(服务器)配置 Registry 地址。打开 Docker 配置文件(通常是 /etc/docker/daemon.json 并添加 Registry 地址:

    {

    "insecure-registries": ["http://192.168.10.106:5000"]

    }

    重启docker,确保 Docker 客户端重新加载配置,以使更改生效。

    sudo systemctl restart docker   

    测试 Registry

    查看本地镜像:

    docker images

    示例:

    app@app:~/docker/registry$ docker images | grep jenkins

    app/jenkins                                            1.0            a7115c9ef551   3 weeks ago     1.51GB

    app@app:~/docker/registry$

    找到要上传的镜像,然后,将该镜像重新标记为本地 Registry 的地址:

    docker tag a7115c9ef551 192.168.10.106:5000/app/jenkins:1.0.0

    示例:

    app@app:~/docker/registry$

    app@app:~/docker/registry$ docker tag a7115c9ef551 192.168.10.106:5000/app/jenkins:1.0.0

    app@app:~/docker/registry$

    app@app:~/docker/registry$

    app@app:~/docker/registry$

    app@app:~/docker/registry$ docker images | grep jenkins

    192.168.10.106:5000/app/jenkins                        1.0.0          a7115c9ef551   3 weeks ago     1.51GB

    app/jenkins                                            1.0            a7115c9ef551   3 weeks ago     1.51GB

    app@app:~/docker/registry$

    最后,推送标记的镜像到本地 Registry:

    docker push 192.168.16.106:5000/app/jenkins:1.0.0

    示例:

    app@app:~/docker/registry$

    app@app:~/docker/registry$ docker push 192.168.10.106:5000/app/jenkins:1.0.0

    The push refers to repository [192.168.10.106:5000/app/jenkins]

    5f70bf18a086: Mounted from app/mdnice

    a30b1d65deb1: Pushed

    7746b0a769ee: Pushed

    5d62eace5f20: Pushed

    9c6b971806be: Pushed

    f88a5e4ffedf: Pushed

    083e56fe83eb: Pushed

    cc1aa31be4c7: Pushed

    e7542699c5f9: Pushed

    7bda4b78c961: Pushed

    32b6e276d5a8: Pushed

    eabefec3772e: Pushed

    e145a64deaba: Pushed

    31dbd8e7ce5e: Pushed

    ebb8d7205eaa: Pushed

    cb23a9220de6: Pushed

    734cd72d093f: Pushed

    992e88d23f64: Pushed

    2730a34737a7: Pushed

    2cd46f43e9fc: Pushed

    1c1312c0dc73: Pushed

    3cb48b2a745d: Pushed

    cd10e235b4bd: Pushed

    92ebff64190b: Pushed

    d8705911861f: Pushed

    58fc268a6ace: Pushed

    1a058d5342cc: Pushed

    1.0.0: digest: sha256:53ce7a9be0e390799b1021e919b6cbadd11d277c6809fb813fd4a22ea34ac613 size: 5984

    app@app:~/docker/registry$

    推送之后我们就可以在web服务的页面中看到了:

    访问web服务:  http://192.168.16.106:8035/

    推送到阿里云容器镜像

    如果我们想把镜像推送到公网,那么我们就可以使用阿里云容器镜像,虽然个人容器镜像托管服务是限额使用的,但额度对于我们个人使用的话已经足够了

    镜像服务地址:   https://cr.console.aliyun.com/cn-hangzhou/instances

    上传操作阿里云仓库有详细的说明,我们此处简单列举下:

    登录阿里云Docker Registry

    $ docker login --username=youname registry.cn-hangzhou.aliyuncs.com

    用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。

    您可以在访问凭证页面修改凭证密码。

    从Registry中拉取镜像

    $ docker pull registry.cn-hangzhou.aliyuncs.com/youname/jenkins:[镜像版本号]

    将镜像推送到Registry

    $ docker login --username=youname registry.cn-hangzhou.aliyuncs.com

    $ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/younamew/jenkins:[镜像版本号]

    $ docker push registry.cn-hangzhou.aliyuncs.com/youname/jenkins:[镜像版本号]

    推送之后也可以设置镜像的权限

    删除tag

    随着我们在服务器上 tag的增多,为了方便服务器上镜像的查看,我们也可以上传之后删除tag

    docker image rm 192.168.10.106:5000/app/jenkins:1.0.0

    示例:

    app@app:~/docker/registry$

    app@app:~/docker/registry$

    app@app:~/docker/registry$ docker images | grep jenkins

    192.168.10.106:5000/app/jenkins                        1.0.0          a7115c9ef551   3 weeks ago     1.51GB

    app/jenkins                                            1.0            a7115c9ef551   3 weeks ago     1.51GB

    app@app:~/docker/registry$

    app@app:~/docker/registry$

    app@app:~/docker/registry$

    app@app:~/docker/registry$ docker image rm 192.168.10.106:5000/app/jenkins:1.0.0

    Untagged: 192.168.10.106:5000/app/jenkins:1.0.0

    Untagged: 192.168.10.106:5000/app/jenkins@sha256:53ce7a9be0e390799b1021e919b6cbadd11d277c6809fb813fd4a22ea34ac613

    app@app:~/docker/registry$

    app@app:~/docker/registry$

    app@app:~/docker/registry$ docker images | grep jenkins

    app/jenkins                                            1.0            a7115c9ef551   3 weeks ago     1.51GB

    app@app:~/docker/registry$

    app@app:~/docker/registry$

    对于docker 镜像操作不太熟悉的家人们也可以翻阅下我们之前的文章《深入了解Docker镜像操作》

    总结

    通过使用 Docker Compose,我们可以轻松地在本地部署 Docker Registry,并开始使用自己的私有镜像存储。这为团队协作和镜像管理提供了更多的灵活性。

    相关文章

      网友评论

        本文标题:【Docker】使用 Docker Compose 部署 Doc

        本文链接:https://www.haomeiwen.com/subject/pjopodtx.html