Docker运维教程(1)Docker的基本概念与安装

TangLu 系统运维 2024-02-28 6614 0

一、Docker简介

Docker是容器技术的一种实现方式,容器技术可以快速的将不同应用或者一个应用的不同版本打包到一个可移植的容器中实现服务快速部署,减少环境不一致带来的问题,而且每个容器之间相互隔离互不影响,这好比船上有很多集装箱,装水果的集装箱出了问题,但是不影响装酒水的集装箱但是需要明白的是严格来说Docker并不是容器,它是对容器进行了封装,以实现简化管理。Docker底层技术是Linux内核所自带的LXC技术。


二、Docker名词解释

CGROUP:它负责对Docker各容器之间资源占用进行分配管理。相比传统虚拟化来说Docker容器会共享宿主机的内核资源,而且少了系统层面的开销,不需要为每个容器去虚拟化一个完整的系统,而且即使是下载一个Centos系统镜像也才200M(底层会使用宿主机的内核,也因此容器的内核是无法升级的,必须和宿主机一致)Docker不太适合对数据或日志进行存储,数据文件一般会通过NFS\MFS等技术挂载到Docker容器之外。

Namespace负责容器之间资源隔离的实现。不同的Namespace隔离的资源不同:

· UTS:隔离主机名和域名,要求系统内核版本2.6

· IPC:隔离消息队列、共享内存、信号量,要求系统内核版本2.6

· PID:隔离进程编号,要求系统内核版本,要求系统内核版本2.6

· NETWORK:隔离网络设备和端口等,要求系统内核版本2.6

· MOUNT:隔离文件系统与挂载点,要求系统内核版本2.4

· USER:用于隔离用户和用户组,需要注意的是登陆容器后看到的root通常不是真正的root,比如要用那个用户去cat /etc/passwd,那一样会报出权限错误。要求系统内核版本3.8这也是为什么要在Centos 7使用Docker的原因

#查看内核
uname -r


注:UTS、NET、IPC这三个名称空间通常是共享给各容器使用,这样可以更方便的实现多容器使用同端口的需求。否则需要DNAT、SNAT两次网络转换才可以。

Docker镜像:可以理解为模板文件,也可以想象成平时装系统用的.iso文件
Docker容器:镜像运行之后成为docker容器,就像程序运行后变成进程

Docker仓库(registry):镜像仓库,就像github一样可以存放很多做好的镜像。比如需要LAMP环境可以去公有仓库里看看有没有合适的镜像,有的话直接下载就可以使用,无需配置。也可以自建仓库,存放适合内部使用的镜像Docker采用分层构建机制,最底层为bootfs,上层为rootfs。在bootfs中包含了bootloader和kernel,它的作用就是用于引导和启动容器,在容器启动完成后就会卸掉bootfs节约内存,rootfs则是容器的根文件系统。而且不同的镜像如果使用到了相同的内容,只会存一份,节约了磁盘空间。Aufs是Docker最初使用的容器文件系统,而现在最主流的则是overlay2(已经从3.18版本开始被Linux内核合并)、devicemapper(CentOS7早期所使用)。


三、安装Docker

1、安装新版本之前清理旧版本及其依赖组件

yum remove docker  docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine


2、配置Docker的官方YUM源

官方仓库可以通过安装手册(https://docs.docker.com/engine/install/)查看,此外还有很多像阿里云、清华大学第三方仓库也可以安装Docker。Docker从V1.13之后分为了CE和EE两个分支,其中docker-ce为社区免费版,docker-ee为商业收费版

#安装yum-utils包后可以通过yum-config-manager来快捷设置仓库地址
yum install -y yum-utils  

#配置仓库地址
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

#安装docker-ce
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin


3、启动Docker

systemctl start docker


4、查看Docker版本和详细信息,比如启动了多少个容器、默认的仓库地址、下载了多少镜像、文件系统等。如果提示"Is the docker daemon running on this host",说明服务没有启动

docker version
docker info


dockerstatus.png


5、由于安全问题,非root用户默认是无法执行docker相关命令的,可以通过修改用户组的方式进行授权

groupadd docker
usermod -G docker tanglu


四、Docker镜像仓库加速

Dcoker镜像仓库的概念就和YUM仓库一样,仓库里面存放了各种镜像,比如Centos系统镜像、Redis镜像、MySQL镜像等。Docker默认使用的镜像仓库docker hub服务器在国外,存在速度慢的问题,所以建议配置阿里云或者清华大学的镜像仓库。以阿里云为例,只需要登录阿里云控制台--容器镜像服务,就可以看到一个自己专属的镜像仓库地址,甚至连怎么配置的命令都给写了出来

docker_aliyun.jpg


通过修改docker服务端配置文件/etc/docker/daemon.json来自定义仓库地址,将其修改到国内可以大幅提升拉取镜像的速度

cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"]
}

#镜像仓库配置完成后重启docker并使用docker info命令查看下是否生效
systemctl daemon-reload
systemctl restart docker  
docker info


评论