Docker

作者: 二圈儿 | 来源:发表于2019-07-14 16:04 被阅读0次

一、搭建私有镜像仓库

说明:
1、 这里是通过阿里云,搭建Docker私有镜像仓库。
2、 这里打包的镜像是从官网拉下来的,并不是自己项目创建的新镜像,主要测试

首先进入阿里云创建镜像仓库: https://dev.aliyun.com/search.html-->点击管理中心(初次使用会提示开通,然后设置密码)
然后创建命名空间和镜像仓库:

有关docker拉取和推送指令,点击上图的中管理,就能看到。
1、登录阿里云
docker login --username=xxxx@qq.com registry.cn-hangzhou.aliyuncs.com

用于登录的用户名为阿里云账号全名,密码为上面开通开通服务时设置的密码。

2、将镜像推送到Registry
 docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/binron/xx_repertory:[镜像版本号]
 docker push registry.cn-hangzhou.aliyuncs.com/binron/xx_repertory:[镜像版本号]
3、从Registry中拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/binron/xx_repertory:[镜像版本号]

二、案例演示

1、推送到阿里云镜像仓库

(1) 先登陆阿里云镜像仓库

docker login --username=xxxx@qq.com registry.cn-hangzhou.aliyuncs.com

(2) 把本地镜像打包,推送到阿里云镜像仓库

docker tag dbfc48660aeb registry.cn-hangzhou.aliyuncs.com/binron/xx_repertory:xxiaonginx
docker push registry.cn-hangzhou.aliyuncs.com/binron/xx_repertory:xxiaonginx
(3) 在镜像仓库查看

我们可以看到 镜像仓库已经存在该仓库,说明推送成功

2、从阿里云镜像仓库拉取
docker pull registry.cn-hangzhou.aliyuncs.com/binron/xx_repertory:xxiaonginx
#拉取完成后
docker image

三、微服务应用Docker镜像

1、启动类

@SpringBootApplication
@RestController
public class DockerDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DockerDemoApplication.class, args);
    }

    //用来测试 是否镜像容器是否成功
    @RequestMapping("/user")
    public Object findUser(){
        Map<String, String > map = new HashMap<>();
        map.put("name", "xuxiaoxiao");
        map.put("age","2");
        return map;
    }
}

2、dockerfile-maven-plugin插件 pom.xml配置

        <properties>
           <docker.image.prefix>xdclass</docker.image.prefix>
        </properties>

        <build>
            <finalName>docker-demo</finalName>
            <plugins>
                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>dockerfile-maven-plugin</artifactId>
                    <version>1.3.6</version>
                    <configuration>
                        <repository>${docker.image.prefix}/${project.artifactId}</repository>
                        <buildArgs>
                            <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                        </buildArgs>
                    </configuration>
                </plugin>
            </plugins>
        </build>
##Spotify 的 docker-maven-plugin 插件是用maven插件方式构建docker镜像的。
${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}

3、配置Dockerfile (默认是项目根目录)
Dockerfile : 由一系列命令和参数构成的脚本,这些命令应用于基础镜像, 最终创建一个新的镜像

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

参数讲解:
FROM <image>:<tag> 需要一个基础镜像,可以是公共的或者是私有的, 后续构建会基于此镜像,如果同一个Dockerfile中建立多个镜像时,可以使用多个FROM指令
VOLUME 配置一个具有持久化功能的目录,主机 /var/lib/docker 目录下(docker安装目录)创建了一个临时文件,并链接到容器的/tmp。该步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
ARG 设置编译镜像时加入的参数,JAR_FILE是pom文件中的值 ENV 是设置容器的环境变量
COPY : 只支持将本地文件复制到容器 ,还有个ADD更强大但复杂点
ENTRYPOINT 容器启动时执行的命令
EXPOSE 8080 暴露镜像端口
4、执行打包命令

  mvn install dockerfile:build
  #maven打包构建,会触发单元测试,部分情况可以跳过,
  # mvn install -Dmaven.test.skip=true dockerfile:build

5、启动镜像
docker run -d --name "start" -p 8080:8080 镜像ID
然后访问应用,测试是否成功返回
6、查看日志

docker logs -f  容器ID

7、生产环境常见问题之配置中心访问
配置中心访问出错,路径不对

#解决:修改所有的注册中心,增加下面配置
eureka:
  client:
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  instance:
    instance-id: ${spring.cloud.client.ip-address}:${server.port}
    prefer-ip-address: true

相关文章

  • docker学习

    docker镜像 docker容器 docker仓库 安装docker docker版本 docker分为社区版和...

  • Docker安装和运行

    获取Docker 安装Docker 验证安装 1、获取Docker Docker for Mac Docker f...

  • Docker知识手册

    Docker 容器 启动docker:docker start 查看docker运行状态:docker stats...

  • Docker简介

    章节介绍 # Docker是什么# Docker包括什么# Docker镜像# Docker编配# Docker还...

  • Docker 常用操作

    Docker docker: 18.09.4、nvidia-docker: 2.0.3 docker 19.03 ...

  • rancher+harbor离线安装

    安装docker,此docker为社区版docker。docker官方文档:https://docs.docker...

  • Linux之Docker

    Linux之Docker 目录 Docker简单介绍 在线Docker安装 离线Docker安装 Docker简单...

  • Docker常用命令

    Docker常用命令 Docker帮助命令 docker version:查看docker版本 docker in...

  • Docker基础操作

    Docker部署 Docker安装 镜像加速 Docker 基础命令 Docker镜像管理 搜索镜像docker ...

  • docker容器状态查看命令集

    docker inspect 用法 : docker inspect [docker名称/docker short...

网友评论

      本文标题:Docker

      本文链接:https://www.haomeiwen.com/subject/lobehctx.html