Docker入门1(CICD 插曲)

先看别人这博客,有一个大致了解:Docker和k8s的区别与介绍 - 我要向前走 - 博客园 (cnblogs.com)

1、Docker核心概念

1.1 Docker设计目标(Docker思想来源于集装箱):

1)提供简单的应用程序打包工具(将应用打包,放在其他地方可以运行)

2)开发人员和运维人员职责逻辑分离;

  现开发人员工作:

  • 开发项目
  • 打包项目环境+代码 成镜像
  • 部署到容器平台

 运维人员工作:怎么高效的去管理这些容器,比如:监控、日志、怎么开发出傻瓜工具方便自动化部署。

 好处:

  • 运维人员节省人工成本
  • 持续发布有问题更快解决,更好服务开发人员

3)(开发环境、测试环境、生产环境)多环境保持一致性

1.2 容器VS虚拟机:

 

 

 容器之间的隔离是抽象隔离,是逻辑隔离,可以理解为电脑中进程之间的隔离;虚机之间的隔离是用操作系统进行了隔离。容器应该主要是解决应用层面的问题,虚拟机应该主要解决基础资源的问题。

1.3 Docker应用场景:

1)应用程序打包和发布

2)应用程序隔离

3)持续集成

4)部署微服务(将大的服务拆分成很多小的微服务,小的服务独立部署,独立数据库,升级时升级小服务就好,影响面小)

5)快速搭建测试环境(直接拉镜像,启动即可)

6)提供PaaS产品(平台即服务)

1.4 Docker安装:

官网:Empowering App Development for Developers | Docker

文档:Docker Documentation | Docker Documentation    

分为企业版与社区版,这边安装社区版。

先看一下机器内核版本,再根据版本选择安装:

安装前最好先关防火墙(主要是关闭一些默认规则):

 

 跟着官方文档指南,进行安装,因为我这Centos,所以参考https://docs.docker.com/engine/install/centos/#prerequisites,这里选择【Install using the repository】方式安装。

1、安装yum-utils包,提供yum-config-manager 实用程序
# yum install -y yum-utils
2、设置
#yum-config-manager \ 
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
3、安装
#
yum install docker-ce docker-ce-cli containerd.io

 启动Docker:

systemctl start docker

查看安装是否成功:

# docker info 查看信息

安装没问题后,设置一下开机自启动:

# systemctl enable docker

2、Docker镜像管理

2.1 镜像是什么

  1. 一个分层存储得文件,不是一个单一得文件
  2. 一个软件得环境
  3. 一个镜像可以创建N个容器
  4. 一种标准得交付
  5. 一个不包含Linux内核而又精简得Linux操作系统

可以理解为一个压缩包,包含了基础运行环境与源代码。

2.2 镜像从哪里来

1、来源于dockerhub(由 Docker 公司运行和管理的基于云的存储库。它是一个在线存储库,Docker 镜像可以由其他用户发布和使用。有两种库:公共存储库和私有存储库。如果你是一家公司,你可以在你自己的组织内拥有一个私有存储库,而公共镜像可以被任何人使用。)https://hub.docker.com/

因为是在线拉,且dockerhub地址在国外,所以可以根据需求先配置镜像加速器(实则就是配置一个国内得镜像仓库,而这个镜像仓库永远与dockerhub同步):

# vi /etc/docker/daemon.json                   (默认没有这个文件,直接VI创建写入)

保存后重启docker生效,如果docker因此有问题,肯定是文件内容写错了,英文下得标点符号。

2、可以本地/私有镜像仓库

2.3 镜像与容器的联系

容器是通过镜像创建的运行实例。一个镜像可以启用多个容器,多个容器之间是隔离的。

2.4 管理镜像常用命令

 

2.4 镜像存储核心技术:联合文件系统(UnionFS)

创建很多容器,却不怎么消耗磁盘空间,这是为什么?

创建一个容器,其实只是将基础镜像进行软链接(类似),所以只要容器中不加内容,即使基于一个镜像创建上百个容器,也不怎么影响磁盘空间。

 

 比如右图中,基础镜像中file2修改,其实只是将file2复制到容器层,进行修改。

综上:

读文件:容器层->镜像层

修改文件:容器层->镜像层(从镜像层复制到容器层)

3、Docker容器管理

3.1 创建容器常用选项

 # docker container exec -it 编号 bash

3.2 容器资源限制

默认创建的容器,使用宿主机所有资源,谁先抢到谁占用。

 3.3 容器资源配额的扩容

docker update 更新容器配置

已创建的,修改配置,只支持部分修改。具体可以docker update --help

 3.4 管理容器常用命令

 3.4 容器实现核心技术:Namespace、CGroups

 

 3.5 Docker核心组件之间关系

 4、容器数据持久化

4.1 将数据从宿主机挂载到容器中的三种方式

根据2.4节所讲,容器删除,里面的数据就没有了。但是有时候容器中有些数据很重要,需要持久化(容器删除,数据还在)。

 

你必须知道的Docker数据卷(Volume) - EdisonZhou - 博客园 (cnblogs.com)

 

posted @ 2021-11-19 18:07  maxiaonong  阅读(49)  评论(0编辑  收藏  举报