1. Docker概述
什么是Docker
-
Docker是基于Go语言实现的开源容器项目,诞生于2013年年初,最初发起者是dotCloud公司。
-
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化;
-
容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低;
-
Docker 从 17.03 版本之后分为 CE(Community Edition-社区版)和 EE(Enterprise Edition-企业版)。
Docker的应用场景
-
Web应用的自动化打包和发布,自动化测试和持续集成、发布;
-
在服务型环境中部署和调整数据库或其他的后台应用;
-
从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。
Docker的构想
Docker的构想是要实现“Build,Ship and Run Any App,Anywhere”,即通过对应用的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)生命周期进行管理,达到应用组件“一次封装,到处运行”的目的。
文档地址:Docker Docs
中文社区:docker中文社区,docker帮助,docker手册,docker教程,docker安装手册 - docker中文社区
1.1.Docker镜像
Docker镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。例如,一个镜像可以包含一个基本的操作系统环境,里面仅安装了Apache应用程序(或用户需要的其他软件)。可以把它称为一个Apache镜像 。
镜像是创建Docker容器的基础。
1.2.Docker容器
Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。容器是从镜像创建的应用运行实例。可以将其启动、开始、停止、删除,而这些容器都是彼此相互隔离的、互不可见的。
可以把容器看做是一个简易版的Linux系统环境(包括root用户权限、进程空间、用户空间和网络空间等)以及运行在其中的应用程序打包而成的盒子。
镜像自身是只读的。容器从镜像启动的时候,会在镜像的最上层创建一个可写层。
1.3.Docker仓库
Docker仓库类似于代码仓库,它是Docker集中存放镜像文件的场所。仓库注册服务器是存放仓库的地方,其上往往存放着多个仓库。每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签(tag)来进行区分。
仓库注册服务器是存放仓库的地方,其上往往存放着多个仓库。每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签(tag)来进行区分。
2. Docker安装
2.1.环境准备
-
CentOS7.5
# 系统内核是 3.10 以上的
[root@beyond11 ~]# uname -r
3.10.0-1160.el7.x86_64
# 系统版本
[root@beyond11 ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
2.2.安装步骤
# 1.卸载旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 2.需要的安装包
yum install -y yum-utils
# 3.设置镜像的仓库(阿里云镜像地址)
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 3.1 查看 docker-ce.repo 存放目录
[root@beyond11 yum.repos.d]# cd /etc/yum.repos.d/ | ll
total 52
-rw-r--r--. 1 root root 1664 Oct 23 2020 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 Oct 23 2020 CentOS-CR.repo
-rw-r--r--. 1 root root 649 Oct 23 2020 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 314 Oct 23 2020 CentOS-fasttrack.repo
-rw-r--r--. 1 root root 630 Oct 23 2020 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 Oct 23 2020 CentOS-Sources.repo
-rw-r--r--. 1 root root 8515 Oct 23 2020 CentOS-Vault.repo
-rw-r--r--. 1 root root 616 Oct 23 2020 CentOS-x86_64-kernel.repo
-rw-r--r-- 1 root root 2081 Mar 26 15:45 docker-ce.repo
# 3.2 更新yum软件包索引
[root@beyond11 ~]# yum makecache fast
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
epel/x86_64/metalink | 6.9 kB 00:00:00
* base: mirrors.cn99.com
* epel: mirrors.bfsu.edu.cn
* extras: mirrors.163.com
* updates: mirrors.cn99.com
base | 3.6 kB 00:00:00
docker-ce-stable | 3.5 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/2): docker-ce-stable/7/x86_64/updateinfo | 55 B 00:00:00
(2/2): docker-ce-stable/7/x86_64/primary_db | 75 kB 00:00:00
Metadata Cache Created
# 4. 安装docker: docker-ce 社区版、docker-ee 企业版
yum install -y docker-ce docker-ce-cli containerd.io
# 5.启动docker
systemctl start docker
# 6.使用docker version是否安装成功
docker version
# 7. 测试docker
docker run hello-world
# 8. 查看下载的 hello-world 镜像
docker images
2.3.卸载docker
# 1、卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
# 2、删除资源
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
# /var/lib/docker 是docker的默认工作路径
2.4.阿里云加速器
2.5.回顾 hello-world 过程
2.6.底层原理
Docker是一个Client - Server结构的系统,Docker的守护进程运行在主机上,通过Socker从客户端访问。
DockerServer接收到Docker-Client的指令,就会执行这个命令。
Docker为什么比VM快?
-
Docker有着比虚拟机更少的抽象层。
-
Docker利用的是宿主机的内核,vm需要是Guest OS。