如何在Ubuntu 18.04上安装Docker
Docker是一种轻量级操作系统级虚拟化解决方案,允许我们在Orchestration工具的帮助下在单个主机上同时运行多个容器或者在服务器上的船队中运行多个容器。
Docker容器使用内核控制组和名称空间彼此隔离。
在本教程帖子中,我们将查看不同的方法来在Ubuntu 18.04 LTS上安装Docker。
Docker提供了一种基于镜像的部署模型,可以轻松打包应用程序的所有依赖项并跨多个环境共享。
Docker还可以自动部署此Docker环境中的应用程序。
在我们查看Docker的安装和用法之前,让我们在Docker容器世界中定义一些常见的术语。
- Docker Engine:这是一个服务器守护程序,管理所有Docker对象 - 网络,容器,存储,镜像等。 Docker引擎还提供应用程序使用的REST API与守护程序通信。
- Docker Image - 镜像是用于在Docker引擎上创建容器的只读模板。
- 容器 - 这是基于Docker Image的运行实例。每个容器都有一个唯一的ID
- 注册表 - Docker注册表是已创建的镜像的存储。它可以是受限制的存储库(私有)或者公共存储库。
ubuntu上的Docker安装
有三种方法可以在Ubuntu 18.04上安装Docker,即:
- 从APT存储库安装Docker
- 从编译的Debian包装安装Docker
- 使用自动化脚本安装Docker Edge
1)从APT存储库安装Docker
在我们添加Docker存储库之前,请确保没有较旧的Docker软件包,除非我们要执行升级而不是新的安装。
$sudo apt-get remove docker docker-engine docker.io
请注意,Docker CE包现在称为Docker-CE。
安装依赖性包
要允许APT通过HTTPS使用存储库,请在下面安装包:
$sudo apt-get install software-properties-common ca-certificates apt-transport-https
安装成功后,继续添加Docker APT存储库。
导入官方Docker GPG密钥
要安装Docker签名包,我们需要导入GPG密钥:
$sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add OK
添加Docker-CE稳定存储库
现在让我们使用add-apt-repository命令添加Docker存储库。
$ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" Hit:1 http://security.ubuntu.com/ubuntu bionic-security InRelease Hit:3 https://repos.influxdata.com/ubuntu bionic InRelease Get:2 https://download.docker.com/linux/ubuntu bionic InRelease [64.4 kB] Hit:4 http://mirrors.digitalocean.com/ubuntu bionic InRelease Get:5 http://mirrors.digitalocean.com/ubuntu bionic-updates InRelease [83.2 kB] Hit:6 http://mirror.zol.co.zw/mariadb/repo/10.3/ubuntu bionic InRelease Get:7 http://mirrors.digitalocean.com/ubuntu bionic-backports InRelease [74.6 kB] Hit:8 https://packagecloud.io/grafana/stable/debian stretch InRelease Fetched 222 kB in 1s (149 kB/s) Reading package lists... Done
上面的命令将为/etc/apt/sources.list添加一行
deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable
这是Docker包的位置。
更新APT索引并安装Docker
一旦存储到系统中,就会添加到系统中
$sudo apt-get update $sudo apt-get install docker-ce
启动并启用服务以启动启动
使用安装成功,我们应该使用SystemCtl命令启动Docker服务。
$sudo systemctl start docker $sudo systemctl enable docker $sudo systemctl is-enabled docker enabled
使用以下内容检查服务的状态:
$sudo systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2016-06-05 19:37:30 UTC; 39min ago Docs: https://docs.docker.com Main PID: 4235 (dockerd) Tasks: 18 CGroup: /system.slice/docker.service ├─4235 /usr/bin/dockerd -H fd:// └─4284 docker-containerd --config /var/run/docker/containerd/containerd.toml Jun 05 19:37:30 dokcer.theitroad.com dockerd[4235]: time="2016-06-05T19:37:30.458294292Z" level=warning msg="Your kernel does not support swap memory limit" Jun 05 19:37:30 docker.theitroad.com dockerd[4235]: time="2016-06-05T19:37:30.458346988Z" level=warning msg="Your kernel does not support cgroup rt period" Jun 05 19:37:30 docker.theitroad.com dockerd[4235]: time="2016-06-05T19:37:30.458358517Z"
将Docker运行为非root用户
如果我们想使用Docker作为非root用户,我们现在应该考虑将用户添加到"Docker"组,其中包含:
$sudo getent group docker docker:x:998: $sudo usermod -aG docker <username>
例如
$sudo usermod -aG docker jmutai
对于立即组更改而无需注销运行:
$sudo gpasswd -a username groupname
例如
$sudo gpasswd -a jmutai docker
2)安装Docker .deb包
另一种安装方法正在下载Ubuntu 18.04的Docker的最新版本。
此方法的问题是我们每次要升级Docker CE时都需要下载一个新文件。
转到https://download.docker.com/linux/ubuntu/dists/,选择Ubuntu版本,然后浏览到池/稳定/然后选择操作系统架构。
我们需要下载要安装的Docker版本的.deb文件。
运行命令安装包:
$sudo dpkg -i /path/to/package.deb
3)使用脚本安装Docker Edge版本
Docker为get.docker.com提供了用于安装Docker的边缘版本的便利脚本。
不建议使用此版本以用于生产目的,但可用于测试和通用目的。
请注意,脚本需要root或者sudo权限运行:
$curl -fsSL get.docker.com -o get-docker.sh $sudo sh get-docker.sh
该脚本将为我们做任何一切,无需手动工作。
只有,如果我们想使用Docker作为非root用户,我们现在应该考虑将用户添加到"Docker"组,其中包含:
$sudo usermod -aG docker your-user
检查使用docker版本命令安装的docker版本:
$sudo docker version Client: Version: 18.05.0-ce API version: 1.37 Go version: go1.9.5 Git commit: f150324 Built: Wed Jan 9 22:16:13 2016 OS/Arch: linux/amd64 Experimental: false Orchestrator: swarm Server: Engine: Version: 18.05.0-ce API version: 1.37 (minimum version 1.12) Go version: go1.9.5 Git commit: f150324 Built: Wed Jan 9 22:14:23 2016 OS/Arch: linux/amd64 Experimental: false
在Ubuntu上使用Docker
现在我们拥有我们需要的一切,让我们考虑一些Docker操作来开始。
我们将下载两个Docker镜像,然后从中创建容器。
然后后来破坏这些容器。
默认情况下,Docker镜像从Docker公共存储库下载,无需验证公开共享的镜像所需的身份验证。
让我们下载Ubuntu 18.04和CentOS 7镜像。
Docker Pull命令用于此:
$sudo docker pull ubuntu:18.04 18.04: Pulling from library/ubuntu a48c500ed24e: Pull complete 1e1de00ff7e1: Pull complete 0330ca45a200: Pull complete 471db38bcfbf: Pull complete 0b4aba487617: Pull complete Digest: sha256:c8c275751219dadad8fa56b3ac41ca6cb22219ff117ca98fe82b42f24e1ba64e Status: Downloaded newer image for ubuntu:18.04 $sudo docker pull centos:latest latest: Pulling from library/centos 7dc0dca2b151: Pull complete Digest: sha256:b67d21dfe609ddacf404589e04631d90a342921e81c40aeaf3391f6717fa5322 Status: Downloaded newer image for centos:latest
查看可用的镜像:
$sudo docker images REPOSITORY TAG IMAGE ID C REATED SIZE centos latest 49f7960eb7e4 22 hours ago 200MB ubuntu 18.04 452a96d81c30 5 weeks ago 79.6MB
从Docker Image创建一个容器
docker运行命令用于运行Docker容器。
容器是Docker镜像的运行实例。
还可以使用dockerfile创建自定义Docker镜像。
请参阅如何编写自己的dockerfile的链接。
下面的示例将创建一个名为Ubuntu18.04的容器,从Ubuntu 18.04上下载的镜像。
$docker run -it --rm --name ubuntu-cont ubuntu:18.04 /bin/bash root@f4da5e088c9c:/#
使用的选项是:
- -it:获取交互式shell会话
- --rm:这指示Docker在退出时删除容器
- --Name:用于指定容器的名称。给出的名称是ubuntu-cont
- Ubuntu:18.04:这是我们正在创建容器的Docker镜像的名称
-/bin/bash:命令在容器上执行
如果使用Exit命令或者Ctrl + D退出容器shell