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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker作为开源的应用容器引擎,可以把应用程序和其相关依赖打包生成一个Image镜像文件,是一个标准的运行环境,提供可持续交付的能力。
前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译、打包、镜像构建、部署等操作; 本篇文章主要描述Docker基础用法

00-0.png

一、Docker简介

1、基础描述

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

2、核心概念

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

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

3、架构原理

03-1.png

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可以查看镜像操作的步骤文档:

03-2.png

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在同一级。

结构如下

03-3.png

镜像构建命令

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
相关文章
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
526 2
|
3月前
|
运维 Kubernetes 开发者
解锁现代开发与部署:Docker入门指南
解锁现代开发与部署:Docker入门指南
194 100
|
1月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
9月前
|
人工智能 Kubernetes jenkins
容器化AI模型的持续集成与持续交付(CI/CD):自动化模型更新与部署
在前几篇文章中,我们探讨了容器化AI模型的部署、监控、弹性伸缩及安全防护。为加速模型迭代以适应新数据和业务需求,需实现容器化AI模型的持续集成与持续交付(CI/CD)。CI/CD通过自动化构建、测试和部署流程,提高模型更新速度和质量,降低部署风险,增强团队协作。使用Jenkins和Kubernetes可构建高效CI/CD流水线,自动化模型开发和部署,确保环境一致性并提升整体效率。
|
4月前
|
Cloud Native 中间件 调度
云原生信息提取系统:容器化流程与CI/CD集成实践
本文介绍如何通过工程化手段解决数据提取任务中的稳定性与部署难题。结合 Scrapy、Docker、代理中间件与 CI/CD 工具,构建可自动运行、持续迭代的云原生信息提取系统,实现结构化数据采集与标准化交付。
166 1
云原生信息提取系统:容器化流程与CI/CD集成实践
|
4月前
|
NoSQL 安全 Redis
Docker Compose :从入门到企业级部署
Docker Compose 是用于定义和运行多容器应用的工具,支持服务、网络和卷三大核心要素。通过简洁的 YAML 文件,可实现应用的快速部署与管理,适用于开发、测试及生产环境。
361 1
|
8月前
|
安全 持续交付 云计算
课时5:阿里云容器服务:最原生的集成Docker和云服务
阿里云容器服务以服务化形式构建容器基础设施,大幅提升开发效率,简化应用部署流程。通过Docker容器和DevOps工具(如Jenkins),实现自动化部署与迭代,优化企业内部复杂部署问题。该服务支持GPU调度、混合云架构无缝迁移,并与阿里云产品体系无缝集成,提供安全防护、网络负载均衡等多重功能支持。凭借微服务架构,帮助企业突破业务瓶颈,提高资源利用率,轻松应对海量流量。
304 0
课时5:阿里云容器服务:最原生的集成Docker和云服务
|
8月前
|
Ubuntu Linux Docker
Docker 入门全攻略:安装、操作与常用命令指南
Docker 的世界非常广阔,这只是一个开始,请继续探索和学习 Docker 的高级特性和最佳实践。后续也会继续更新相关的理论与实践内容。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
11月前
|
Ubuntu 应用服务中间件 nginx
docker入门-快速学会docker
本文介绍了Docker的基本概念,包括镜像、容器、tar文件、Dockerfile和仓库,并通过实际操作演示了如何使用Docker。从拉取Nginx镜像、运行容器、修改容器内容、保存容器为新镜像,到使用Dockerfile构建自定义镜像,最后讲解了如何保存和恢复镜像。文中还推荐了一个在线实践平台Play with Docker,方便读者快速上手Docker。
944 5
docker入门-快速学会docker
|
Kubernetes Linux Docker
容器化技术Docker入门与实践
容器化技术Docker入门与实践
189 20