自动化集成(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
REPOSITORYTAGIMAGE IDCREATEDSIZE
cloud-applatestb11d221cc3e013 seconds ago662MB# 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
REPOSITORYTAGIMAGE IDCREATEDSIZE
hello-worldlatestfeb5d9fea6a57 weeks ago13.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过程。
【自动化集成(Docker容器入门简介)】注意事项
- 脚本命名Dockerfile并且没有任何后缀;
- Docker在构建镜像时,默认识别该文件;
- 通常脚本文件放在打包工程的根目录下;
- 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
文章图片
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- Activiti(一)SpringBoot2集成Activiti6
- 私有化轻量级持续集成部署方案--03-部署web服务(下)
- 人脸识别|【人脸识别系列】| 实现自动化妆
- Spring集成|Spring集成 Mina
- docker镜像探索----dive工具
- Python机器学习基础与进阶|Python机器学习--集成学习算法--XGBoost算法
- Java+Selenium|Java+Selenium Web UI自动化测试的一些小总结
- 网络请求,如斯优雅
- 雅集成长第二季|雅集成长第二季 第三周