0%

Docker 安装使用

环境: Ubuntu

安装 (Ubuntu)

使用的官网安装教程: https://docs.docker.com/install/linux/docker-ee/ubuntu/ .

检查系统环境

安装的 CE, EE 要钱.

首先检查系统合不合要求.

To install Docker CE, you need the 64-bit version of one of these Ubuntu versions: - Cosmic 18.10 - Bionic 18.04 (LTS) - Xenial 16.04 (LTS)

1
2
3
4
5
6
7
8
9
10
11
uname -r   # 要求内核版本大于 3.10
# 4.4.0-21-generic

cat /etc/lsb-release # 可以查看是不是 Xenial, 是不是 16.04 等
# DISTRIB_ID=Ubuntu
# DISTRIB_RELEASE=16.04
# DISTRIB_CODENAME=xenial
# DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"

getconf LONG_BIT # 查看是不是 64 位
# 64

先卸载旧版, 若本身就没有安装会提示 Package 'xxx' is not installed, so not removed .

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

安装

前往 https://download.docker.com/linux/ubuntu/dists/ , 根据 Ubuntu 版本打开对应目录. 例如我的是 https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/ , 挑个新版本的 .deb 文件下载./

上述方法在使用 dpkg 安装该 deb 时安装错误, 因为缺少一些依赖. 于是还是选择了官方最推荐又比较烦的方法.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
sudo apt-get update

# 安装一些依赖,比如允许 apt 添加 https 的仓库
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common

# 添加 Docker 的官方 GPG Key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 确保该指令输出 "9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88" 字样
sudo apt-key fingerprint 0EBFCD88

# 添加仓库
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

sudo apt-get update

# 安装**最新版** Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io

# 安装**指定版本** Docker
# apt-cache madison docker-ce # 检索版本
# sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

# 验证是否安装成功
sudo docker run hello-world

卸载

1
2
sudo apt-get purge docker-ce    # 卸载软件
sudo rm -rf /var/lib/docker # 删除图片, 容器等文件

指令

一个实例

1
sudo docker run -it -v /var/run/docker.sock:/var/run/docker.sock -v ~/Eclipse-Che:/data eclipse/che:6.16.0 start

-it: -t 让docker分配一个伪终端并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开. -it 使得伪终端接管 stdin/stdout, 保持 bash 不退出.

-v: 挂载宿主机的一个目录 (宿主机目录:容器内目录), 容器目录不可以为相对路径.

指令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 容器
sudo docker ps # 查看运行中的容器
sudo docker ps -a # 查看所有容器
sudo docker start <name> # 启动已存在容器
sudo docker start -a <name> # 启动容器并在控制台打印其输出
sudo docker stop <name> # 关闭容器
sudo docker rename <old_name> <new_name> # 重命名
sudo docker export <name> > <name>.tar # 导出容器
sudo docker rm <name> # 删除容器
sudo docker rm -f <name> # 强制删除运行中的容器

# 镜像
docker images # 查看所有镜像
docker images -q # 仅查看所有镜像的id
docker rmi <name> # 删除镜像

启动/关闭 daemon 和 docker

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

1
2
3
4
sudo systemctl start docker     # 开启 Docker daemon
sudo systemctl restart docker # 重启 Docker daemon
sudo systemctl daemon-reload # 刷新修改
sudo systemctl stop docker # 关闭 Docker daemon