关于docker:自动化集成Docker容器入门简介

41次阅读

共计 2488 个字符,预计需要花费 7 分钟才能阅读完成。

前言:该系列文章,围绕继续集成:Jenkins+Docker+K8S 相干组件,实现自动化治理源码编译、打包、镜像构建、部署等操作;本篇文章次要形容 Docker 根底用法

一、Docker 简介

1、根底形容

Docker 作为开源的利用容器引擎,能够把应用程序和其相干依赖打包生成一个 Image 镜像文件,是一个规范的运行环境,提供可继续交付的能力,通过镜像文件能够创立多个 Docker 容器,这里能够了解为类创建对象的原理;镜像文件能够推送到仓库 Repository 中,这里能够了解为 Git 仓库治理代码的原理。

2、外围概念

  • Image 镜像:蕴含利用和依赖的类库,配置等;
  • Container 容器:通过镜像文件创立多个容器,运行打包利用;
  • Repository 仓库:寄存镜像文件的云端服务;

镜像文件与容器,能够了解为基于快照启动虚拟机;或者类与实例对象的关系。

3、架构原理

Docker 基于客户端 - 服务器的架构模式,Docker 的守护过程(daemon)监听客户端的申请命令,从而治理镜像文件、容器等。

二、治理命令

1、查 docker 信息

# 查看根底信息
docker info

# 查看版本信息
docker version

# 查看命令阐明
docker --help

2、镜像文件

根底命令

# 查看本地镜像列表
docker images  或者 docker image ls

# 搜寻镜像
docker search ImageName

# 拉取镜像
docker image pull ImageName

# 删除镜像
docker image rm ImageName

推送仓库

首先在云服务平台申请公有的镜像治理仓库,并配置好拜访仓库的账号和明码,通过 docker 命令把本地镜像文件推送到该仓库,这里以阿里云为例:

# 1、登录仓库
docker login --username= 账户名 仓库_url

提醒输入仓库明码:Login Succeeded

# 2、查看本地镜像
docker images
REPOSITORY    TAG       IMAGE ID       CREATED          SIZE
cloud-app     latest    b11d221cc3e0   13 seconds ago   662MB

# 3、标记上述镜像
docker tag b11d221cc3e0 仓库_url/cicada-image/cloud-app:latest

# 4、执行推送命令
docker push 仓库_url/cicada-image/cloud-app:latest

# 5、拉取该镜像到本地
docker pull 仓库_url/cicada-image/cloud-app:latest

留神:cicada-image是仓库的命名空间,点击 cloud-app 能够查看镜像操作的步骤文档:

3、容器治理

# 列出正在运行或运行过的容器
docker ps -a

# 进行容器运行
docker stop 容器 ID

# 删除指定容器
docker rm 容器 ID

# 删除全副暂停容器
docker rm -f $(docker ps -a -q)

4、入门案例

- 拉取 hello-world 镜像
docker image pull hello-world

输入日志:Using default tag: latest
latest: Pulling from library/hello-world

- 查看本地镜像
docker image ls
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
hello-world   latest    feb5d9fea6a5   7 weeks ago   13.3kB

- 运行 hello-world
docker container run hello-world

输入日志:Hello from Docker!
This message shows that your installation appears to be working correctly.

三、构建镜像

1、Dockerfile

Dockerfile 是一个文本文档,蕴含构建 Docker 镜像的指令,通过读取该脚本中的指令并执行,实现相干 build 过程。

注意事项

  • 脚本命名 Dockerfile 并且没有任何后缀;
  • Docker 在构建镜像时,默认辨认该文件;
  • 通常脚本文件放在打包工程的根目录下;

2、根底样例

语法阐明

  • FROM:指定须要应用的根底镜像;
  • MAINTAINER:定义脚本维护者;
  • VOLUME:指定长久化文件目录;
  • WORKDIR:切换到工作目录;
  • ADD:将指定文件增加到容器中;
  • COPY:将指定文件复制到容器中;
  • RUN:镜像构建时执行的命令;
  • ENTRYPOINT:容器参数配置;

应用案例

# 根底镜像
FROM java:8

# 维护者
MAINTAINER cicadasmile

# 长久化目录
VOLUME /data/docker/logs

# 增加应用服务 JAR 包
ADD auto-client.jar application.jar

# 配置参数
ENTRYPOINT ["java","-Dspring.profiles.active=dev","-Djava.security.egd=file:/dev/./urandom","-jar","/application.jar"]

3、构建镜像

我的项目打包

这里获取 maven 我的项目打包后的 jar 包,即 auto-client.jar 包,而后复制到 docker 镜像制作的目录下,与 Dockerfile 在同一级。

构造如下

镜像构建命令

docker build -t client-img:latest .

构建流程执行完之后,查看镜像列表,下面构建的镜像曾经存在;

4、运行容器

# 执行命令
docker run -d -p 8079:8079 client-img:latest

# 查看日志
docker logs 容器 ID

拜访容器中利用的接口,查看响应失常即可。


同系列举荐

  • Jenkins 管理工具详解
  • Pipeline 流水语法详解
  • 微服务灰度公布原理
  • 服务自动化部署和治理
  • 微服务组件二次浅封装

四、源代码地址

GitEE·地址
https://gitee.com/cicadasmile/butte-auto-parent
Wiki·地址
https://gitee.com/cicadasmile/butte-java-note

正文完
 0