Docker--安装、配置

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 和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。

image.png
image.png

在任何地方开发、部署和运行任何应用

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 的安装请参考官方文档:

安装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支持overlay2aufsbtrfs存储驱动程序。

注意:在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。

设置存储库
  1. 更新apt包索引:

    $ sudo apt-get update
    
  2. 安装包以允许apt通过HTTPS使用存储库:

    $ sudo apt-get install \
        apt-transport-https \
        ca-certificates \
        curl \
        gnupg-agent \
        software-properties-common
    
  3. 添加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) <docker@docker.com>
    sub   rsa4096 2017-02-22 [S]
    
  4. 使用以下命令设置稳定存储库。要添加 夜间测试存储库,请在下面的命令中的单词后添加单词nightlytest(或两者)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

  1. 更新apt包索引。

    $ sudo apt-get update
    
  2. 安装最新版本的Docker CE和containerd,或者转到下一步安装特定版本:

    $ sudo apt-get install docker-ce docker-ce-cli containerd.io
    

    有多个Docker存储库?

    如果您启用了多个Docker存储库,则在未指定apt-get installapt-get update命令中的版本的情况下安装或更新始终会安装尽可能高的版本,这可能不适合您的稳定性需求。

  3. 要安装特定版本的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=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
    
  4. 通过运行hello-world 映像验证是否正确安装了Docker CE 。

    $ sudo docker run hello-world
    

    此命令下载测试映像并在容器中运行它。当容器运行时,它会打印一条信息性消息并退出。

Docker CE已安装并正在运行。该docker组已创建,但未向其添加任何用户。您需要使用它sudo来运行Docker命令。继续Linux postinstall以允许非特权用户运行Docker命令和其他可选配置步骤。

添加daemon.json文件

运行 sudo docker run hello-world,没有返回结果,如下:

image.png

docker在本地没有找到hello-world镜像,也没有从docker仓库中拉取镜像,出项这个问题的原因:是应为docker服务器再国外,我们在国内无法正常拉取镜像,所以就需要我们为docker设置国内阿里云的镜像加速器;
需要修改配置文件 /etc/docker/daemon.json 如下:
{
"registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"]
}

先创建 daemon.json

image.png

后添加字段


image.png

重启docker systemctl restart docker
查看docker 状态 systemctl restart docker

image.png

运行 sudo docker run hello-world,结果如下:

image.png

升级DOCKER CE

要升级Docker CE,请先运行sudo apt-get update,然后按照 安装说明选择要安装的新版本。

从包安装

如果您无法使用Docker的存储库来安装Docker CE,则可以下载.deb适用于您的发行版的 文件并手动安装。每次要升级Docker时都需要下载新文件。

  1. https://download.docker.com/linux/ubuntu/dists/选择你的Ubuntu版本,浏览pool/stable/,选择amd64armhfarm64ppc64el,或s390x,并下载.deb文件要安装多克尔CE版本。

Note: To install a nightly package, change the word stable in the URL to nightly. Learn about nightly and testchannels.

  1. 安装Docker CE,将下面的路径更改为您下载Docker软件包的路径。

    $ sudo dpkg -i /path/to/package.deb
    

    Docker守护程序自动启动。

  2. 通过运行hello-world 映像验证是否正确安装了Docker CE 。

    $ sudo docker run hello-world
    

    此命令下载测试映像并在容器中运行它。当容器运行时,它会打印一条信息性消息并退出。

Docker CE已安装并正在运行。该docker组已创建,但未向其添加任何用户。您需要使用它sudo来运行Docker命令。继续执行Linux的安装后步骤, 以允许非特权用户运行Docker命令和其他可选配置步骤。

升级DOCKER CE

要升级Docker CE,请下载较新的软件包文件并重复 安装过程,指向新文件。

使用便捷脚本安装

Docker在get.docker.comtest.docker.com上提供了便捷脚本,用于快速,非交互地将Docker CE的边缘和测试版本安装到开发环境中。脚本的源代码位于 docker-install存储库中建议不要在生产环境中使用这些脚本,在使用它们之前,您应该了解潜在的风险:

  • 脚本需要rootsudo特权才能运行。因此,在运行脚本之前,应仔细检查和审核脚本。
  • 这些脚本会尝试检测您的Linux发行版和版本,并为您配置包管理系统。此外,脚本不允许您自定义任何安装参数。从Docker的角度或您自己组织的指导方针和标准来看,这可能会导致配置不受支持。
  • 脚本安装包管理器的所有依赖项和建议,而不要求确认。这可能会安装大量软件包,具体取决于主机的当前配置。
  • 该脚本不提供选项来指定要安装的Docker版本,并安装在“边缘”通道中发布的最新版本。
  • 如果已使用其他机制在主机上安装了Docker,请不要使用便捷脚本。

此示例使用get.docker.com上的脚本在Linux上安装最新版本的Docker CE。要安装最新的测试版本,请改用test.docker.com。在下面的每个命令中,替换每次出现的getwith 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的 基础上,您需要使用相应的systemctlservice命令手动启动它 。如消息所示,非root用户默认情况下无法运行Docker命令。

使用便捷脚本后升级DOCKER

如果您使用便捷脚本安装了Docker,则应直接使用软件包管理器升级Docker。重新运行便捷脚本没有任何好处,如果它尝试重新添加已添加到主机的存储库,则可能会导致问题。

卸载Docker CE

  1. 卸载Docker CE软件包:

    $ sudo apt-get purge docker-ce
    
  2. 主机上的图像,容器,卷或自定义配置文件不会自动删除。要删除所有图像,容器和卷:

    $ sudo rm -rf /var/lib/docker
    

您必须手动删除任何已编辑的配置文件。

·

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容