Docker 实战(一)
Docker 架构
- Client: 客户端;操作docker服务器的客户端(命令行或者界面)
- Docker_Host:Docker主机;安装Docker服务的主机
- Docker_Daemon:后台进程;运行在Docker服务器的后台进程
- Containers:容器;在Docker服务器中的容器(一个容器一般是一个应用实例,容器间
互相隔离
) - Images:镜像、映像、程序包;Image是只读模板,其中包含创建Docker容器的说明。容器是由Image运行而来,Image固定不变。
- Registries:仓库;存储Docker Image的地方。
- 官方远程仓库地址: https://hub.docker.com/search
Docker是用Go语言编写的,并利用Linux内核的多种功能来交付其功能。 Docker使用一种称为名称空间的技术来提供容器的隔离工作区。 运行容器时,Docker会为该容器创建一组名称空间。
这些名称空间提供了一层隔离。 容器的每个方面都在单独的名称空间中运行,并且对其的访问仅限于该名称空间。
镜像(Image)相当于java中的类,而容器(Container)相当于对象。
容器与虚拟机
Docker 隔离原理
namespace 6项隔离 (资源隔离)
cgroups 资源限制(资源限制)
cgroup提供的主要功能如下:
- 资源限制:限制任务使用的资源总额,并在超过这个 配额 时发出提示
- 优先级分配:分配CPU时间片数量及磁盘IO带宽大小、控制任务运行的优先级
- 资源统计:统计系统资源使用量,如CPU使用时长、内存用量等
- 任务控制:对任务执行挂起、恢复等操作
cgroup 资源控制系统,每种子系统独立地控制一种资源。功能如下:
Docker 安装
官方安装文档:https://docs.docker.com/engine/install/centos/
1、移除旧版本
sudo yum remove docker*
2、设置 docker yum 源
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
3、安装最新docker engine
sudo yum install docker-ce docker-ce-cli containerd.io
4、安装指定版本docker engine
# 找到所有可用docker版本列表
yum list docker-ce --showduplicates | sort -r
# 安装指定版本,用上面的版本号替换<VERSION_STRING>
sudo yum install docker-ce-<VERSION_STRING>.x86_64 docker-ce-cli-
<VERSION_STRING>.x86_64 containerd.io
# 例如:
yum install docker-ce-3:20.10.5-3.el7.x86_64 docker-ce-cli-3:20.10.5-
3.el7.x86_64 containerd.io
# 注意在版本号后面要加上 .x86_64
5、启动服务
# 启动docker
systemctl start docker
# 设置开机启动docker
systemctl enable docker
6、镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://h6fgd7ma.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
# 以后docker下载直接从阿里云拉取相关镜像
/etc/docker/daemon.json 是 Docker 的核心配置文件