Docker
学习之前,先来放松一下吧!
环境准备
- cenos 7 内核在3.10
- xshell连接工具
- Linux基础
卸载旧版本
♾️ shell 代码:#如果说不是在root用户下执行下面的命令,需要在yum前面加上sudo并且有一个空格。下面的所有命令都一样。
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
开始安装
- 下载关于Docker的依赖环境
yum -y install yum-utils device-mapper-persistent-data lvm2
- 设置下载Docker的镜像源
#这里使用的是阿里云的镜像,官方默认的是国外的,是非常慢的,我们就不使用
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装Docker
#更新yum索引
yum makecache fast
#安装社区版的docker
yum install docker-ce docker-ce-cli containerd.io -y
- 启动Docker,并设置为开机自动启动,测试
# 启动Docker服务
systemctl start docker
#查看是否安装成功
docker version
# 设置开机自动启动
systemctl enable docker
# 测试是否运行
docker run hello-world
- 查看刚才下载的hello-word镜像
docker images
卸载docker
- 删除依赖
yum remove docker-ce docker-ce-cli containerd.io
- 删除资源
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
# /var/lib/docker docker工作的默认路径
阿里云镜像加速
登录阿里云
{abtn icon="fa-heart-o" color="#f86dc5" href="https://www.aliyun.com/" radius="17px" content="阿里云"/}
- 在弹性计算找到容器计算服务
- 创建账号然后点击镜像工具里面的镜像加速
- 配置使用
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://vjtmk5k2.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
- 查看是否配置成功
cat /etc/docker/daemon.json
/*返回如下
{
"registry-mirrors": ["https://vjtmk5k2.mirror.aliyuncs.com"]
}
*/
运行过程
底层原理
docker是怎样工作做的?
- Docker Engine是一个客户端-服务器应用程序,具有以下主要组件:
- 一个服务器,它是一种长期运行的程序,称为守护进程(dockerd命令)。
- 一个REST API,它指定程序可以用来与守护进程对话并指示它做什么的接口。
- 命令行接口(CLI)客户端(docker命令)。
- Docker是一个Client Server结构的系统,Docker守护进程运行在主机上,然后通过Socket连接从客户 端访问,守护进程从客户端接受命令并管理运行在主机上的容器。
docker为什么比VM快?
- Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上Docker将会在效率上有明显优势。
- Docker利用的是宿主机的内核,而不需要GuestOS。因此,当新建一个容器时,Docker不需要和虚拟机一样重新加载一个操作系统内核。可避免引导寻址、加载操作系统内核返回这个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载GuestOS,返回新增过程是分钟级别的。而Docker由于利用宿主机的操作系统,则省略了返回的过程,因此新建一个Docker容器只需要几秒钟。