前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker搭建私服-本地镜像库的具体实现

Docker搭建私服-本地镜像库的具体实现

作者头像
Java廖志伟
发布2022-09-29 14:16:48
1.2K0
发布2022-09-29 14:16:48
举报
文章被收录于专栏:高级开发进阶

搭建场景:

项目场景:首先需要二台机器,一个是客户端,用来部署项目运行的机器;一个是私服,用来部署本地镜像仓库的,这二台机器都要安装配置好docker。


机器配置:

这里我买了一台阿里云的G5服务器作为私服,配置如下: 2核心8G内存80G云盘1M宽带 用来专门搭建gitlab,jenkins,以及docker私服绰绰有余


另外一台客户端也是阿里云的轻量应用服务器,配置如下: 1核心2G内存40G云盘1M宽带 用来部署测试项目


搭建流程:

二台机器都更换镜像源(因为默认的太慢了,国内的更快,网易的)

代码语言:javascript
复制
sudo vim /etc/default/docker

输入以下参数:

代码语言:javascript
复制
DOCKER_OPTS="--registry-mirror=http://hub-mirror.c.163.com" 

在阿里云G5私服上拉取仓库

代码语言:javascript
复制
docker pull registry 

然后查看镜像

代码语言:javascript
复制
sudo docker images

启动该容器

创建目录,这里以/opt/data/registry为宿主机存储的目录

代码语言:javascript
复制
mkdir -p /opt/data/registry

运行镜像,配置端口以及将容器内的数据映射挂载在自己指定的目录上

代码语言:javascript
复制
docker run -d -v /opt/data/registry:/var/lib/registry -p 5000:5000 --restart=always --privileged=true --name private_registry registry:latest

参数说明:

-d : 让容器可以后台运行 -itd:在容器中打开一个伪终端进行交互操作,并在后台运行; -v:把宿主机的opt/data/registry目录绑定 到 容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化; -p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了(前者是宿主机的端口号,后者是容器的端口号); --restart=always:这是重启的策略,假如这个容器异常退出会自动重启容器; --name private_registry:创建容器命名为private_registry,你可以随便命名; registry:latest:这个是刚才pull下来的镜像; 如果成功执行,则表示我们的docker私有仓库搭建成功。 下面对这条命令的部分内容做下说明。 /registry表示宿主机目录,该目录如果不存在会自动创建。 docker -v 宿主机目录:容器目录

查看是否启动成功

代码语言:javascript
复制
sudo docker ps

这个时候镜像运行成功说明本地的镜像仓库就已经弄好了,是不是很快,别急,还要把自个的项目弄到本地镜像仓库上面去,到时候就可以直接通过命令拉取本地镜像仓库运行项目了,下面我以tomcat作为我们实际运行的项目为例。

在客户端制作tomcat镜像

代码语言:javascript
复制
 docker pull tomcat

这个时候,如果已经成功拉取tomcat之后,后面需要把我们客户端的tomcat推送到我们的私服上面去,到时候我们就可以直接通过私服拉取,而不是官方的docker hub,官方的私库需要自己去注册账号并且登录上去做操作,我们这里主要讲本地镜像仓库。那有同学可能会问了,服务器掉一个东西,肯定是需要登录或者给个什么密钥才能允许操作的呀,这就是后面我们要配置的东西了,docker私有仓库服务器,默认是基于https传输的,所以我们需要在客户端做相关设置,不使用https传输。

修改/etc/docker/daemon.json文件

代码语言:javascript
复制
vi /etc/docker/daemon.json

将私服的ip替换进去

代码语言:javascript
复制
{
        "registry-mirrors": ["https://njrds9qc.mirror.aliyuncs.com"],
        "insecure-registries":["你私服本地镜像仓库的ip:5000"]
}

重置配置

代码语言:javascript
复制
systemctl daemon-reload

重启docker

代码语言:javascript
复制
systemctl restart docker

制作属于自个的tomcat镜像

查看tomcat镜像id

代码语言:javascript
复制
docker images

开始制作:docker tag tomcat镜像id 私服本地镜像仓库的ip:5000/tomcat

代码语言:javascript
复制
#我的镜像id是b0e0b0a92cf9,ip我就不暴露了
docker tag b0e0b0a92cf9 私服ip:5000/tomcat

推送到私服本地镜像仓库上

代码语言:javascript
复制
docker push 私服ip:5000/tomcat

客户端(轻量)和服务器(G5)上分别执行curl -X GET http://私服ip:5000/v2/_catalog,查看私有仓库的镜像信息,都能见到相同的信息

代码语言:javascript
复制
curl -X GET http://私服ip:5000/v2/_catalog

{"repositories":["tomcat"]}

验证

在轻量服务器上删除tomcat镜像

代码语言:javascript
复制
docker rmi 私服ip:5000/tomcat tomcat

创建一个容器,映射8080端口

代码语言:javascript
复制
docker run --name tomcat001 -p 8080:8080 -idt 私服ip:5000/tomcat

使用轻量服务器的ip加端口访问8080,正常可以是不是会出现tomcat的欢迎页面

由于我们是一个新的服务器,所以出现了linux中docker安装tomcat,linux中tomcat访问404问题的情况

通过日志排查

代码语言:javascript
复制
dockerlogs -f mytomcat --tail=500

通过端口排查

代码语言:javascript
复制
docker port tomcat

进入docker运行的tomcat目录中

代码语言:javascript
复制
docker exec -it tomcat运行的id /bin/bash

通过命令

代码语言:javascript
复制
 ls -l

发现有一个webapps目录和webapps.dist目录 进入webapps目录并ls -l发现为空 进入webapps.dist目录发现root文件夹 接下来,删除webapps目录,更改webapps.dist目录名为webapps

代码语言:javascript
复制
rm -rf webapps
mv webapps.dist webapps

发现还是404,后面想起还有jdk没有安装

代码语言:javascript
复制
docker pull jdk

出现:Error response from daemon: pull access denied for jdk, repository does not exist or may require 'docker login': denied: requested access to the resource is denied 需要登录docker,这个其实也不用管了,因为已经出现tomcat欢迎页面了。 当然也可以继续登录进行,命令如下:

代码语言:javascript
复制
docker login

[root@ip ~]# docker login Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one. Username: 你docker登录名 Password: 你docker登录密码 WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded


总结:

博文介绍了Docker搭建私服-本地镜像库的具体实现,以tomcat为例演示,帮助大家快速理解上手。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 搭建场景:
  • 机器配置:
  • 搭建流程:
    • 二台机器都更换镜像源(因为默认的太慢了,国内的更快,网易的)
      • 在阿里云G5私服上拉取仓库
        • 然后查看镜像
          • 启动该容器
            • 创建目录,这里以/opt/data/registry为宿主机存储的目录
            • 运行镜像,配置端口以及将容器内的数据映射挂载在自己指定的目录上
            • 查看是否启动成功
        • 在客户端制作tomcat镜像
        • 修改/etc/docker/daemon.json文件
        • 制作属于自个的tomcat镜像
          • 查看tomcat镜像id
            • 开始制作:docker tag tomcat镜像id 私服本地镜像仓库的ip:5000/tomcat
            • 推送到私服本地镜像仓库上
            • 客户端(轻量)和服务器(G5)上分别执行curl -X GET http://私服ip:5000/v2/_catalog,查看私有仓库的镜像信息,都能见到相同的信息
            • 验证
              • 在轻量服务器上删除tomcat镜像
                • 创建一个容器,映射8080端口
                  • 使用轻量服务器的ip加端口访问8080,正常可以是不是会出现tomcat的欢迎页面
                  • 总结:
                  相关产品与服务
                  容器服务
                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档