Docker将镜像文件发布到私服库

本文详细介绍如何使用Docker创建新镜像,并将其推送到私有仓库,包括镜像的创建、修改Tag、推送及从私有仓库拉取等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、创建新镜像文件

1、创建容器并在容器内创建文件

在根目录下创建 /xiaohemiao/test.txt 并在test.txt文件中写入一些内容

2、提交容器副本使之成为一个新的镜像

# 提交格式docker commit -m="提交的描述信息" -a="作者" 容器id 要创建的目标镜像名:[标签名,也就是版本号]

二、本地镜像推送到私有库

1、下载镜像Docker Registry

docker pull registry

2、创建本地私有容器库

# 创建一个名为registry的容器,将宿主机5000端口映射到容器的5000端口,将宿主机的/myregistry目录映射到容器/tmp/registry目录作为数据容器卷docker run -id -p 5000:5000 -v /myregistry/:/tmp/registry --privileged=true registry默认情况,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器卷映射,方便与宿主机联调

3、curl验证私服库上的镜像

# IP地址是自己宿主机的ip,端口号是刚刚创建容器映射的宿主机端口curl -XGET http://192.168.140.129:5000/v2/_catalog

4、将新镜像myredis:latest修改符合私服规范的Tag

# 格式 docker tag 镜像名称:版本号 ip:端口/镜像名称:版本号docker tag myredis:latest 192.168.140.129:5000/myredis:latest

5、修改配置文件使之支持http

vi /etc/docker/daemon.json

添加如下配置:insecure-registries":["192.168.140.129:5000"]

上述理由:docker默认不允许http方式推送镜像,通过配置选项来取消这个限制,修改完后如果不生效,建议重启docker

6、push推送到私服库

# 后台配置重新加载systemctl daemon-reload

重启docker服务

systemctl restart docker

查看配置的端口号(5000)是否开启(非必要)

netstat -nlpt

# 推送到私服docker push 192.168.140.129:5000/myredis:latest

7、重新查看私服库镜像有哪些

# 查看私服镜像文件(ip地址修改成自己宿主机的ip)curl -XGET http://192.168.140.129:5000/v2/_catalog

三、pull私服镜像

首先先删掉目前docker上的镜像,然后再从私服镜像pull

# pull私服镜像(ip地址填写当前宿主机的ip和端口)docker pull 192.68.140.129:5000/myredis:latest

### 单项目自动化构建 Docker 镜像并推送至私服 Registry 教程 为了实现单项目的自动化构建 Docker 镜像并将镜像推送到私服 Registry,可以通过 Maven 插件 `docker-maven-plugin` 来完成这一过程。以下是详细的说明: #### 1. 添加依赖和插件到 `pom.xml` 在 Spring Boot 项目的 `pom.xml` 文件中,添加必要的依赖项和 `docker-maven-plugin` 插件。 ```xml <build> <plugins> <!-- Spring Boot Maven Plugin --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!-- Docker Maven Plugin --> <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.4.13</version> <executions> <execution> <id>default</id> <goals> <goal>build</goal> <goal>push</goal> </goals> </execution> </executions> <configuration> <repository>${project.artifactId}</repository> <tag>${project.version}</tag> <buildArgs> <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> </buildArgs> <dockerfile>Dockerfile</dockerfile> <url>http://your-docker-registry-url:5000</url> <!-- 替换为私服地址 --> <username>your-username</username> <!-- 如果需要认证 --> <password>your-password</password> <!-- 如果需要认证 --> </configuration> </plugin> </plugins> </build> ``` 此部分配置定义了如何构建 Docker 镜像以及将其推送到私服 Registry 的 URL 和凭证信息[^1]。 --- #### 2. 编写 Dockerfile 在同一目录下创建一个名为 `Dockerfile` 的文件,用于描述如何打包应用程序。 ```dockerfile FROM openjdk:17-jdk-slim ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java", "-jar", "/app.jar"] ``` 该 Dockerfile 使用 OpenJDK 基础镜像,并将编译后的 `.jar` 文件复制到容器中作为入口程序[^1]。 --- #### 3. 构建和推送流程 执行以下命令来触发自动化的构建和推送操作: ```bash mvn clean package dockerfile:build dockerfile:push ``` 这条命令会依次清理旧的目标文件、重新打包应用、构建 Docker 镜像,并最终将镜像推送到指定的私服 Registry 中。 --- #### 4. 测试私服中的镜像 确认镜像已成功上传私服后,可以使用以下方法验证其可用性: ##### 查询镜像标签列表 通过发送 HTTP 请求查询私服上的镜像及其对应的标签: ```bash curl -XGET http://your-docker-registry-url:5000/v2/your-repository/tags/list ``` 返回的结果类似于 JSON 格式的标签列表[^3]。 ##### 下载并运行镜像 尝试从私服下载刚刚上传镜像并启动它: ```bash docker pull your-docker-registry-url:5000/your-repository:latest docker run -d -p 8080:8080 your-docker-registry-url:5000/your-repository:latest ``` 这一步可以帮助验证整个流程是否正常工作[^2]。 --- ### 注意事项 - **私服权限管理**:如果私服启用了身份验证,则需确保提供正确的用户名和密码。 - **网络连通性**:确保本地机器能够访问私服所在的服务器。 - **Docker 版本兼容性**:某些功能可能受限于特定版本的 Docker 或者 Docker Compose 工具链。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值