Docker Registry
Docker Registry 2.0搭建
docker run -d -p 5000:5000 --restart=always --name registry2 registry:2
如果遇到镜像下载不下来的情况,需要修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值,然后重启docker服务:
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
Docker开启远程API
用vim编辑器修改docker.service文件.
vi /usr/lib/systemd/system/docker.service
需要修改的部分:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
修改后的部分:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
让Docker支持http上传镜像
echo '{ "insecure-registries":["192.168.3.101:5000"] }' > /etc/docker/daemon.json
修改配置后需要使用如下命令使配置生效
systemctl daemon-reload
重新启动Docker服务
systemctl stop docker
systemctl start docker
开启防火墙的Docker构建端口(如果 关闭防火墙此步骤省略)
firewall-cmd --zone=public --add-port=2375/tcp --permanent
firewall-cmd --reload
测试registry 是否部署成功
http://10.10.10.21:2375/version
使用Maven构建Docker镜像
在应用的pom.xml文件中添加docker-maven-plugin的依赖
<plugins>
<!-- plugin 标签:一个具体插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>his/${project.artifactId}</imageName>
<dockerHost>http://10.10.10.21:2375</dockerHost>
<dockerDirectory>src/main/docker</dockerDirectory>
<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>
</configuration>
</plugin>
</plugins>
相关配置说明:
- executions.execution.phase:此处配置了在maven打包应用时构建docker镜像;
- imageName:用于指定镜像名称,his是仓库名称,${project.artifactId}为镜像名称
- dockerHost:打包后上传到的docker服务器地址;
- dockerDirectory:指定dockerfile 文件路径
- entryPoint:docker容器启动时执行的命令;
- resources.resource.targetPath:将打包后的资源文件复制到该目录;
- resources.resource.directory:需要复制的文件所在目录,maven打包的应用jar包保存在target目录下面;
- resources.resource.include:需要复制的文件,打包好的应用jar包。
添加dockerfile文件
FROM java:8
VOLUME /tmp
WORKDIR /apps
ADD resource-service-1.0.0.jar /resource-service.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/resource-service.jar"]
使用Maven构建镜像
查看docker镜像
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
his/resource-service latest 262e8c1c19ad 11 hours ago 703MB
registry 2 773dbf02e42e 12 days ago 24.1MB
<none> <none> 76152be68449 3 weeks ago 524MB
nacos/nacos-server latest b0a4aba28604 4 weeks ago 1.06GB
mysql 8.0.27 3218b38490ce 5 months ago 516MB
mydemo latest 9294a4defb85 6 months ago 778MB
mcr.microsoft.com/dotnet/sdk 6.0 c8231459539b 6 months ago 715MB
busybox latest d23834f29b38 6 months ago 1.24MB
nginx latest ea335eea17ab 6 months ago 141MB
java 8 d23bdf5b1b1b 5 years ago 643MB
启动容器
[root@localhost ~]# docker run -p 10003:10003 --name resourceservice \
> -e TZ="Asia/Shanghai" \
> -d his/resource-service:latest
e283e6b49ed75555fb9917040dbcec267a63d9f0d99a2d502cc30cb0e1e7b3ef
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e283e6b49ed7 his/resource-service:latest "java -Djava.securit…" 4 seconds ago Up 3 seconds 0.0.0.0:10003->10003/tcp, :::10003->10003/tcp resourceservice
d0c1f66ba427 registry:2 "/entrypoint.sh /etc…" 15 hours ago Up 15 hours 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp registry2
9429d73b26c0 nacos/nacos-server "bin/docker-startup.…" 2 weeks ago Up 15 hours 0.0.0.0:8858->8848/tcp, :::8858->8848/tcp nacos1
115f6c6075b0 nacos/nacos-server "bin/docker-startup.…" 2 weeks ago Up 15 hours 0.0.0.0:8848->8848/tcp, :::8848->8848/tcp nacos
0d55ae82a615 mysql:8.0.27 "docker-entrypoint.s…" 2 weeks ago Up 15 hours 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql801