Docker 学习笔记
本篇为 《深入浅出Docker》该书学习笔记
0. 为什么学习 Docker
容器化应用已是目前的事实,至少需要学会使用该工具。
1. 容器概览
很好的一个例子是: 在某地从零开始搭建一座房子, 结果需要搬家,只好在另处又从零开始。
容器的出现,让这一切变得“可复用”,一次搭好,随处可用,并且可靠。
虚拟机的不足
VMware的虚拟机是在硬件层面上构建虚拟构建应用, 不足在于VMware本身需要依赖专用操作系统,且VMware 本身占用资源。
因此,容器化技术便是为了解决虚拟机的不足而出现。容器的运行不会独占操作系统,还具有启动快和便于迁移等优势。
2. Docker 介绍
3. Docker 安装
3.1 Ubuntu 上使用 Docker 仓库安装 ce 版本
Ubuntu 官方的版本库中并不一定是 Docker 最新的安装包,为了保证是最新版,我们从 Docker 官方库来安装。
首先,更新现有的软件包列表:
$ sudo apt update
注意:如果无法更新,可能是你的软件源指向是国外的服务器,很可能已经被墙。所有首次更新请打开 VPN。
接下来,安装一些必备软件包,让 apt 通过 HTTPS 使用软件包。
sudo apt install apt-transport-https ca-certificates curl software-properties-common
然后将官方 Docker 版本库的 GPG 密钥添加到系统中:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
执行后显示
OK
将 Docker 版本库添加到APT源:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
执行后显示:
Get:1 https://download.docker.com/linux/ubuntu focal InRelease [36.2 kB]
Hit:2 http://cn.archive.ubuntu.com/ubuntu focal InRelease
Get:3 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages [3056 B]
Hit:4 http://cn.archive.ubuntu.com/ubuntu focal-updates InRelease
Hit:5 http://cn.archive.ubuntu.com/ubuntu focal-backports InRelease
Hit:6 http://cn.archive.ubuntu.com/ubuntu focal-security InRelease
Fetched 39.2 kB in 2s (16.1 kB/s)
Reading package lists... Done
接下来,我们用新添加的 Docker 软件包来进行升级更新。
sudo apt update
确保要从 Docker 版本库,而不是默认的 Ubuntu 版本库进行安装:
apt-cache policy docker-ce
执行后会看到这样的结果( Docker 的版本号可能略有不同)
docker-ce:
Installed: (none)
Candidate: 5:20.10.13~3-0~ubuntu-focal
Version table:
5:20.10.13~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
5:20.10.12~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
5:20.10.11~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
5:20.10.10~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
请注意,到目前这一步docker-ce还未安装,但根据上一步中的列表,可以看到 docker-ce 来自 Docker 官方版本库。
最后,安装 Docker :
sudo apt install docker-ce
现在 Docker 已经安装完毕。
查看 docker 安装版本信息:
$docker --version
我们启动守护程序。检查 Docker 是否正在运行:
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 Sat 2020-07-08 02:55:20 UTC; 5min ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 4287 (dockerd)
Tasks: 8
Memory: 36.4M
CGroup: /system.slice/docker.service
└─4287 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
如果要使用 Docker 作为非 root 用户,则应考虑使用类似以下方式将用户添加到 docker 组:
$ sudo usermod -aG docker your-user
$ cat /etc/group | grep docker
docker:x:999:your-user
如果当前登录用户就是要添加到Docker组中的用户的话,则需要重新登录,组权限设置才会生效。
https://kalacloud.com/blog/how-to-install-and-use-docker-on-ubuntu/
3.2 卸载 docker
删除安装包:
sudo apt-get remove docker docker-engine docker-ce docker.io -y
删除镜像、容器、配置文件等内容:
sudo rm -rf /var/lib/docker
3.3 Docker 升级
(1)停止Docker守护程序。(2)移除旧版本Docker。(3)安装新版本Docker。(4)配置新版本的Docker为开机自启动。(5)确保容器重启成功。
3.4 Docker 存储驱动的选择
每个Docker容器都有一个本地存储空间,用于保存层叠的镜像(Image Layer)以及挂载的容器文件系统,默认情况下,容器的所有读写操作都发生在镜像层上或挂载的文件系统中
本地存储是通过存储驱动(Storage Driver)进行管理,也被称为Graph Driver
在Linux上,Docker可选择的一些存储驱动包括AUFS(最原始也是最老的)、Overlay2(可能是未来的最佳选择)、Device Mapper、Btrfs和ZFS。
在Linux上,读者可以通过修改/etc/docker/daemon.json文件来修改存储引擎配置,修改完成之后需要重启Docker才能够生效
4. 纵观 Docker
4.1 运维视角
镜像:
# 查看镜像
$ docker image ls
# 拉取镜像
$ docker image pull ubuntu:latest
容器
4.2 开发视角
会分析一份应用代码中的Dockerfile并将其容器化,最终以容器的方式运行