Docker实战(三)

简介: 我们都知道如果用 docker hub 来做仓库会很慢,因为docker hub 服务器在国外,那么现在有必要讲一下如何搭建一个 docker 私有仓库,并进行快速部署。

我们都知道如果用 docker hub 来做仓库会很慢,因为docker hub 服务器在国外,那么现在有必要讲一下如何搭建一个 docker 私有仓库,并进行快速部署。


启动 registry 私有库容器



官方有个镜像叫 「registry」,它可以启动一个私有仓库,获取官方 registry 镜像命令如下:

docker pull registry


将 registry 镜像 pull 到本地后,通过镜像启动一个 registry 私有库容器,私有库地址会在容器内的 /var/lib/registry 路径下,如果需要将私有库挂载在本地路径下,还需要 -v 参数:

docker run -d -it \
    -p 5000:5000 \
    -v /data/registry/:/var/lib/registry \
    --name myregistry registry

640.png


push 镜像到私有库



docker镜像名字命名规律:

<仓库地址>/<仓库名字>:<标签>


所以需要将本地镜像改成私有库地址的镜像:

docker tag objcoding/docker-maven-deploy:0.0.4 119.29.xxx.232:5000/docker-maven-deploy:0.0.4

640.png


Docker 默认不允许 http 方式 push 镜像,如果要用 http 来推送,则需要在 /etc/docker/ 目录下创建daemon.json,内容如下:

{
  "registry-mirror": [
    "https://registry.docker-cn.com"
  ],
  "insecure-registries": [
    "119.29.xxx.232:5000"
  ]
}


执行 push 命令:

docker push 119.29.xxx.232:5000/docker-maven-deploy:0.0.4


push 过程:640.jpg


从私有库中 pull 镜像



前面我们已经将私有库挂载在本地目录了,查看一下刚刚 push 的镜像是否存在:

640.png


发现刚刚 push 的镜像已经在本地目录了,这时我们需要将它 pull 下来:

docker pull 119.29.xxx.232:5000/docker-maven-deploy:0.0.4


运行镜像:

docker run -d -p 8085:8085 --name docker-maven-deploy 127.0.0.1:5000/docker-maven-deploy:0.0.4


docker-maven-plugin



以前打包 docker 镜像的时候还要手动 docker build,现在利用 docker-maven-plugin 插件打包 docker 镜像,使打包镜像步骤进一步简化。


在 maven pom.xml 中加入 docker-maven-plugin 插件:

<plugin>
  <groupId>com.spotify</groupId>
  <artifactId>docker-maven-plugin</artifactId>
  <version>0.4.13</version>
  <configuration>
    <!-- objcoding/docker-maven-deploy打包后的名称,0.0.2镜像 TAG -->
    <imageName>objcoding/docker-maven-deploy:0.0.2</imageName>
    <!-- Dockerfile 所在路径 --><dockerDirectory>${project.basedir}/src/main/resources/docker</dockerDirectory>
    <resources>
      <resource>
        <!-- target 所在路径 -->
        <targetPath>/</targetPath>
        <directory>${project.build.directory}</directory>
        <!-- 打包后的 springboot jar 包文件名称 -->
        <include>${project.build.finalName}.jar</include>
      </resource>
    </resources>
    <!-- docker仓库 -->
    <!-- <serverId>my-docker-repository</serverId> -->
  </configuration>
</plugin>


在 src/main/resources/docker/ 中添加 Dockerfile:

From java:8
MAINTAINER zhangchenghui zhangchenghui.dev@gmail.com
ADD docker-maven-sample-1.0-SNAPSHOT.jar /app.jar
EXPOSE 8080
ENTRYPOINT [ "java", "-jar", "app.jar" ]


在项目根目录下执行一下命令:

mvn clean install docker:build


出现以下编译后的信息:

640.jpg


获取 Demo 源码:

docker-deploy-tutorial[1]


References


[1]docker-deploy-tutorial: https://github.com/objcoding/docker-deploy-tutorial


相关文章
|
20天前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
60 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
2月前
|
Docker 容器
Docker自建仓库之Harbor高可用部署实战篇
关于如何部署Harbor高可用性的实战教程,涵盖了从单机部署到镜像仓库同步的详细步骤。
143 15
Docker自建仓库之Harbor高可用部署实战篇
|
2月前
|
算法 Linux 调度
Docker的资源限制实战篇
本文详细介绍了如何利用Docker对容器的资源进行限制,包括内存和CPU的使用。文章首先概述了资源限制的重要性及其在Linux系统中的实现原理,并强调了不当设置可能导致的风险。接着,通过一系列实战案例展示了如何具体设置容器的内存限制,包括硬性限制、动态调整以及软限制等。最后,文章还提供了限制容器CPU访问的具体方法和示例,如指定容器使用的CPU核心数和基于`--cpu-shares`参数对CPU资源进行分配。通过这些实践,读者可以更好地理解和掌握Docker资源管理技巧。
225 14
Docker的资源限制实战篇
|
2月前
|
存储 数据管理 应用服务中间件
Docker的数据管理实战篇
关于Docker数据管理实战的教程,涵盖了Docker数据卷的使用、特点、场景以及数据卷容器的概念和应用。
62 13
Docker的数据管理实战篇
|
2月前
|
运维 Cloud Native Docker
云原生技术入门:Docker容器化实战
【9月更文挑战第20天】本文将引导你走进云原生技术的世界,通过Docker容器化技术的实战演练,深入理解其背后的原理和应用。我们将一起探索如何在云平台上利用Docker简化部署、扩展和管理应用程序的过程,并揭示这一技术如何改变现代软件的开发和运维模式。
|
2月前
|
Ubuntu Linux Docker
Ubuntu 18.04 安装Docker实战案例
关于如何在Ubuntu 18.04系统上安装Docker的实战案例,包括安装步骤、配置镜像加速以及下载和运行Docker镜像的过程。
346 3
Ubuntu 18.04 安装Docker实战案例
|
2月前
|
存储 Linux Docker
CentOS 7.6安装Docker实战案例及存储引擎和服务进程简介
关于如何在CentOS 7.6上安装Docker、介绍Docker存储引擎以及服务进程关系的实战案例。
138 3
CentOS 7.6安装Docker实战案例及存储引擎和服务进程简介
|
2月前
|
关系型数据库 Linux 虚拟化
Docker入门基础实战
Docker入门基础实战
|
1月前
|
Ubuntu Linux 应用服务中间件
Docker容器入门实战
Docker容器入门实战
|
2月前
|
存储 测试技术 数据安全/隐私保护
Docker自建仓库之Harbor部署实战
关于如何部署和使用Harbor作为Docker企业级私有镜像仓库的详细教程。
583 12