ubuntu 安装docker环境_ubuntu 16.04安装docker教程

网络远程服务-解决各类疑难杂症-苹果电脑安装windows系统-电脑重装系统 Win7/8/10   远程安装各类大型软件:CAD/PS/3Dmax等...   无论是哪一种情况只收30元:QQ/微信:878805720  

Docker是一种开源软件工具,旨在使用称为容器的环境自动化并简化创建,打包和部署应用程序的过程。使用Linux容器部署应用程序称为容器化。容器使我们可以将应用程序与运行该应用程序所需的所有部分(代码,系统工具,日志,库,配置设置和其他依赖项)打包在一起,并作为可通过Ubuntu部署的单个独立程序包发送出去(在这种情况下, 16.04 LTS)。Docker也可以安装在其他 平台上。当前,Docker软件由Docker社区和Docker Inc.维护。查看官方文档在Docker上找到更多细节。Docker术语和概念。

Docker由几个组件组成:

  • Docker for Linux:在Ubuntu Linux操作系统上运行Docker容器的软件。
  • Docker Engine:用于构建Docker映像和创建Docker容器。
  • Docker Registry:用于存储各种Docker映像。
  • Docker Compose:用于定义使用多个Docker容器的应用程序。

您将接触到的其他一些基本术语和概念是:

  • 容器化:容器化是完整机器虚拟化(如VMWare)的轻型替代方案,它涉及将应用程序封装在具有其自身操作环境的容器中。

Docker还使用图像容器。这两个想法是密切相关的,但是却截然不同。

  • 多克尔图片:泊坞图片是用于部署多克尔容器的基本单位。Docker映像本质上是容器的静态快照,其中包含运行容器所需的所有对象。
  • 码头工人集装箱:一个码头工人集装箱封装码头工人形象,当它是生活和运行的,它被认为是一个容器。每个容器在主机中隔离运行。
  • 码头工人注册地:泊坞窗注册表是一个无状态的,高度可扩展的服务器端应用程序,存储和分发泊坞的图像。该注册表保存Docker映像及其版本,并且可以提供公共和私有存储位置。有一个名为Docker Hub的公共Docker注册表,它提供免费使用的托管注册表,以及组织帐户,自动构建等附加功能。用户通过使用Docker push或pull命令与注册表进行交互。例:
docker pull registry-1.docker.io/distribution/registry:2.1.

 

  • Docker EngineDocker Engine是存在于容器和Linux内核之间并运行容器的一层。它也称为Docker守护程序。任何Docker容器都可以在启用了Docker-daemon的任何服务器上运行,而不管其底层操作系统是什么。
  • Docker ComposeDocker Compose是定义,管理和控制多容器Docker应用程序的工具。使用Compose,可以使用一个配置文件来设置应用程序的所有服务。然后,您可以使用单个命令从该文件创建并启动所有服务。
  • Dockerfiles:Dockerfiles只是文本文档(.yaml文件),其中包含组装容器映像所需的所有配置信息和命令。使用Dockerfile,Docker守护程序可以自动构建容器映像。示例:以下是一个基本的Dockerfile,该文件在容器中设置了SSHd服务,我们可以使用该服务连接到容器并检查其他容器的卷,或者快速访问测试容器。
FROM ubuntu:16.04

RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:THEPASSWORDYOUCREATED' | chpasswd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd

ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile

EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

 

Docker版本

可以使用三种版本的Docker,每种版本都有其独特的用途:

  • Docker CE是简单,经典的Docker引擎。
  • Docker EE是Docker CE,在某些系统上具有认证并得到Docker Inc.的支持。
  • Docker CS(Commercially Supported)是Docker EE的旧捆绑版本的一种,版本小于等于1.13。

我们将安装Docker CE。

ubuntu 安装docker环境_ubuntu 16.04安装docker教程

Docker安装说明

步骤1 —检查先决条件

首先,从以下服务器环境开始: 

  1. 64位Ubuntu VPS  服务器
  2. 以root用户身份登录
重要:
Ubuntu上的Docker需要64位体系结构才能安装,Linux内核版本必须为3.10或更高版本。

在安装Docker之前,我们需要设置 包含最新版本软件的  存储库(标准Ubuntu 16.04存储库中不提供Docker)。添加存储库使我们以后也可以轻松地更新软件。

第2步-安装Docker

下一步是在Linux VPS上安装Docker之前,从现有系统中删除所有默认Docker软件包  执行以下命令以启动此过程: 

root@test:~# apt-get remove docker docker-engine docker.io lxc-docker
 Reading package lists... Done
 Building dependency tree
 Reading state information... Done
 Package 'docker-engine' is not installed, so not removed
 Package 'docker' is not installed, so not removed
 Package 'docker.io' is not installed, so not removed
 E: Unable to locate package lxc-docker

 

注意:
在某些情况下,通过删除不太常用的模块(或驱动程序)来缩小Linux内核的特定变体。在这种情况下,“ linux-image-extra”软件包将包含所有被遗漏的“额外”内核模块。使用以下命令重新添加它们:
root@test:~# sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual

 

步骤3 —添加所需的软件包

现在,我们需要在您的系统上安装一些必需的软件包。 运行以下命令以完成此操作:

root@test:~# apt-get install curl apt-transport-https ca-certificates software-properties-common

 

注意:

如果出现错误:“ E:无法找到包装卷曲”,请使用命令“ curl -V”查看是否已安装curl;如果是这样,请继续执行步骤4。

步骤4 —验证,添加和更新存储库

将Docker GPG密钥添加到您的系统:

root@test:~# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
 OK

 

接下来,更新APT源以添加源:

root@test:~# add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable" | tee /etc/apt/sources.list.d/docker.list

 

再次运行更新,以便识别Docker软件包:

root@test:~# apt-get update
 Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [107 kB]
 Hit:2 http://us.archive.ubuntu.com/ubuntu xenial InRelease
 Get:3 http://us.archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB]
 Get:4 http://us.archive.ubuntu.com/ubuntu xenial-backports InRelease [107 kB]
 Fetched 323 kB in 0s (827 kB/s)
 Reading package lists... Done
 E: The method driver /usr/lib/apt/methods/https could not be found.
 N: Is the package apt-transport-https installed?
 E: Failed to fetch https://download.docker.com/linux/ubuntu/dists/xenial/InRelease
 E: Some index files failed to download. They have been ignored, or old ones used instead.

 


注意:
如果收到以上错误:“ N:是否安装了apt-transport-https软件包?”,请使用以下命令更正此错误。
root@test:~# sudo apt-get install apt-transport-https

 

让我们重新运行更新:

root@test:~# apt-get update
 Hit:1 http://us.archive.ubuntu.com/ubuntu xenial InRelease
 Get:2 http://security.ubuntu.com/ubuntu xenial-security InRelease [107 kB]
 Get:3 http://us.archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB]
 Get:4 http://us.archive.ubuntu.com/ubuntu xenial-backports InRelease [107 kB]
 Hit:5 https://download.docker.com/linux/ubuntu xenial InRelease
 Fetched 323 kB in 0s (656 kB/s)
 Reading package lists... Done

 


成功!现在,验证我们是从正确的存储库而不是默认的Ubuntu 16.04存储库安装Docker:
root@test:~# apt-cache policy docker-ce
 docker-ce:
   Installed: (none)
   Candidate: 18.06.0~ce~3-0~ubuntu
   Version table:
      18.06.0~ce~3-0~ubuntu 500
         500 https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages

 

第5步—安装Docker

最后,让我们开始Docker安装:

root@test:~# apt-get install -y docker-ce
 Reading package lists... Done
 Building dependency tree
 Reading state information... Done
 The following additional packages will be installed:
   aufs-tools cgroupfs-mount libltdl7 pigz
 Suggested packages:
   mountall
 The following NEW packages will be installed:
   aufs-tools cgroupfs-mount docker-ce libltdl7 pigz
 0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
 Need to get 40.3 MB of archives.
 After this operation, 198 MB of additional disk space will be used.
 Get:1 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 pigz amd64 2.3.1-2 [61.1 kB]
 Get:2 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 aufs-tools amd64 1:3.2+20130722-1.1ubuntu1 [92.9 kB]
 Get:3 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 cgroupfs-mount all 1.2 [4,970 B]
 Get:4 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 libltdl7 amd64 2.4.6-0.1 [38.3 kB]
 Get:5 https://download.docker.com/linux/ubuntu xenial/stable amd64 docker-ce amd64 18.06.0~ce~3-0~ubuntu [40.1 MB]
 Fetched 40.3 MB in 1s (38.4 MB/s)
 ...
 ...

 

现在应该安装Docker,启动守护程序,并启用启动过程。让我们检查一下它是否正在运行:


root@test:~# systemctl status docker
 * docker.service - Docker Application Container Engine
    Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
    Active: active (running) since Wed 2018-08-08 13:51:22 EDT; 2min 13s ago
      Docs: https://docs.docker.com
  Main PID: 6519 (dockerd)
    CGroup: /system.slice/docker.service
            |-6519 /usr/bin/dockerd -H fd://
            `-6529 docker-containerd --config /var/run/docker/containerd/containerd.toml

Aug 08 13:51:22 test.docker.com dockerd[6519]: time="2018-08-08T13:51:22.192600502-04:00" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc
 Aug 08 13:51:22 test.docker.com dockerd[6519]: time="2018-08-08T13:51:22.192630873-04:00" level=info msg="pickfirstBalancer: HandleSubConnStateChange: 0xc42020f6a0, CONNECTING" module=grpc
 Aug 08 13:51:22 test.docker.com dockerd[6519]: time="2018-08-08T13:51:22.192854891-04:00" level=info msg="pickfirstBalancer: HandleSubConnStateChange: 0xc42020f6a0, READY" module=grpc
 Aug 08 13:51:22 test.docker.com dockerd[6519]: time="2018-08-08T13:51:22.192867421-04:00" level=info msg="Loading containers: start."
 Aug 08 13:51:22 test.docker.com dockerd[6519]: time="2018-08-08T13:51:22.340349000-04:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"
 Aug 08 13:51:22 test.docker.com dockerd[6519]: time="2018-08-08T13:51:22.397715134-04:00" level=info msg="Loading containers: done."
 Aug 08 13:51:22 test.docker.com dockerd[6519]: time="2018-08-08T13:51:22.424005987-04:00" level=info msg="Docker daemon" commit=0ffa825 graphdriver(s)=overlay2 version=18.06.0-ce
 Aug 08 13:51:22 test.docker.com dockerd[6519]: time="2018-08-08T13:51:22.424168214-04:00" level=info msg="Daemon has completed initialization"
 Aug 08 13:51:22 test.docker.com dockerd[6519]: time="2018-08-08T13:51:22.448805942-04:00" level=info msg="API listen on /var/run/docker.sock"
 Aug 08 13:51:22 test.docker.com systemd[1]: Started Docker Application Container Engine.
 ~
 ~
 ~
 (press q to quit)
 

 

如果安装后自动启动Docker ,请运行以下命令:

root@test:~# systemctl start docker.service
 root@test:~# systemctl enable docker.service

 

第6步—测试Docker

让我们通过下载hello-world测试映像来检查新的Docker构建。
要开始测试,请发出以下命令:

root@test:~# docker run hello-world
 Unable to find image 'hello-world:latest' locally
 latest: Pulling from library/hello-world
 9db2ca6ccae0: Pull complete
 Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc
 Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

 

为了生成此消息,Docker采取了以下步骤:

  1. Docker客户端联系了Docker守护程序。
  2. Docker守护程序从Docker Hub中提取了“ hello-world”映像。
    (amd64)
  3. Docker守护程序从该映像创建了一个新容器,该容器运行可执行文件,该可执行文件会生成您当前正在读取的输出。
  4. Docker守护程序将该输出流式传输到Docker客户端,该客户端将其发送到您的终端。

要尝试更具野心的东西,可以使用以下命令运行Ubuntu容器:

$ docker run -it ubuntu bash 
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/ 

For more examples and ideas, visit: https://docs.docker.com/engine/userguide/

 

步骤7 —“ Docker”命令

安装并运行Docker之后,现在是时候熟悉命令行实用程序了。“ Docker”命令包括使用带有一系列选项和参数的Docker。语法采用以下形式:

root@test:~# docker
 Usage: docker [OPTIONS] COMMAND
 A self-sufficient runtime for containers
 Run 'docker COMMAND --help' for more information on a command.

 

要查看所有可用的选项和管理命令,只需键入:

docker

 

要查看可用于特定命令的开关,请键入:


docker docker-subcommand --help

 

最后,要查看有关Docker的系统范围信息,请使用:
docker info

 

Docker是一个动态,健壮且响应迅速的工具,使在容器化环境中运行应用程序变得非常简单。它具有可移植性,不占用资源,并且更依赖于允许多种用途的主机操作系统。总体而言,Docker是一个“必备”系统,应包含在您的工具包中,以实现应用程序的自动化,部署和扩展!

管理员

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: