Docker 学习笔记
基本概念
- 镜像:Docker 的镜像概念类似于虚拟机里的镜像,是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。
- DockerFile;镜像可以基于 DockerFile 构建,DockerFile 是一个描述文件,里面包含若干条命令,每条命令都会对基础文件系统创建新的层次结构,用户可以通过编写 DockerFile 创建新的镜像。
- 容器:Docker 容器是由 Docker 镜像创建的运行实例。Docker 容器类似虚拟机,可以支持的操作包括启动,停止,删除等。每个容器间是相互隔离的,但隔离的效果比不上虚拟机。容器中会运行特定的应用,包含特定应用的代码及所需的依赖文件。
- 容器隔离:在 Docker 容器中,每个容器之间的隔离使用 Linux 的 CGroups(Control Groups)和 Namespace 技术实现的。CGroups(控制组)提供了资源控制: CPU、内存、磁盘等资源的访问限制。Namespaces (命名空间)提供了系统资源的隔离:进程、网络、文件系统等。
- Registry:如果你使用过 Git 和 GitHub 就很容易理解 Docker 的仓库概念。Docker 仓库相当于一个 GitHub 上的代码库。Docker 仓库是用来包含镜像的位置,Docker 提供一个注册服务器(Registry)来保存多个仓库,每个仓库又可以包含多个具备不同 tag 的镜像。Docker 运行中使用的默认仓库是 Docker Hub 公共仓库。仓库支持的操作类似 Git,创建了新的镜像后,我们可以 Push 提交到仓库,也可以从指定仓库 Pull 拉取镜像到本地。
Docker 安装
Docker 有两个版本,Community Edition(CE) 和 Enterprise Edition(EE)。即社区版和企业版本。
安装 docker-engine:见官网手册 https://docs.docker.com/engine/install/
更换 docker-ce 镜像源:https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/
docker-engine安装流程:
卸载之前安装的docker及其工具包
yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
添加docker-ce的安装源:
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's+https://download.docker.com+https://mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
安装docker
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
验证安装是否成功
在安装成功后,Docker 的守护进程自动启动,不需要手动启动服务。此时,我们可以查看其版本信息,使用如下命令:
docker version
如果你是 自己搭建的 Docker 环境,可能会提示我们没有相应的权限连接到 Docker 守护进行绑定的 Unix 套接字。这是因为,默认情况下,该套接字归属于 root 用户,对于其它用户只能通过 sudo 来进行访问。
如果要让普通用户可以直接执行 Docker 命令而不必在每次执行时都输入 sudo 来获得权限,我们可以将要执行 Docker 命令的用户添加到用户组 Docker 中。该用户组会在安装后自动创建,我们只需执行添加用户到 Docker 用户组的操作:
sudo usermod -aG docker username
在添加成功后,我们还需要重新打开一个 shell 修改才能生效。这时可以尝试打开一个新的终端或者使用如下命令:
sudo su username
在安装之后,我们可以通过运行一个 hello-world 的镜像来验证 Docker CE 是否被正确的安装,使用如下命令:
docker run hello-world
该命令会下载一个名为 hello-world 的镜像并运行于一个容器中。当这个容器运行时,会输出一些信息并退出:
如上图中标注出的提示信息所示,提示我们安装正确。
docker hub 镜像配置
使用 Docker Hub 国内镜像:https://linux.do/t/topic/114516
注意:所有镜像加速器网址需要 https://
开头,否则会报错!
配置方法:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://hub.uuuadc.top","https://docker.anyhub.us.kg","https://dockerhub.jobcher.com","https://dockerhub.icu","https://docker.ckyl.me","https://docker.awsl9527.cn"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker