Docker Registry

Docker Registry 2.0搭建

  1. 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
image.png

使用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构建镜像

1654651389163.png

查看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

his/resource-service 为刚构建的镜像

启动容器

[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

测试 http://10.10.10.21:10003/swagger-ui.html

1654653456293.png