Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。
Docker 自开源后受到广泛的关注和讨论,以至于 dotCloud 公司后来都改名为 Docker Inc。Redhat 已经在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 产品中广泛应用。
Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术。
在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。
下面的图片比较了 Docker 和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。
在任何地方开发、部署和运行任何应用
Docker是一款针对程序开发人员和系统管理员来开发、部署、运行应用的一款虚拟化平台。Docker 可以让你像使用集装箱一样快速的组合成应用,并且可以像运输标准集装箱一样,尽可能的屏蔽代码层面的差异。Docker 会尽可能的缩短从代码测试到产品部署的时间。
Docker 组件
- The Docker Engine – Docker Engine 是一个基于虚拟化技术的轻量级并且功能强大的开源容器引擎管理工具。它可以将不同的 work flow 组合起来构建成你的应用。
- Docker Hub 可以分享和管理你的images镜像的一个 Saas 服务。
为什么选择Docker
快速交付应用程序
- 我们希望你的开发环境能够更好的提高你的工作效率。Docker容器能够帮助开发人员、系统管理员、QA和版本控制工程师在一个生产环节中一起协同工作。我们制定了一套容器标准,而这套容器标准能够使系统管理员更改容器的时候,程序员不需要关心容器的变化,而更专注自己的应用程序代码。从而隔离开了开发和管理,简化了开发和部署的成本。
- 我们使应用的构建方式更加简单,可以快速的迭代你的应用,并且可以可视化的来查看应用的细微更改。这能够帮助组织里边的成员来更好的理解一个应用从构建到运行的过程。
- Docker 是一个轻量级的容器,所以它的速度是非常快的,而容器的启动时间只需要一秒钟,从而大大的减少了开发、测试和部署的时间。轻松部署和扩展
- Docker 容器可以运行在大多数的环境中,你可以在桌面环境、物理主机、虚拟主机再到数据中,私有或者公有云中部署。
- 因为 Docker 可以从多平台下运行。你可以很容器的迁移你的应用程序。如果需要,你可以非常简单的将应用程序从测试环境迁移到云,或者从云迁移到测试环境。
- Docker 是一个轻量级的容器,因此它可以在很短的时间内启动和关闭。当你需要的时候,你可以启动多个容器引擎,并且在不需要使用他们的时候,可以将他们全部关闭。
Get higher density and run more workloads
Docker的容器本身不需要额外创建虚拟机管理系统,因此你可以启动多套Docker容器,这样就可以充分发挥主机服务器的物理资源,也可以降低因为采购服务器licenses而带来的额外成本。
快速构建 轻松管理
因为Docker上述轻便,快速的特性。可以使您的应用达到快速迭代的目的。每次小的变更,马上就可以看到效果。而不用将若干个小变更积攒到一定程度再变更。每次变更一小部分其实是一种非常安全的方式。
Docker的安装和使用
Docker CE 的安装请参考官方文档:
- MacOS:https://docs.docker.com/docker-for-mac/install/
- Windows:https://docs.docker.com/docker-for-windows/install/
- Ubuntu:https://docs.docker.com/install/linux/docker-ce/ubuntu/
- Debian:https://docs.docker.com/install/linux/docker-ce/debian/
- CentOS:https://docs.docker.com/install/linux/docker-ce/centos/
- Fedora:https://docs.docker.com/install/linux/docker-ce/fedora/
- 其他 Linux 发行版:https://docs.docker.com/install/linux/docker-ce/binaries/
安装Docker -- Ubantu为例
OS 要求
要安装Docker CE,您需要这些Ubuntu版本之一的64位版本:
- Cosmic 18.10
- Bionic 18.04 (LTS)
- Xenial 16.04 (LTS)
Docker CE上支持x86_64(或amd64)armhf,arm64,s390x (IBM Z),和ppc64le(IBM的Power)架构。
卸载旧版本
Docker的旧版本被称为docker,docker.io 或docker-engine。如果已安装,请卸载它们:
$ sudo apt-get remove docker docker-engine docker.io containerd runc
支持的存储驱动
Docker CE在Ubuntu支持overlay2
,aufs
和btrfs
存储驱动程序。
注意:在Docker Engine - Enterprise中,
btrfs
仅在SLES上受支持。有关更多详细信息,请参阅btrfs上的文档 。
对于Linux内核版本4及更高版本的新安装,overlay2
支持并首选aufs
。Docker CE overlay2
默认使用存储驱动程序。如果需要使用aufs
,则需要手动配置。见aufs
安装 Docker CE
您可以根据需要以不同方式安装Docker CE:
大多数用户 设置Docker的存储库并从中进行安装,以便于安装和升级任务。这是推荐的方法。
有些用户下载DEB软件包并 手动安装并完全手动管理升级。这在诸如在没有访问互联网的气隙系统上安装Docker的情况下非常有用。
在测试和开发环境中,一些用户选择使用自动 便捷脚本来安装Docker。
使用存储库安装
在新主机上首次安装Docker CE之前,需要设置Docker存储库。之后,您可以从存储库安装和更新Docker。
设置存储库
-
更新
apt
包索引:$ sudo apt-get update
-
安装包以允许
apt
通过HTTPS使用存储库:$ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common
-
添加Docker的官方GPG密钥:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
通过搜索指纹的最后8个字符,验证您现在拥有带指纹的密钥 。$ sudo apt-key fingerprint 0EBFCD88 pub rsa4096 2017-02-22 [SCEA] 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid [ unknown] Docker Release (CE deb)
sub rsa4096 2017-02-22 [S] -
使用以下命令设置稳定存储库。要添加 夜间或测试存储库,请在下面的命令中的单词后添加单词
nightly
或test
(或两者)stable
。了解夜间和测试频道。注意:下面的
lsb_release -cs
子命令返回Ubuntu发行版的名称,例如xenial
。有时,在像Linux Mint这样的发行版中,您可能需要更改$(lsb_release -cs)
为父Ubuntu发行版。例如,如果您正在使用Linux Mint Tessa
,则可以使用bionic
。Docker不对未经测试和不受支持的Ubuntu发行版提供任何保证。
x86_64 / amd64 对应的是:
```
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
```
安装DOCKER CE
-
更新
apt
包索引。$ sudo apt-get update
-
安装最新版本的Docker CE和containerd,或者转到下一步安装特定版本:
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
有多个Docker存储库?
如果您启用了多个Docker存储库,则在未指定
apt-get install
或apt-get update
命令中的版本的情况下安装或更新始终会安装尽可能高的版本,这可能不适合您的稳定性需求。 -
要安装特定版本的Docker CE,请在repo中列出可用版本,然后选择并安装:
一个。列出您的仓库中可用的版本:
$ apt-cache madison docker-ce docker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages docker-ce | 18.06.1~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages docker-ce | 18.06.0~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
例如,使用第二列中的版本字符串安装特定版本
5:18.09.1~3-0~ubuntu-xenial
。$ sudo apt-get install docker-ce=
docker-ce-cli= containerd.io -
通过运行
hello-world
映像验证是否正确安装了Docker CE 。$ sudo docker run hello-world
此命令下载测试映像并在容器中运行它。当容器运行时,它会打印一条信息性消息并退出。
Docker CE已安装并正在运行。该docker
组已创建,但未向其添加任何用户。您需要使用它sudo
来运行Docker命令。继续Linux postinstall以允许非特权用户运行Docker命令和其他可选配置步骤。
添加daemon.json文件
运行 sudo docker run hello-world
,没有返回结果,如下:
docker在本地没有找到hello-world镜像,也没有从docker仓库中拉取镜像,出项这个问题的原因:是应为docker服务器再国外,我们在国内无法正常拉取镜像,所以就需要我们为docker设置国内阿里云的镜像加速器;
需要修改配置文件 /etc/docker/daemon.json 如下:
{
"registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"]
}
先创建 daemon.json
后添加字段
重启docker systemctl restart docker
查看docker 状态 systemctl restart docker
运行 sudo docker run hello-world
,结果如下:
升级DOCKER CE
要升级Docker CE,请先运行sudo apt-get update
,然后按照 安装说明选择要安装的新版本。
从包安装
如果您无法使用Docker的存储库来安装Docker CE,则可以下载.deb
适用于您的发行版的 文件并手动安装。每次要升级Docker时都需要下载新文件。
- 去
https://download.docker.com/linux/ubuntu/dists/
选择你的Ubuntu版本,浏览pool/stable/
,选择amd64
,armhf
,arm64
,ppc64el
,或s390x
,并下载.deb
文件要安装多克尔CE版本。
Note: To install a nightly package, change the word
stable
in the URL tonightly
. Learn about nightly and testchannels.
-
安装Docker CE,将下面的路径更改为您下载Docker软件包的路径。
$ sudo dpkg -i /path/to/package.deb
Docker守护程序自动启动。
-
通过运行
hello-world
映像验证是否正确安装了Docker CE 。$ sudo docker run hello-world
此命令下载测试映像并在容器中运行它。当容器运行时,它会打印一条信息性消息并退出。
Docker CE已安装并正在运行。该docker
组已创建,但未向其添加任何用户。您需要使用它sudo
来运行Docker命令。继续执行Linux的安装后步骤, 以允许非特权用户运行Docker命令和其他可选配置步骤。
升级DOCKER CE
要升级Docker CE,请下载较新的软件包文件并重复 安装过程,指向新文件。
使用便捷脚本安装
Docker在get.docker.com 和test.docker.com上提供了便捷脚本,用于快速,非交互地将Docker CE的边缘和测试版本安装到开发环境中。脚本的源代码位于 docker-install
存储库中。 建议不要在生产环境中使用这些脚本,在使用它们之前,您应该了解潜在的风险:
- 脚本需要
root
或sudo
特权才能运行。因此,在运行脚本之前,应仔细检查和审核脚本。 - 这些脚本会尝试检测您的Linux发行版和版本,并为您配置包管理系统。此外,脚本不允许您自定义任何安装参数。从Docker的角度或您自己组织的指导方针和标准来看,这可能会导致配置不受支持。
- 脚本安装包管理器的所有依赖项和建议,而不要求确认。这可能会安装大量软件包,具体取决于主机的当前配置。
- 该脚本不提供选项来指定要安装的Docker版本,并安装在“边缘”通道中发布的最新版本。
- 如果已使用其他机制在主机上安装了Docker,请不要使用便捷脚本。
此示例使用get.docker.com上的脚本在Linux上安装最新版本的Docker CE。要安装最新的测试版本,请改用test.docker.com。在下面的每个命令中,替换每次出现的get
with test
。
警告:
始终检查从Internet下载的脚本,然后在本地运行它们。
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
如果您想将Docker用作非root用户,您现在应该考虑将您的用户添加到“docker”组,例如:
sudo usermod -aG docker your-user
请记得注销并重新登录才能生效!
警告:
将用户添加到“docker”组会授予他们运行容器的能力,这些容器可用于获取Docker主机上的root权限。 有关更多信息,请参阅 Docker守护程序攻击面。
已安装Docker CE。它会自动在DEB
基于发行版的分发上启动。在RPM
基于On的 基础上,您需要使用相应的systemctl
或service
命令手动启动它 。如消息所示,非root用户默认情况下无法运行Docker命令。
使用便捷脚本后升级DOCKER
如果您使用便捷脚本安装了Docker,则应直接使用软件包管理器升级Docker。重新运行便捷脚本没有任何好处,如果它尝试重新添加已添加到主机的存储库,则可能会导致问题。
卸载Docker CE
-
卸载Docker CE软件包:
$ sudo apt-get purge docker-ce
-
主机上的图像,容器,卷或自定义配置文件不会自动删除。要删除所有图像,容器和卷:
$ sudo rm -rf /var/lib/docker
您必须手动删除任何已编辑的配置文件。
·