文章目录
- 1 初识Docker
-
- 1.1 Docker与虚拟机相比
- 1.2 Docker与OpenStack
- 1.3 虚拟化与Docker
- 1.4 相关网址
-
- 1.4.1 官方网址
- 1.4.2 中文网址
- 1.4.3 国内镜像
- 2 Docker核心概念及安装
-
- 2.1 核心概念
-
- 2.1.1 Docker镜像
- 2.1.2 Docker容器
- 2.1.3 Docker仓库
- 2.2 安装Docker
-
- 2.2.1 Windows
-
- 2.2.1.1 系统要求
- 2.2.1.2 手动下载安装
- 2.2.1.3 使用winget安装
- 2.2.1.4 在WSL2运行Docker
- 2.2.1.5 配置并检查
- 2.2.1.5 运行
- 2.2.2 CentOS
-
- 2.2.2.1 系统要求
- 2.2.2.2 卸载旧版本
- 2.2.2.3 使用yum安装
- 2.2.2.4 CentOS8额外设置
- 2.2.2.5 自动安装官方脚本
- 2.2.2.6 建立docker用户组
- 2.2.3 Ubuntu
-
- 2.2.3.1 系统要求
- 2.2.4.2 卸载旧版本
- 2.2.3.3 使用APT安装
- 2.2.3.4 自动安装官方脚本
- 2.2.3.5 建立docker用户组
- 2.2.3.6 实测结果
- 2.2.4 镜像加速器
-
- 2.2.4.1 Linux设置
- 2.2.4.2 Windows 10
- 2.2.4.3 macOS
- 2.2.4.4 检查加速器是否有效
- 2.3 docker启停
- 2.4 docker基本命令
Docker 它是一个开源应用容器引擎,允许开发者将其应用程序打包并依赖于可移植容器,然后发布到任何流行的容器中 Linux 机器上。Docker重新定义程序开发测试、交付和部署过程的开放平台,Docker它可以被称为建造一次,到处运行,这就是docker提出的“Build once,Run anywhere”
1 初识Docker
Docker是基于Go遵循语言实现的云开源项目Apache2.0协议,所有开源代码都在github上部维护仅次于OpenStack云计算开源项目最受欢迎。
Docker基于Linux多种开源技术提供高效、敏捷、轻量级的容器解决方案,并支持各种主流云平台(PaaS)部署在地系统。Docker为应用程序的开发和部署提供了一站式解决方案。
Docker引擎的基础是Linux容器(Linux Containers,LXC)技术。也就是说,容器有效地将单个操作系统管理的资源划分为孤立组,以便更好地平衡孤立组之间冲突的资源使用需求。与虚拟化相比,既不需要指令级模拟,也不需要即时编译。核心上可以使用容器CPU没有任何特殊的解释机制,本地操作指令。此外,还避免了准虚拟机化(paravirtualization)以及系统调用替换的复杂性。
Docker它提供了各种容器管理工具(如分发、版本、移植等),使用户可以简单地管理和使用容器,而无需关注底层操作。这样,用户就可以操作了Docker容器就像操作轻量级虚拟机。每个容器运行一个应用程序,不同的容器相互隔离,容器之间也可以建立通信机制。
Docker在开发和运维过程中,有以下优点:
- 交付和部署更快
- 资源利用效率更高
- 迁移和扩展更容易
- 更新管理更简单
1.1 Docker与虚拟机相比
作为一种轻量级虚拟机化,Docker与传统的虚拟机方法相比,运行应用具有明显的优势:
- Docker与传统的虚拟机模式相比,容器启动和停止速度快得多。
- Docker容器对系统资源的需求很小,一台主机可以同时运行数千台Docker容器。
- Docker通过类似Git操作方便用户获取、分发和更新应用镜像,指令简单,学习成本低。
- Docker通过Dockerfile配置文件,支持灵活的自动化创建和部署机制,提高工作效率。
特性 | 容器 | 虚拟机 |
---|---|---|
启动速度 | 秒级 | 分钟级 |
硬盘使用 | 一般为MB | 一般为GB |
性能 | 接近原生 | 弱于 |
系统支持量 | 单机支持数千个容器 | 一般为几十 |
隔离性 | 安全隔离 | 完全隔离 |
1.2 Docker与OpenStack
类别 | Docker | OpenStack |
---|---|---|
部署难度 | 非常简单 | 组件多,部署复杂 |
启动速度 | 秒级 | 分钟级 |
执行性能 | 几乎与物理系统一致 | VM会占用一些资源 |
镜像体积 | 镜像是MB级别 | 虚拟机镜像GB级别 |
管理效率 | 管理简单 | 组件相互依赖,管理复杂 |
隔离性 | 隔离性高 | 彻底隔离 |
可管理性 | 不建议启动单个过程SSH | 完整的系统管理 |
网络连接 | 比较弱 | 借助Neutron可灵活组建各种网络架构 |
1.3 虚拟化与Docker
从主要类别来看,虚拟化技术可以分为基于硬件的虚拟化和基于软件的虚拟机化。其中,基于硬件的虚拟化技术很少见,如SR-IOV。基于软件的虚拟化从对象的层次又可以划分为应用虚拟化和平台虚拟化(通常说的虚拟技术即属于这个范畴)。其中,前者一般指的是一些模拟设备或者Wine这样的软件。
平台虚拟机化又可以细分为:
- 完全虚拟化:虚拟机模拟完整的底层硬件环境和特权指令的执行过程,客户操作系统需要进行修改。如:VMware Workstation,VirtualBox,QEMU等。
- 硬件辅助虚拟化:利用硬件(主要是CPU)辅助支持处理敏感指令来实现完全虚拟化的功能,客户操作系统无需修改,如VMware Workstation,Xen,KVM。
- 部分虚拟化:只针对部分硬件资源进行虚拟化,客户操作系统需要进行修改。现在有些虚拟化技术的早期版本仅支持部分虚拟化。
- 超虚拟化:部分硬件接口以软件的形式提供给客户机操作系统,客户操作系统需要进行修改。如早期的Xen。
- 操作系统级虚拟化:内核通过创建多个虚拟的操作系统实例(内核和库)来隔离不同的进程。容器相关技术属于这个范畴。如Docker。
1.4 相关网址
1.4.1 官方网址
- Docker官网
- Docker源码
- Docker的官方文档 - 这个文档非常详细,是学习Docker的最佳途径
- Docker 官方博客
- Docker Hub
- Docker开源
1.4.2 中文网址
- Docker中文网
- CSDN-Docker中文社区
1.4.3 国内镜像
- 网易加速器
- 官方中国加速器
- ustc的镜像
- Daocloud - 注册后使用
- Daocloud镜像仓库
- 专业的Cloud Native技术交流平台
2 Docker的核心概念和安装
2.1 核心概念
2.1.1 Docker镜像
Docker镜像(Image)类似于虚拟机镜像,可以将它理解为一个面向Docker引擎的只读模板,包含了文件系统。
例如,一个镜像可以包含一个基本的操作系统环境,里面仅安装了Apache应用程序(或用户需要的其他软件)。可以把它称为一个Apache镜像。
镜像是创建Docker容器的基础。通过版本管理和增量的文件系统,Docker提供了一套十分简单的机制来创建和更新现有的镜像,用户甚至可以从网上下载一个已经做好的应用镜像,并通过简单的命令就可以直接使用。
2.1.2 Docker容器
Docker容器(Container)类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。
容器是从镜像创建的应用,可以将其启动,开始,停止,删除,而这些容器都是相互隔离的,互不可见的。可以把容器看多是一个简易版的Linux系统环境。
镜像自身是只读的。容器从镜像启动的时候,Docker会在镜像的最上层创建一个可写层,镜像本身将保持不变。
2.1.3 Docker仓库
Docker仓库(Repository)类似于代码仓库,是Docker集中存放镜像文件的场所。注册服务器(Registry)是存放仓库的地方,其上往往存放着多个仓库。
根据所存储的镜像公开分享与否,Docker仓库可以分为**公开仓库(Public)私有仓库(Private)**两种形式。
目前,最大的公开仓库是DockerHub,其中存放了数量庞大的镜像供用户下载。国内不少云服务提供商(如时速云、阿里云等)也提供了仓库的本地源,可以提供稳定的国内访问。
如果不希望公开自己的镜像文件,Docker也支持在本地网络创建一个只能自己访问的私有仓库。当用户创建了自己的镜像之后就可以使用push命令将它上传到指定的私有或公有仓库。另外机器使用该镜像时,只需将其从仓库pull下来。
2.2 安装Docker
Docker在主流的操作系统和云平台上都可以使用,包括Linux操作系统(如Ubuntu、Debian、CentOS、Redhat等)、MacOS操作系统和Windows操作系统,以及AWS等云平台。
2017年2月8日,docker更新到1.13.1,此后又分为了docker CE(社区版)和docker EE(商业版)。
2.2.1 Windows
2.2.1.1 系统要求
Docker Desktop for Windows支持64位版本的Windows 10 Pro,且必须开启Hyper-V(若版本为 v1903 及以上则无需开启 Hyper-V),或者 64 位版本的 Windows 10 Home v1903 及以上版本。
2.2.1.2 手动下载安装
点击以下链接下载 Docker Desktop for Windows。
下载好之后双击Docker Desktop Installer.exe
开始安装。
2.2.1.3 使用winget安装
winget install Docker.DockerDesktop
2.2.1.4 在WSL2运行Docker
若你的Windows版本为Windows 10 专业版或家庭版v1903及以上版本可以使用WSL2运行Docker,具体请查看Docker Desktop WSL 2 backend。
2.2.1.5 配置并检查
-
细节配置, 可参考这个链接
-
测试是否安装成功 在CMD中运行如下命令, 有显示版本号或者显示"Hello from Docker!", 则代表安装成功
> docker --version
Docker version 19.03.1
> docker run hello-world
docker : Unable to find image 'hello-world:latest' locally
...
latest:
Pulling from library/hello-world
ca4f61b1923c:
Pulling fs layer
ca4f61b1923c:
Download complete
ca4f61b1923c:
Pull complete
Digest: sha256:97ce6fa4b6cdc0790cda65fe7290b74cfebd9fa0c9b8c38e979330d547d22ce1
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
2.2.1.5 运行
在Windows搜索栏输入Docker点击Docker Desktop
开始运行。
Docker启动之后会在Windows任务栏出现鲸鱼图标。
等待片刻,当鲸鱼图标静止时,说明Docker启动成功,之后你可以打开PowerShell使用Docker。(推荐使用 Windows Terminal在终端使用 Docker)
2.2.2 CentOS
2.2.2.1 系统要求
Docker支持64位版本CentOS 7/8,并且要求内核版本不低于3.10(使用uname -r
命令查看内核版本 )。 CentOS 7满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2 存储层驱动)无法使用,并且部分功能可能不太稳定。
2.2.2.2 卸载旧版本
旧版本的Docker称为docker或者docker-engine,使用以下命令卸载旧版本:
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
# 或直接使用此命令
# yum remove docker-*
2.2.2.3 使用yum安装
新主机首次安装Docker Engine-Community之前,需要设置Docker仓库,之后,可以从仓库安装和更新 Docker。
- 设置仓库,需要安装所需的软件包。yum-utils提供了yum-config-manager ,并且
device mapper
存储驱动程序需要device-mapper-persistent-data
和lvm2
,这两个是devicemapper必要依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
- 执行下面的命令添加yum软件源,鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。
# 阿里云yum源:作者目前使用的,网上大部分教程用的也都是这个源 sudo yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo # 官方源 # sudo yum-config-manager \ # --add-repo \ # https://download.docker.com/linux/centos/docker-ce.repo # 清
华大学源:等有很多源,这里就列举三个 # sudo yum-config-manager \ # --add-repo \ # https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo # 如果需要测试版本的 Docker 请执行以下命令: # sudo yum-config-manager --enable docker-ce-test
- 查看所有仓库中docker版本,并选择特定版本安装。个人使用推荐社区版docker-ce(Docker Engine-Community,社区版)
yum list docker-ce --showduplicates | sort -r
- 更新yum软件源缓存,并安装docker-ce。
# 默认安装最新版本
yum install docker-ce docker-ce-cli containerd.io
# 指定安装版本
# yum install docker-ce-<VERSION_STRING>
# eg: yum install docker-ce-20.10.9.ce
2.2.2.4 CentOS8额外设置
由于CentOS8防火墙使用了nftables,但Docker尚未支持nftables, 我们可以使用如下设置使用iptables: 更改/etc/firewalld/firewalld.conf
# FirewallBackend=nftables
FirewallBackend=iptables
或者执行如下命令:
firewall-cmd --permanent --zone=trusted --add-interface=docker0
firewall-cmd --reload
2.2.2.5 官方脚本自动安装
在测试或开发环境中Docker官方为了简化安装流程,提供了一套便捷的安装脚本,CentOS系统上可以使用这套脚本安装,另外可以通过--mirror
选项使用国内源进行安装:
# 若你想安装测试版的 Docker, 请从test.docker.com获取脚本
# curl -fsSL test.docker.com -o get-docker.sh
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
# sudo sh get-docker.sh --mirror AzureChinaCloud
执行这个命令后,脚本就会自动的将一切准备工作做好,并且把Docker的稳定(stable)版本安装在系统中
2.2.2.6 建立docker用户组
默认情况下,docker命令会使用UnixSocket与Docker引擎通讯。而只有root用户和docker组的用户才可以访问Docker引擎的UnixSocket。出于安全考虑,一般Linux系统上不会直接使用root用户。因此,更好地做法是将需要使用Docker的用户加入Docker用户组。
# 建立docker组
sudo groupadd docker
# 将当前用户加入docker组
sudo usermod -aG docker $USER
退出当前终端并重新登录,进行如下测试。
2.2.3 Ubuntu
2.2.3.1 系统要求
Docker支持以下版本的Ubuntu操作系统:
- Ubuntu Hirsute 21.04
- Ubuntu Groovy 20.10
- Ubuntu Focal 20.04 (LTS)
- Ubuntu Bionic 18.04 (LTS) Docker可以安装在64位的x86平台或ARM平台上。Ubuntu发行版中,LTS(Long-Term-Support)长期支持版本,会获得5年的升级维护支持,这样的版本会更稳定,因此在生产环境中推荐使用LTS版本。
2.2.4.2 卸载旧版本
旧版本的Docker称为docker或者docker-engine,使用以下命令卸载旧版本:
sudo apt-get remove docker \
docker-engine \
docker.io
2.2.3.3 使用APT安装
- 由于apt源使用HTTPS以确保软件下载过程中不被篡改。因此,我们首先需要添加使用HTTPS传输的软件包以及CA证书。
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
- 为了确认所下载软件包的合法性,需要添加软件源的GPG密钥。鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o \
/usr/share/keyrings/docker-archive-keyring.gpg
# 官方源
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o \
/usr/share/keyrings/docker-archive-keyring.gpg
- 然后向
sources.list
中添加Docker软件源
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 官方源
# echo \
# "deb [arch=amd64 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
以上命令会添加稳定版本的Docker APT镜像源,如果需要测试版本的Docker请将stable改为test。
- 更新apt软件包缓存,并安装 docker-ce:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
2.2.3.4 官方脚本自动安装
在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,Ubuntu系统上可以使用这套脚本安装,另外可以通过 --mirror 选项使用国内源进行安装:
# 获取脚本
# curl -fsSL test.docker.com -o get-docker.sh # 若你想安装测试版的Docker, 请从test.docker.com获取脚本
curl -fsSL get.docker.com -o get-docker.sh
# 执行脚本
sudo sh get-docker.sh --mirror Aliyun # 使用阿里云加速
# sudo sh get-docker.sh --mirror AzureChinaCloud
执行这个命令后,脚本就会自动的将一切准备工作做好,并且把Docker的稳定(stable)版本安装在系统中。
2.2.3.5 建立docker用户组
默认情况下,docker命令会使用UnixSocket与Docker引擎通讯。而只有root用户和docker组的用户才可以访问Docker引擎的UnixSocket。出于安全考虑,一般Linux系统上不会直接使用root用户。因此,更好地做法是将需要使用docker的用户加入docker用户组。
# 建立docker组
sudo groupadd docker
# 将当前用户加入docker组
$ sudo usermod -aG docker $USER
退出当前终端并重新登录,进行如下测试。
2.2.3.6 实测结果
- apt更新
(base) pang@pang-HP:/etc/apt$ sudo apt-get update
命中:1 https://dl.google.com/linux/chrome/deb stable InRelease
忽略:2 https://deepin-wine.i-m.dev InRelease
命中:3 http://cn.archive.ubuntu.com/ubuntu impish InRelease
命中:4 http://ppa.launchpad.net/gerardpuig/ppa/ubuntu impish InRelease
命中:5 https://deepin-wine.i-m.dev Release
命中:6 http://cn.archive.ubuntu.com/ubuntu impish-updates InRelease
忽略:7 https://deepin-wine.i-m.dev Release.gpg
命中:8 http://cn.archive.ubuntu.com/ubuntu impish-backports InRelease
命中:9 http://ppa.launchpad.net/linrunner/tlp/ubuntu impish InRelease
命中:10 http://cn.archive.ubuntu.com/ubuntu impish-security InRelease
命中:11 http://ppa.launchpad.net/oibaf/graphics-drivers/ubuntu impish InRelease
命中:12 http://ppa.launchpad.net/ubuntudde-dev/stable/ubuntu impish InRelease
命中:13 https://linux.teamviewer.com/deb stable InRelease
命中:14 https://linux.teamviewer.com/deb preview InRelease
正在读取软件包列表... 完成
(base) pang@pang-HP:/etc/apt$
- 安装
(base) pang@pang-HP:~$ sudo apt-get install docker.io 正在读取软件包列表... 完成 正在分析软件包的依赖关系树... 完成 正在读取状态信息... 完成 下列软件包是自动安装的并且现在不需要了: deepin-app-store-runtime libllvm13 libllvm13:i386 使用'sudo apt autoremove'来卸载它(它们)。 将会同时安装下列软件: bridge-utils containerd pigz runc ubuntu-fan 建议安装: ifupdown aufs-tools btrfs-progs cgroupfs-mount | cgroup-lite debootstrap docker-doc rinse zfs-fuse | zfsutils 下列【新】软件包将被安装: bridge-utils containerd docker.io pigz runc ubuntu-fan 升级了 0 个软件包,新安装了 6 个软件包,要卸载 0 个软件包,有 47 个软件包未被升级。 需要下载 66.1 MB 的归档。 解压缩后会消耗 295 MB 的额外空间。 您希望继续执行吗? [Y/n] y 获取:1 http://cn.archive.ubuntu.com/ubuntu impish/universe amd64 pigz amd64 2.6-1 [63.6 kB] 获取:2 http://cn.archive.ubuntu.com/ubuntu impish/main amd64 bridge-utils amd64 1.7-1ubuntu2 [34.4 kB] 获取:3 http://cn.archive.ubuntu.com/ubuntu impish-updates/main amd64 runc amd64 1.1.0-0ubuntu1~21.10.1 [4,090 kB] 获取:4 http://cn.archive.ubuntu.com/ubuntu impish-updates/main amd64 containerd amd64 1.5.9-0ubuntu1~21.10.3 [27.9 MB] 获取:5 http://cn.archive.ubuntu.com/ubuntu impish-updates/universe amd64 docker.io amd64 20.10.12-0ubuntu2~21.10.1 [34.0 MB] 获取:6 http://cn.archive.ubuntu.com/ubuntu impish-updates/universe amd64 ubuntu-fan all 0.12.15ubuntu0.21.10.1 [35.1 kB] 已下载 66.1 MB,耗时 15秒 (4,322 kB/s) 正在预设定软件包 ... 正在选中未选择的软件包 pigz。 ... 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. 正在处理用于 man-db (2.9.4-2) 的
触发器 ... (base) pang@pang-HP:~$
- 检测安装结果
(base) pang@pang-HP:~$ sudo docker version
Client:
Version: 20.10.12
API version: 1.41
Go version: go1.17
Git commit: 20.10.12-0ubuntu2~21.10.1
Built: Wed Apr 6 02:18:50 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server:
Engine:
Version: 20.10.12
API version: 1.41 (minimum version 1.12)
Go version: go1.17
Git commit: 20.10.12-0ubuntu2~21.10.1
Built: Thu Feb 10 14:49:06 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.5.9-0ubuntu1~21.10.3
GitCommit:
runc:
Version: 1.1.0-0ubuntu1~21.10.1
GitCommit:
docker-init:
Version: 0.19.0
GitCommit:
(base) pang@pang-HP:~$
- 测试Docker是否安装正确
(base) pang@pang-HP:~$ sudo docker run --rm hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:80f31da1ac7b312ba29d65080fddf797dd76acfb870e677f390d5acba9741b17
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/
(base) pang@pang-HP:~$
如果在使用过程中发现拉取 Docker 镜像十分缓慢,可以配置Docker国内镜像加速。
2.2.4 镜像加速器
国内从Docker Hub拉取镜像有时会遇到困难,此时可以配置镜像加速器。国内很多云服务商都提供了国内加速器服务,例如:
- 阿里云加速器 - 点击管理控制台 -> 登录账号(淘宝账号) -> 右侧镜像工具 -> 镜像加速器 -> 复制加速器地址
- 网易云加速器
- 百度云加速器
由于镜像服务可能出现宕机,建议同时配置多个镜像。各个镜像站测试结果请到docker-practice/docker-registry-cn-mirror-test查看。
以网易云镜像服务https://hub-mirror.c.163.com为例:
2.2.4.1 Linux设置
目前主流Linux发行版均(Ubuntu16.04+、Debian8+、CentOS7+)已使用systemd
进行服务管理,这里介绍如何在使用systemd
的Linux发行版中配置镜像加速器。
请首先执行以下命令,查看是否在 docker.service 文件中配置过镜像地址。
systemctl cat docker | grep '\-\-registry\-mirror'
如果该命令有输出,那么请执行systemctl cat docker
查看ExecStart=出现的位置,修改对应的文件内容去掉--registry-mirror
参数及其值,并按接下来的步骤进行配置。
如果以上命令没有任何输出,那么就可以在/etc/docker/daemon.json
中写入如下内容(如果文件不存在请新建该文件):
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://registry.docker-cn.com"
]
}
注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。
之后重新启动服务。
sudo systemctl daemon-reload
sudo systemctl restart docker
2.2.4.2 Windows 10
对于使用Windows10的用户,在任务栏托盘Docker图标内右键菜单选择Settings,打开配置窗口后在左侧导航菜单选择 Docker Engine
,在右侧像下边一样编辑json文件,之后点击Apply & Restart
保存后Docker就会重启并应用配置的镜像地址了。
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
2.2.4.3 macOS
对于使用macOS的用户,在任务栏点击Docker Desktop
应用图标 ->Perferences
,在左侧导航菜单选择Docker Engine
,在右侧像下边一样编辑json文件。修改完成之后,点击Apply & Restart
按钮,Docker就会重启并应用配置的镜像地址了。
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
2.2.4.4 检查加速器是否生效
执行sudo docker info
,如果从结果中看到了如下内容,说明配置成功。
Registry Mirrors:
https://hub-mirror.c.163.com/
2.3 docker启停
- 启动docker
systemctl start docker
- 重启命令
systemctl restart docker
- 设置开机自启
systemctl enable docker
2.4 docker基本命令
# 启动docker
sudo service docker start
# 停止docker
sudo service docker stop
# 重启docker
sudo service docker restart
# docker环境查看
sudo docker info
# 查看单个docker命令的帮助,如docker ru--help
sudo docker command --help
# 列出镜像
docker image ls
# 拉取镜像
docker image pull library/hello-world
# 删除镜像
docker image rm 镜像id/镜像ID
# 创建容器
docker run [选项参数] 镜像名 [命令]
# 停止一个已经在运行的容器
docker container stop 容器名或容器id
# 启动一个已经停止的容器
docker container start 容器名或容器id
# kill掉一个已经在运行的容器
docker container kill 容器名或容器id
# 删除容器
docker container rm 容器名或容器id