docker搭建私有倉庫
- 2019 年 12 月 31 日
- 筆記
文章目錄
1.4. Docker Maven插件自動上傳鏡像到私有倉庫
Docker私有倉庫
步驟
docker pull registry
docker run --name registry -p 5000:5000 -d registry
- 啟動完成後訪問
http:// 192.168.174.130:5000/v2/_catalog
即可看到如下的內容說明啟動成功:
{ "repositories": [] }
- 添加信任(無論是下載還是上傳都需要添加,這裡的ip和端口指定的是私有倉庫的宿主機的ip):
vim /etc/docker/daemon.json
,添加如下的內容:
"insecure-registries":["192.168.174.130:5000"]
- 重啟docker ,
systemctl restart docker
上傳鏡像到私有倉庫
docker tag jdk8 192.168.174.130:5000/jdk8
: 標記該鏡像- 指定倉庫所在的ip和端口號
- 第一個jdk8是當前的鏡像名稱(或者填Id),後一個是上傳到倉庫中的名字,可以任意起
docker images
:此時查看鏡像,發現多了一個192.168.174.130:5000/jdk8
的鏡像docker push 192.168.174.130:5000/jdk8
:將標記的鏡像上傳到私有倉庫中- 此時再次訪問
http:// 192.168.174.130:5000/v2/_catalog
,將會看到如下內容
{ "repositories": [ "jdk8" ] }
下載鏡像
- 添加信任
- vim /etc/docker/daemon.json`,添加如下的內容:
"insecure-registries":["192.168.174.130:5000"]
- 重啟docker ,
systemctl restart docker
- 下載,需要指定ip和端口:
docker pull 192.168.174.130:5000/jdk8
Docker Maven插件自動上傳鏡像到私有倉庫
步驟
倉庫所在服務器的配置
- 添加信任,同上
- 修改
/etc/sysconfig/docker
文件:vim /etc/sysconfig/docker
- 在最下面添加一行
DOCKER_OPTS='-H unix:///var/run/docker.sock -H 0.0.0.0:2375'
- 在最下面添加一行
vim /lib/systemd/system/docker.service
添加如下內容- 執行下面的命令刷新配置並且重啟docker
systemctl daemon-reload systemctl restart docker
- 開啟防火牆的端口:
firewall-cmd --zone=public --add-port=2375/tcp --permanent
- 重新載入配置
firewall-cmd --reload
項目中的配置
- 在pom.xml文件中添加如下內容:
<build> <!-- 指定的最終打成jar包的名字 --> <finalName>demo</finalName> <plugins> <!-- SpringBoot的maven插件 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.13</version> <configuration> <!-- 注意imageName需要指定的`IP:端口/image_name`的格式--> <imageName>192.168.174.130:5000/${project.artifactId}:${project.version}</imageName> <!-- 指定基礎鏡像,不需要運行,相當於 from hub.c.163.com/library/java:8-alpine --> <baseImage>hub.c.163.com/library/java:8-alpine</baseImage> <!--覆蓋相同標籤鏡像--> <forceTags>true</forceTags> <!-- 運行jar包 --> <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> <!-- 指定私有倉庫所在服務器的2375端口,之前配置過可以遠程訪問的那個 --> <dockerHost>http://192.168.174.130:2375</dockerHost> </configuration> </plugin> </plugins> </build>
- 在命令台運行如下的命令,即可完成生成鏡像並且上傳到私有倉庫
mvn clean package docker:build -DpushImage
- 上述命令的解析如下:
mvn clean package
:maven打jar包docker:build
:docker構建鏡像的命令-DpushImage
: 將生成的鏡像上傳到私有倉庫中
- 執行並且運行成功之後訪問
http://192.168.174.130:5000/v2/_catalog
,將會出現如下的內容
{ "repositories": [ "demo" ] }
- 訪問
http://192.168.174.130:5000/v2/demo/tags/list
,可以看到demo這個鏡像的所有版本

- 上面的運行完成之後,查看項目中自動生成Dockerfile,如下:
FROM hub.c.163.com/library/java:8-alpine ADD /demo.jar // ENTRYPOINT ["java", "-jar", "/demo.jar"]
拉取上傳的鏡像並且運行
- 在拉取之前需要添加信任
- 使用
docker pull 192.168.174.130:5000/demo:0.0.1-SNAPSHOT
下載倉庫中的鏡像 - 運行鏡像:
docker run --name demo -p 7001:7001 -d f7f36f3f3f06
- 其中生成的鏡像端口為項目自己本身配置的端口,只需要映射出去即可
- 此時我們可以訪問
http://192.168.174.128:7001/
,就能看到eureka註冊中心的頁面