简单的Docker镜像上传及docker-compose使用

本文介绍了如何在阿里云注册并创建私有镜像仓库,然后通过maven配置上传本地镜像。接着讲解了Dockerfile的编写,包括基础镜像选择、挂载点设置和启动指令。最后,详细阐述了docker-compose.yml的编写,涉及服务配置、镜像拉取、容器互通、端口映射和启动命令,以及如何设置挂载点。

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

一.仓库和镜像创建和上传
1.注册/登录阿里云容器服务中心:https://cr.console.aliyun.com/
2.选择镜像仓库地址(注:这里选择华北1区,位置在青岛)
这里写图片描述
3.创建镜像仓库:
1).仓库名称填写项目名称
2).仓库类型选择为私有
3).代码源根据需求选择(初期可以使用本地仓库,后期可以选择使用git动态上传)

4.本地镜像上传(如需本地手动上传)
这里写图片描述
5.maven服务配置(如果是使用docker-maven-plugin工具自动上传,则需配置)
1)在maven的setting.xml中增加如下配置:

<servers>
      <server>
        <id>docker-aliyun</id>
        <username>******</username>
        <password>******</password>
        <configuration>
          <email>****@163.com</email>
        </configuration>
      </server>
</servers>

2)在项目的pom.xml中添加如下配置

<plugin>
   <groupId>com.spotify</groupId>
   <artifactId>docker-maven-plugin</artifactId>
   <version>0.4.13</version>
   <executions>
      <execution>
         <phase>package</phase>
         <goals>
            <goal>build</goal>
         </goals>
      </execution>
   </executions>
   <configuration>
      <!-- 私有仓库配置,需要settings.xml文件配合serverId-->
      <serverId>docker-aliyun</serverId>
      <registryUrl>${docker.repostory}</registryUrl>
      <!--install阶段也上传,否则只有deploy阶段上传-->
      <pushImage>true</pushImage>
      <imageName>${docker.repostory}/${docker.registry.name}/${docker.id}</imageName>
      <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
      <imageTags>
         <!--docker的tag为项目版本号、latest-->
         <imageTag>latest</imageTag>
      </imageTags>
      <resources>
         <resource>
            <targetPath>/</targetPath>
            <directory>${project.build.directory}</directory>
            <include>${project.build.finalName}.jar</include>
         </resource>
      </resources>
   </configuration>
</plugin>

二、DockerFile文件的编写
样例:

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD user-service-1.0.0-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

注:
1.From 为镜像的基础镜像,这里选的是jdk8+centos的基本镜像
2.VOLUME 指令创建的挂载点(无法指定主机上对应的目录,是自动生成的)
3.ADD 将jar包上传至容器上
4.ENTRYPOINT容器启动时执行指令
5.如果项目需要指定等待另外一个项目启动后启动,则可以删除ENTRYPOINT,使用wait.it.sh文件,通过docker-compose来启动,后边会详细讲解

三Dockercompose.yml文件编写
样例:
这里写图片描述
1.services为服务根节点,config/generator为项目的名称,可根据具体项目响应更改
2.Image为加载的镜像的名称,由于是私有镜像,在拉取镜像前,需要在终端输入如下命令(这样才有权限拉取镜像):
sudo docker login –username=【账号名称】 registry.cn-qingdao.aliyuncs.com
3.links为互通的容器,使用了links的容器之间,可以通过项目名称直接访问,如:
在generator容器中使用http://config:8888即可访问config的服务
4.ports为容器暴露的端口号
5.Entrypoint 为容器启动后运行的命令,这里的命令意思是等待config服务启动后执行command的命令,超时时间为6s
6.同样docker-compose也可以配置挂载点,如:
volumes:
- ./logstash/conf.d:/etc/logstash/conf.d:ro
- ./logstash/patterns:/etc/logstash/patterns:ro
:ro(readonly)的意思是只允许读操作,不写则默认可以读写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值