初识 Docker
-
Docker 是一个开源的应用容器引擎
-
诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc)
-
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上。
-
容器是完全使用沙箱机制,相互隔离
-
容器性能开销极低
-
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)
Docker 架构
镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
安装/卸载
安装
# 1、卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 2、yum 包更新到最新
yum update
# 3、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 4、 设置yum源
# 默认地址
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 阿里云镜像地址
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 5、 安装
# (1)最新docker版本
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# (2)指定版本
# 先查询可用版本
yum list docker-ce --showduplicates | sort -r
# <VERSION_STRING>所需版本
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-buildx-plugin docker-compose-plugin
# 6、 查看docker版本,验证是否验证成功
docker -v
# 7、启动
sudo systemctl start docker
# 8、helloworld
sudo docker run hello-world
阿里云镜像加速
-
登录阿里云
-
产品—>容器—>容器镜像服务—>管理控制台
-
镜像工具—>镜像加速器
-
复制加速地址
方式一:
-
进入docker目录
[root@VM-4-9-centos ~]# cd /etc/docker/ [root@VM-4-9-centos docker]# pwd /etc/docker [root@VM-4-9-centos docker]#
-
通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
[root@VM-4-9-centos docker]# tee /etc/docker/daemon.json <<-'EOF' > { > "registry-mirrors": ["https://t01llloc.mirror.aliyuncs.com"] > } > EOF { "registry-mirrors": ["https://t01llloc.mirror.aliyuncs.com"] }
-
重载配置
[root@VM-4-9-centos docker]# systemctl daemon-reload
-
重启docker
[root@VM-4-9-centos docker]# systemctl restart docker [root@VM-4-9-centos docker]# docker run hello-world Hello from Docker! This message shows that your installation appears to be working correctly.
方式二:
-
进入docker目录
-
修改daemon.json配置文件
{
“registry-mirrors”: [“https://t01llloc.mirror.aliyuncs.com”]
}将里面的加速器地址修改成自己的即可
[root@VM-4-9-centos docker]# vim daemon.json [root@VM-4-9-centos docker]#
-
重载配置
-
重启docker
卸载
# 1、卸载 Docker Engine、CLI、containerd 和 Docker Compose 软件包
sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
# 2、主机上的映像、容器、卷或自定义配置文件不会自动删除。要删除所有映像、容器和卷
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
hello-world 运行流程
底层原理
1、Docker 是如何工作的?
Docker是一个Client-Server架构的系统。
Docker的守护进程运行在主机上,通过Socket从客户端访问,Docker-Server接收到Docker-Client的指令,就会执行这个命令。
2、Docker 为何比VM快?
- Docker有着比虚拟机更少的抽象层;
- Docker利用的是宿主机的内核,虚拟机需要Guest OS。
新建一个容器的时候,docker不需要像虚拟机一样重新加载一个操作系统内核,避免引导。
虚拟机是加载Guest OS,分钟级别的,而docker是利用宿主机的操作系统,省略了这个复杂的过程,秒级!
常见的虚拟机Guest OS包括但不限于以下几种:
- Windows系列:包括Windows 10、Windows 8、Windows 7、Windows XP等。
- Linux系列:包括Ubuntu、Debian、CentOS、Red Hat等。
- macOS系列:包括macOS Catalina、macOS Mojave等。
- Unix系列:包括FreeBSD、OpenBSD等。