Docker笔记-01 初识Docker

文章目录

  • 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. 更快速的交付和部署
  2. 更高效的资源利用
  3. 更轻松的迁移和扩展
  4. 更简单的更新管理

1.1 Docker与虚拟机比较

作为一种轻量级的虚拟机化方式,Docker在运行应用上跟传统的虚拟机方式相比具有显著的优势:

  1. Docker容器很快,启动和停止可以在秒级实现,这比传统的虚拟机方式快很多。
  2. Docker容器对系统资源需求很少,一台主机可以同时运行数千个Docker容器。
  3. Docker通过类似Git的操作来方便用户获取,分发和更新应用镜像,指令简明,学习成本较低。
  4. Docker通过Dockerfile配置文件来支持灵活的自动化创建和部署机制,提高工作效率。
特性 容器 虚拟机
启动速度 秒级 分钟级
硬盘使用 一般为MB 一般为GB
性能 接近原生 弱于
系统支持量 单机支持上千个容器 一般为几十
隔离性 安全隔离 完全隔离

1.2 Docker与OpenStack

类别 Docker OpenStack
部署难度 非常简单 组件多,部署复杂
启动速度 秒级 分钟级
执行性能 和物理系统几乎一致 VM会占用一些资源
镜像体积 镜像是MB级别 虚拟机镜像GB级别
管理效率 管理简单 组件相互依赖,管理复杂
隔离性 隔离性高 彻底隔离
可管理性 单进程,不建议启动SSH 完整的系统管理
网络连接 比较弱 借助Neutron可以灵活组建各类网络架构

1.3 虚拟化与Docker

从大类上分,虚拟化技术可分为基于硬件的虚拟化和基于软件的虚拟机化。其中,真正意义上的基于硬件的虚拟化技术不多见,如SR-IOV。基于软件的虚拟化从对象所在的层次,又可以划分为应用虚拟化和平台虚拟化(通常说的虚拟技术即属于这个范畴)。其中,前者一般指的是一些模拟设备或者Wine这样的软件。

平台虚拟机化又可以细分为:

  1. 完全虚拟化:虚拟机模拟完整的底层硬件环境和特权指令的执行过程,客户操作系统需要进行修改。如:VMware Workstation,VirtualBox,QEMU等。
  2. 硬件辅助虚拟化:利用硬件(主要是CPU)辅助支持处理敏感指令来实现完全虚拟化的功能,客户操作系统无需修改,如VMware Workstation,Xen,KVM。
  3. 部分虚拟化:只针对部分硬件资源进行虚拟化,客户操作系统需要进行修改。现在有些虚拟化技术的早期版本仅支持部分虚拟化。
  4. 超虚拟化:部分硬件接口以软件的形式提供给客户机操作系统,客户操作系统需要进行修改。如早期的Xen。
  5. 操作系统级虚拟化:内核通过创建多个虚拟的操作系统实例(内核和库)来隔离不同的进程。容器相关技术属于这个范畴。如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笔记-01 初识Docker_第1张图片

根据所存储的镜像公开分享与否,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笔记-01 初识Docker_第2张图片

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-datalvm2,这两个是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-
#  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

你可能感兴趣的:(容器,docker,容器,运维)