自动化集成:Docker容器入门简介
前言:该系列文章,围绕持续集成: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容器入门简介的更多相关文章
- Docker容器入门篇
第1章 Docker简介 1.1 Docker容器介绍 Docker官网:https://www.docker.com/ 什么是docker? Docker 最初是 dotCloud 公司创始人 So ...
- docker的入门简介
可能写的不是很完美,需要大家指正修改和意见(谢谢合作) docker的入门: docker的好处: 1.更快交付你的应用(Faster delivery of your applications) 2 ...
- Docker容器入门介绍
1.前言 Docker是一种新兴的虚拟化技术,能够一定程度上的代替传统虚拟机.不过,Docker 跟传统的虚拟化方式相比具有众多的优势.Docker: 本意是码头工人,言外之意是集装箱: Java号称 ...
- Docker容器入门
为什么要看docker 从去年起就或多或少的接受了docker的熏陶,主要还是Infoq在去年有很多关于docker的实践视频讲座,记得有一篇是<Docker在雪球的技术实践>,当时听的也 ...
- docker容器入门最佳教程
为什么要写这个 简单回答是:容器技术非常热门,但门槛高. 容器技术是继大数据和云计算之后又一炙手可热的技术,而且未来相当一段时间内都会非常流行. 对 IT 行业来说,这是一项非常有价值的技术.而对 I ...
- Docker容器入门实践
Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 Linux 基金会,遵从了 ...
- Docker 容器入门
1.1 容器简介 1.1.1 什么是 Linux 容器 Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件.容器提供的镜像包含了应用的所有依赖项, ...
- Docker容器入门之一:部署SpringBoot项目
一.环境准备: 1.vm虚拟机: Workstation 12 Pro 12.5.7 build-5813279 2.Centos 7 在虚拟机上安装好Centos7系统后,就可以开始准备安装D ...
- Docker容器入门-基本命令的使用
目前容器技术使用相当广泛 不会或者没有使用过容器感觉都不像是个搞技术的 所以,我也就docker相关内容做一个整理 只有不断的学习,才能保持自己的竞争力 什么是容器? 容器是一种轻量级.可移植.自包含 ...
随机推荐
- 学习java的第二十二天
一.今日收获 1.java完全学习手册第三章算法的3.2排序,比较了跟c语言排序上的不同 2.观看哔哩哔哩上的教学视频 二.今日问题 1.快速排序法的运行调试多次 2.哔哩哔哩教学视频的一些术语不太理 ...
- Flink(五) 【消费kafka】
目录 0.目的 1.本地测试 2.线上测试 提交作业 0.目的 测试flink消费kafka的几种消费策略 kafkaSource.setStartFromEarliest() //从起始位置 kaf ...
- Equinox OSGi服务器应用程序的配置步骤 (支持JSP页面)
本文介绍在Eclipse里如何配置一个简单的基于Eclipse Equinox OSGi实现的Web应用程序,在它的基础上可以构造更加复杂的应用,本文使用的是Eclipse 3.3.1版本,如果你的E ...
- 通过Shell统计PV和UV
PV.UV是网站分析中最基础.最常见的指标.PV即PageView,网站浏览量,指页面的浏览次数,用以衡量网站用户访问的网页数量.用户没打开一个页面便记录1次PV,多次打开同一页面则浏览量累计:UV即 ...
- java多线程并发编程中的锁
synchronized: https://www.cnblogs.com/dolphin0520/p/3923737.html Lock:https://www.cnblogs.com/dolphi ...
- 04 - Vue3 UI Framework - 文档页
官网的首页做完了,接下来开始做官网的文档页 返回阅读列表点击 这里 路由设计 先想想我们需要文档页通向哪些地方,这里直接给出我的设计: 所属 子标题 跳转路径 文件名(*.vue) 指南 介绍 /do ...
- 1、Spring简介及IOC入门案例
一.Spring框架介绍 1.介绍 Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用途不仅仅限于服务 ...
- UMDCTF 2021
6道pwn题,4道可以做.剩下一道题是arm架构,一道题是内核,溜了溜了. Jump_Not_Easy 1 from pwn import * 2 3 p = process('./pwn') 4 e ...
- Table.FillDown填充Table.Fill…(Power Query 之 M 语言)
数据源: 任意列中包含空单元格 目标: 将空单元格填充为其上或其下单元格中的内容 操作过程: 选取指定列>[转换]>[填充]>[向下] 选取指定列>[转换]>[填充]&g ...
- Kubernetes 集群无损升级实践 转至元数据结尾
一.背景 活跃的社区和广大的用户群,使 Kubernetes 仍然保持3个月一个版本的高频发布节奏.高频的版本发布带来了更多的新功能落地和 bug 及时修复,但是线上环境业务长期运行,任何变更出错都可 ...