前言:该系列文章,围绕持续集成: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

访问容器中应用的接口,查看响应正常即可。


同系列推荐


四、源代码地址

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

自动化集成:Docker容器入门简介的更多相关文章

  1. Docker容器入门篇

    第1章 Docker简介 1.1 Docker容器介绍 Docker官网:https://www.docker.com/ 什么是docker? Docker 最初是 dotCloud 公司创始人 So ...

  2. docker的入门简介

    可能写的不是很完美,需要大家指正修改和意见(谢谢合作) docker的入门: docker的好处: 1.更快交付你的应用(Faster delivery of your applications) 2 ...

  3. Docker容器入门介绍

    1.前言 Docker是一种新兴的虚拟化技术,能够一定程度上的代替传统虚拟机.不过,Docker 跟传统的虚拟化方式相比具有众多的优势.Docker: 本意是码头工人,言外之意是集装箱: Java号称 ...

  4. Docker容器入门

    为什么要看docker 从去年起就或多或少的接受了docker的熏陶,主要还是Infoq在去年有很多关于docker的实践视频讲座,记得有一篇是<Docker在雪球的技术实践>,当时听的也 ...

  5. docker容器入门最佳教程

    为什么要写这个 简单回答是:容器技术非常热门,但门槛高. 容器技术是继大数据和云计算之后又一炙手可热的技术,而且未来相当一段时间内都会非常流行. 对 IT 行业来说,这是一项非常有价值的技术.而对 I ...

  6. Docker容器入门实践

    Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 Linux 基金会,遵从了 ...

  7. Docker 容器入门

    1.1 容器简介 1.1.1 什么是 Linux 容器 Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件.容器提供的镜像包含了应用的所有依赖项, ...

  8. Docker容器入门之一:部署SpringBoot项目

    一.环境准备:    1.vm虚拟机: Workstation 12 Pro 12.5.7 build-5813279 2.Centos 7 在虚拟机上安装好Centos7系统后,就可以开始准备安装D ...

  9. Docker容器入门-基本命令的使用

    目前容器技术使用相当广泛 不会或者没有使用过容器感觉都不像是个搞技术的 所以,我也就docker相关内容做一个整理 只有不断的学习,才能保持自己的竞争力 什么是容器? 容器是一种轻量级.可移植.自包含 ...

随机推荐

  1. 日常Java 2021/10/20

    Java提供了一套实现Collection接口的标准集合类 bstractCollection 实现了大部分的集合接口. AbstractList 继承于AbstractCollection并且实现了 ...

  2. 商业爬虫学习笔记day8-------json的使用

    一. 简介 JSON,全称为JavaScript Object Notation(JavaScript对象标记),它通过对象和数组的组合来表示数据,是一种轻量级的数据交换格式.它基于 ECMAScri ...

  3. 容器之分类与各种测试(三)——slist的用法

    slist和forward_list的不同之处在于其所在的库 使用slist需要包含 #include<ext\list> 而使用forward_list则需要包含 #include< ...

  4. C++异常处理(try、catch、throw)

    本文为转载 博主原文连接 我们通常希望自己编写的程序能够在异常的情况下也能作出相应的处理,而不至于程序莫名其妙地中断或者中止运行了.在设计程序时应充分考虑各种异常情况,并加以处理. 在C++中,一个函 ...

  5. ajaxSubmit返回JSON格式

    开发时遇到根据不同情况返回错误提示信息的需求,用到了ajax中返回json格式数据的. 前台请求代码: <script type="text/javascript">  ...

  6. 01_ubantu国内软件源配置

    查找自己版本对应的软件源 https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ 以下为19.10版本清华大学的,个人100M的带宽,平均安装速度在600K ...

  7. liunx 安装ActiveMQ 及 spring boot 初步整合 activemq

    源码地址:  https://gitee.com/kevin9401/microservice.git 一.安装 ActiveMQ: 1. 下载 ActiveMQ wget  https://arch ...

  8. 『与善仁』Appium基础 — 24、等待activity出现

    目录 1.什么是等待activity出现 2.wait_activity()方法 3.获取当前页面的activity方法 4.综合练习 1.什么是等待activity出现 在启动APP的时候,要配置包 ...

  9. 6、Redis五大数据类型---列表(List)

    一.列表(List)简介 单键多值:Redis 列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素到列表的头部(左边)或者尾部(右边). 它的底层实际是个双向链表,对两端的操作性能很高,通过 ...

  10. 「Spark从精通到重新入门(二)」Spark中不可不知的动态资源分配

    前言 资源是影响 Spark 应用执行效率的一个重要因素.Spark 应用中真正执行 task 的组件是 Executor,可以通过spark.executor.instances 指定 Spark ...