Docker:在Ubuntu中成功安装Docker并简单配置

环境:

  • Ubuntu 20.04 (LTS)
  • Intel i7 9750H

一,使用仓库安装Docker

官方说明:使用仓库完成安装Docker

如果是第一次安装Docker,则需要先先设置Docker仓库,然后才能通过仓库安装Docker。

1,设置仓库

1,更新apt包索引并安装包以允许apt使用HTTPS存储库:

$ sudo apt-get update
$ sudo apt-get install \
	ca-certificates \
  	curl \
  	gnupg \
  	lsb-release

2,添加官方的 GPG key:

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

或

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

3,配置稳定的仓库:

$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

2,安装 Docker Engine

1,安装最新版本的 Docker Engine:

$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
将会同时安装下列软件:
  docker-ce-rootless-extras docker-scan-plugin libslirp0 pigz slirp4netns
建议安装:
  aufs-tools cgroupfs-mount | cgroup-lite
下列【新】软件包将被安装:
  containerd.io docker-ce docker-ce-cli docker-ce-rootless-extras docker-scan-plugin libslirp0 pigz slirp4netns
升级了 0 个软件包,新安装了 8 个软件包,要卸载 0 个软件包,有 1 个软件包未被升级。
需要下载 96.7 MB 的归档。
解压缩后会消耗 406 MB 的额外空间。
您希望继续执行吗? [Y/n] 
获取:1 http://mirrors.aliyun.com/ubuntu groovy/universe amd64 pigz amd64 2.4-1 [57.4 kB]
获取:2 http://mirrors.aliyun.com/ubuntu groovy-updates/main amd64 libslirp0 amd64 4.3.1-1ubuntu0.1 [55.6 kB]
获取:3 https://download.docker.com/linux/ubuntu groovy/stable amd64 containerd.io amd64 1.4.9-1 [24.7 MB]
获取:4 http://mirrors.aliyun.com/ubuntu groovy/universe amd64 slirp4netns amd64 1.0.1-1 [33.1 kB]
获取:5 https://download.docker.com/linux/ubuntu groovy/stable amd64 docker-ce-cli amd64 5:20.10.8~3-0~ubuntu-groovy [38.8 MB]
获取:6 https://download.docker.com/linux/ubuntu groovy/stable amd64 docker-ce amd64 5:20.10.8~3-0~ubuntu-groovy [21.2 MB]                              
获取:7 https://download.docker.com/linux/ubuntu groovy/stable amd64 docker-ce-rootless-extras amd64 5:20.10.8~3-0~ubuntu-groovy [7,913 kB]             
获取:8 https://download.docker.com/linux/ubuntu groovy/stable amd64 docker-scan-plugin amd64 0.8.0~ubuntu-groovy [3,889 kB]                            
已下载 96.7 MB,耗时 11(8,681 kB/s)                                                                                                                 
正在选中未选择的软件包 pigz。
(正在读取数据库 ... 系统当前共安装有 192110 个文件和目录。)
准备解压 .../0-pigz_2.4-1_amd64.deb  ...
正在解压 pigz (2.4-1) ...
正在选中未选择的软件包 containerd.io。
准备解压 .../1-containerd.io_1.4.9-1_amd64.deb  ...
正在解压 containerd.io (1.4.9-1) ...
正在选中未选择的软件包 docker-ce-cli。
准备解压 .../2-docker-ce-cli_5%3a20.10.8~3-0~ubuntu-groovy_amd64.deb  ...
正在解压 docker-ce-cli (5:20.10.8~3-0~ubuntu-groovy) ...
正在选中未选择的软件包 docker-ce。
准备解压 .../3-docker-ce_5%3a20.10.8~3-0~ubuntu-groovy_amd64.deb  ...
正在解压 docker-ce (5:20.10.8~3-0~ubuntu-groovy) ...
正在选中未选择的软件包 docker-ce-rootless-extras。
准备解压 .../4-docker-ce-rootless-extras_5%3a20.10.8~3-0~ubuntu-groovy_amd64.deb  ...
正在解压 docker-ce-rootless-extras (5:20.10.8~3-0~ubuntu-groovy) ...
正在选中未选择的软件包 docker-scan-plugin。
准备解压 .../5-docker-scan-plugin_0.8.0~ubuntu-groovy_amd64.deb  ...
正在解压 docker-scan-plugin (0.8.0~ubuntu-groovy) ...
正在选中未选择的软件包 libslirp0:amd64。
准备解压 .../6-libslirp0_4.3.1-1ubuntu0.1_amd64.deb  ...
正在解压 libslirp0:amd64 (4.3.1-1ubuntu0.1) ...
正在选中未选择的软件包 slirp4netns。
准备解压 .../7-slirp4netns_1.0.1-1_amd64.deb  ...
正在解压 slirp4netns (1.0.1-1) ...
正在设置 docker-scan-plugin (0.8.0~ubuntu-groovy) ...
正在设置 containerd.io (1.4.9-1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/containerd.service → /lib/systemd/system/containerd.service.
正在设置 docker-ce-cli (5:20.10.8~3-0~ubuntu-groovy) ...
正在设置 libslirp0:amd64 (4.3.1-1ubuntu0.1) ...
正在设置 pigz (2.4-1) ...
正在设置 docker-ce-rootless-extras (5:20.10.8~3-0~ubuntu-groovy) ...
正在设置 slirp4netns (1.0.1-1) ...
正在设置 docker-ce (5:20.10.8~3-0~ubuntu-groovy) ...
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service.
Created symlink /etc/systemd/system/sockets.target.wants/docker.socket → /lib/systemd/system/docker.socket.
正在处理用于 systemd (246.6-1ubuntu1.7) 的触发器 ...
正在处理用于 man-db (2.9.3-2) 的触发器 ...
正在处理用于 libc-bin (2.32-0ubuntu3) 的触发器 ...

2,或者安装指定版本的 Docker Engine:

$ apt-cache madison docker-ce
 docker-ce | 5:20.10.8~3-0~ubuntu-groovy | https://download.docker.com/linux/ubuntu groovy/stable amd64 Packages
 docker-ce | 5:20.10.7~3-0~ubuntu-groovy | https://download.docker.com/linux/ubuntu groovy/stable amd64 Packages
 docker-ce | 5:20.10.6~3-0~ubuntu-groovy | https://download.docker.com/linux/ubuntu groovy/stable amd64 Packages
 docker-ce | 5:20.10.5~3-0~ubuntu-groovy | https://download.docker.com/linux/ubuntu groovy/stable amd64 Packages
 docker-ce | 5:20.10.4~3-0~ubuntu-groovy | https://download.docker.com/linux/ubuntu groovy/stable amd64 Packages
 docker-ce | 5:20.10.3~3-0~ubuntu-groovy | https://download.docker.com/linux/ubuntu groovy/stable amd64 Packages
 docker-ce | 5:20.10.2~3-0~ubuntu-groovy | https://download.docker.com/linux/ubuntu groovy/stable amd64 Packages
 docker-ce | 5:20.10.1~3-0~ubuntu-groovy | https://download.docker.com/linux/ubuntu groovy/stable amd64 Packages
 docker-ce | 5:20.10.0~3-0~ubuntu-groovy | https://download.docker.com/linux/ubuntu groovy/stable amd64 Packages
$ sudo apt-get install docker-ce=5:20.10.4~3-0~ubuntu-groovy docker-ce-cli=5:20.10.4~3-0~ubuntu-groovy containerd.io

3,通过运行hello-world镜像来验证Docker Engine是否正确安装:

$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:cc15c5b292d8525effc0f89cb299f1804f3a725c8d05e158653a563f15e4f685
Status: Downloaded newer image for hello-world:latest

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

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ 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/get-started/
  • 有时候执行命令后会卡住,ctrl+c 后再执行就行。

在阿里云Ubuntu中安装docker,可以参考这篇文章:如何在 Ubuntu 20.04 上安装和使用 Docker

3,简单配置

(1)授权 root 用户管理 Docker

当第一次安装完 Docker Engine 并确认验证成功安装后,任意执行一条 docker 命令,可能会显示如下错误:
在这里插入图片描述
这是因为 Docker 守护进程绑定到 Unix 套接字而不是 TCP 端口,而默认情况下,Unix 套接字归 root 用户所有。

解决方法一:普通用户在docker命令前添加 sudo。

解决方法二:创建一个名为docker的 Unix 组,并向其中添加用户。当 Docker 守护进程启动时,它会创建一个可由docker组成员访问的 Unix 套接字。

$ sudo groupadd docker				# 创建用户组
$ sudo usermod -aG docker $USER		# 将当前用户添加到用户组
$ newgrp docker 					# 激活用户组变更
$ docker run hello-world			# 然后普通用户就能运行docker命令了

在这里插入图片描述

(2)Docker服务的启动与自启动

开启开机自启动:

$ sudo systemctl enable docker.service
$ sudo systemctl enable containerd.service
  • 在 Ubuntu 上,Docker 服务默认配置为开机自启动。

关闭开机自启动:

$ sudo systemctl disable docker.service
$ sudo systemctl disable containerd.service

启动服务:

$ sudo service docker start

关闭服务:

$ sudo service docker stop

重启服务:

$ sudo service docker restart

可访问 Linux postinstall 以查看更多Linux安装docker后的服务配置。

二,使用包安装Docker

1,下载 .deb文件

访问https://download.docker.com/linux/ubuntu/dists/,选择与Ubuntu版本匹配的 .deb文件。

2,安装 Docker Engine

 sudo dpkg -i /path/to/package.deb	# 指向.deb文件所在的路径
  • 自动启动 Docker 守护进程。

三,卸载Docker

1,卸载老版本Docker

$ sudo apt-get remove docker docker-engine docker.io containerd runc

将被保留 /var/lib/docker/ 的内容,包括镜像、容器、挂载卷和网络配置。

2,完全卸载Docker

1,完全卸载Docker:

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

2,进一步卸载相关文件:

$ sudo rm -rf /var/lib/docker
$ sudo rm -rf /var/lib/containerd
  • 必须手动删除任何已编辑的配置文件。

四,更新Docker

方法一,再使用包安装Docker。
方法二,卸载老版本,再使用仓库安装Docker


版权声明:本文为dangfulin原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。