Windows\Linux安装docker

Docker架构

Docker 包括三个基本概念:

  • 镜像(Image:Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container:镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository:仓库可看成一个代码控制中心,用来保存镜像。

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。

  • Docker 镜像(Images)

Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。

  • Docker 容器(Container)

容器是独立运行的一个或一组应用,是镜像运行时的实体。

  • Docker 客户端(Client)      

Docker客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。

  • Docker 主机(Host)

一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

  • Docker Registry

Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。

Docker Hub(https://hub.docker.com)提供了庞大的镜像集合供使用。

一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。

  • Docker Machine

Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

 

一、Windows

1.在线安装

1.Windows 10

要开始使用 Docker,您首先需要在开发计算机上安装它。 安装类型取决于您的操作系统。 Windows 10 计算机上的安装与 Windows Server 计算机上的安装不同。 最低系统要求为进行了周年纪念更新的 Windows 10 专业版或企业版(版本 1607)、Windows Server 2016 或 Windows Server 2019。

Docker 上的 Windows 容器可以在两种不同的运行时隔离模式下运行:

  • 进程隔离

  • Hyper-V 隔离

本模块中稍后将讨论这些模式之间的差异。 由于 Windows 容器可以在两种不同模式下运行,因此您需要在开发计算机上安装或激活 Hyper-V。 在 Windows 10 中,需要 Hyper-V 才能运行 Docker,即使您未使用 Hyper-V 隔离。 要安装 Hyper-V,您还需要在 Windows 10 和 Windows Server 计算机上使用不同的 PowerShell 命令。

在 Windows 中,搜索 Windows PowerShell,然后以管理员身份运行它。

如何搜索 Windows PowerShell 的屏幕截图。

在 Windows 10 中,您可以运行以下命令来安装 Hyper-V:

Enable-WindowsOptionalFeature -Online -FeatureName Hyper-V

对于 Windows Server,可以使用以下命令:

Install-WindowsFeature Hyper-V

您可能希望在虚拟机而不是本地计算机中运行 Docker。 这种情况是可能的,但您需要配置嵌套虚拟化,本模块并不涉及这部分知识。 有关详细信息,请参阅使用嵌套虚拟化在虚拟机中运行 Hyper-V

安装 Hyper-V 后,您可以安装 Docker。

本部分以 Windows Server 开头,您可以使用 Microsoft 发布的 PowerShell 模块 DockerMicrosoftProvider。 本模块在 Windows 中启用容器功能,并安装 Docker 引擎和客户端。

  1. 以管理员身份打开 Windows PowerShell(这样将提升 PowerShell 会话权限),并运行以下命令:

    Install-Module -Name DockerMsftProvider -Repository PSGallery -Force

    您需要输入 Y(是)接受。

     提示

    运行普通 Windows PowerShell 应用程序,而不是 ISE,因为它在 Docker 中运行不正常。

  2. 使用 Install-Package 命令安装包,然后输入 A(全是)接受。

    Install-Package -Name Docker -ProviderName DockerMsftProvider
  3. 重新启动计算机。

    Restart-Computer -Force

对于 Windows 10 计算机,您无法使用 DockerMicrosoftProvider 模块。 您需要通过创建免费的 Docker 帐户来下载和安装 Docker Desktop(Windows 版 Docker Desktop)。 在安装过程中,您可以将默认容器类型设置为 Windows 容器。 还可以在安装后更改类型。 因此,您可以右键单击 Windows 系统托盘中的 Docker 项,然后选择切换到 Windows 容器。

“切换到 Windows 容器”选项的屏幕截图。

安装后,您可以测试是否已成功安装 Docker。 Docker 以及其他特定容器并不是新事物,它们在 Linux 世界中已得到广泛使用。 因此,使用 Docker 涉及使用命令。 您可以使用其他 GUI 工具来运行命令。 在本模块中,您将使用 PowerShell 控制台并使用 Visual Studio Code 中的扩展来使用 Docker 命令。

要测试安装,您可以运行以下命令检索已安装的版本

docker version

 

2.Windows server

在windows 10 或windows 11 上使用docker,可以直接在docker 官网下载docker desktop安装即可。

但在windows server上则无法支持docker desktop,此时可通过如下方式安装:

以 管理员权限运行Power Shell,然后执行:

Install-WindowsFeature -Name Hyper-V

安装容器功能:

Install-WindowsFeature -Name containers

通过命令或开始菜单重启服务器:

Restart-computer

开始安装docker:

Install-Module DockerMSFTProvider

如果出现NUGET相关提示,输入YES确认安装
如果出现Untrusted repository,输入YES确认安装

安装docker package:

Install-Package Docker -ProviderName DockerMSFTProvider -Force

(视网络状况,可能需要多尝试几次)
如下图显示 docker 版本即表示安装完成了。

安装完成的docker EE 默认内核为windows,通常情况下需要切换到linux内核,可通过如下代码进行切换:

[Environment]::SetEnvironmentVariable("LCOW_SUPPORTED", "1", "Machine")
Restart-Service Docker

【选做,根据实际情况】如果要使用windows 容器,比如运行老式asp.net 4.7 程序,则需要widnows 内核的容器支持,可通过如下指令切换回windows内核:

[Environment]::SetEnvironmentVariable("LCOW_SUPPORTED", $null, "Machine")
Restart-Service Docker

Windows server 的 docker 没有可视化UI,可安装第三方的工具,比如 portainer:

docker run -d --name portainer --restart always -p 9000:9000 -v \\.\pipe\docker_engine:\\.\pipe\docker_engine portainer/portainer

安装完成后,输入:http://localhost:9000

按照提示初始化系统即可:

如需要安装docker compose:

Invoke-WebRequest "https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-Windows-x86_64.exe" -UseBasicParsing -OutFile $Env:ProgramFiles\Docker\docker-compose.exe

查看docker-compose version:

docker-compose --version

 

2.离线安装

Docker 并非是一个通用的容器工具,它依赖于已存在并运行的 Linux 内核环境。

Docker 实质上是在已经运行的 Linux 下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的 Linux 主机。

因此,Docker 必须部署在 Linux 内核的系统上。如果其他系统想部署 Docker 就必须安装一个虚拟 Linux 环境。

Docker Desktop 是 Docker 在 Windows 10 和 macOS 操作系统上的官方安装方式,这个方法依然属于先在虚拟机中安装 Linux 然后再安装 Docker 的方法。

Docker Desktop 官方下载地址: Install Docker Desktop on Windows

注意:此方法仅适用于 Windows 10 操作系统专业版、企业版、教育版和部分家庭版。

 

1.Windows10操作系统

官网下载:https://www.docker.com/products/docker-desktop/

安装 Hyper-V

Hyper-V 是微软开发的虚拟机,类似于 VMWare 或 VirtualBox,仅适用于 Windows 10。这是 Docker Desktop for Windows 所使用的虚拟机。

但是,这个虚拟机一旦启用,QEMU、VirtualBox 或 VMWare Workstation 15 及以下版本将无法使用!如果必须在电脑上使用其他虚拟机(例如开发 Android 应用必须使用的模拟器),请不要使用 Hyper-V

开启 Hyper-V

也可以通过命令来启用 Hyper-V ,请右键开始菜单并以管理员身份运行 PowerShell,执行以下命令:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V –All

安装完成后重启系统

 

安装 Docker Desktop for Windows

 

 

 

双击下载的 Docker for Windows Installer 安装文件,一路 Next,点击 Finish 完成安装。

安装完成后,Docker Desktop提示重启操作系统,重启即可。

可以在命令行执行 docker version 来查看版本号,docker run hello-world 来载入测试镜像测试。

如果没启动,可以在 Windows 搜索 Docker 来启动。

错误信息:error during connect: In the default daemon configuration on Windows, the docker client must be run with elevated privileges to connect.: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/version": open //./pipe/docker_engine: The system cannot find the file specified.

以管理员方式启动Docker Desktop即可

启动Desktop报错

升级WSL

wsl --update

如果启动中遇到因 WSL 2 导致地错误,请安装 WSL2

安装之后,可以打开 PowerShell 并运行以下命令检测是否运行成功:

docker run hello-world

能成功运行即可

镜像加速

 

{
    "registry-mirrors" : [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://cr.console.aliyun.com",
    "https://mirror.ccs.tencentyun.com"
  ],
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": true
  }
}

安装portanier(可视化的Docker操作页面)

docker volume create portainer_data

继续

docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ee:latest

下图是安装完成,到这步就行了

在网址输入:https://localhost:9443

 

 

 

2.Windows7、Windows8 系统

win7、win8 等需要利用 docker toolbox 来安装,国内可以使用阿里云的镜像来下载

下载地址:

通过aliyun镜像下载(推荐):http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/

通过官网下载:https://www.docker.com/get-started

安装比较简单,双击运行,点下一步即可,可以勾选自己需要的组件:

docker toolbox 是一个工具集,它主要包含以下一些内容:

  • Docker CLI - 客户端,用来运行 docker 引擎创建镜像和容器。
  • Docker Machine - 可以让在 Windows 的命令行中运行 docker 引擎命令。
  • Docker Compose - 用来运行 docker-compose 命令。
  • Kitematic - 这是 Docker 的 GUI 版本。
  • Docker QuickStart shell - 这是一个已经配置好Docker的命令行环境。
  • Oracle VM Virtualbox - 虚拟机。

下载完成之后直接点击安装,安装成功后,桌边会出现三个图标,如下图所示:

点击 Docker QuickStart 图标来启动 Docker Toolbox 终端。

如果系统显示 User Account Control 窗口来运行 VirtualBox 修改的电脑,选择 Yes。

输入

docker run hello-world

docker run -it ubuntu bash

3.Windows server系统

第一步:服务器安装container并重启

第二步:获取 Docker 离线安装包

对于不同版本的Windows Server,可以使用以下版本的Docker:

1. Windows Server 2012:Docker将在Windows Server 2012上继续支持较早版本,但最后一个官方支持的版本是Docker EE 17.03.2-ee-6。您可以从Docker官方网站的存档页面获取此版本的安装程序。

2. Windows Server 2016:推荐使用Docker EE 17.06版或更高版本。您可以从Docker官方网站获取适用于Windows Server 2016的最新Docker EE版本。

3. Windows Server 2019:推荐使用Docker EE 18.09版或更高版本。您可以从Docker官方网站获取适用于Windows Server 2019的最新Docker EE版本。

请注意,在选择Docker版本之前,请确保您的服务器满足相应的系统要求,并且参考Docker官方文档中的安装和配置指南进行操作。

下载地址:

#Windows server 2012版本使用
最新:
https://download.docker.com/components/engine/windows-server/17.03/docker-17.03.2-ee-6.zip

#Windows server 2016版本使用
最新:
https://download.docker.com/components/engine/windows-server/17.06/docker-17.06.2-ee-16.zip
#Windows server 2019版本使用
最新:
https://download.docker.com/components/engine/windows-server/19.03/docker-19.03.5.zip
https://dockermsft.blob.core.windows.net/dockercontainer/docker-19-03-5.zip

第三步:离线安装

将下载后的文件解压拷贝到如下目录
C:\Program Files\Docker
配置daemon.json文件
创建 C:\ProgramData\Docker\config 目录,在config目录下创建 daemon.json 文件,其内容可为

{
"insecure-registries":[]
}

添加上面目录到系统环境变量Path

 

在服务器管理器里添加角色和功能选项下的功能菜单选择容器,安装后需要重启服务器。

将docker注册为服务

dockerd --register-service

 

二、Linux

1.在线安装

1.1如果之前安装过旧版本的Docker

可以使用下面命令卸载:

yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce

如图:

1.2.安装docker

1.2.1. 使用官方安装脚本自动安装 (仅适用于公网环境)
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
1.2.2. 这里采用yum源命令安装前期准备的依赖包

包括yum-utils、device-mapper-persistent-data、lvm2

step 1: 安装必要的一些系统工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

Step 2: 添加软件源信息

因为官方镜像仓库网速较慢,在此设置阿里云镜像代理,以便快速下载、上传镜像。

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

接下来安装Docker-CE 社区版,通过以下命令查看docker社区版安装包列表。如下图所示各docker版本信息。

yum list docker-ce --showduplicates | sort -r
或:
yum list docker-ce.x86_64 --showduplicates | sort -r\

Step 3: 更新并安装 Docker-CE

选择对应版本安装docker

sudo yum makecache fast
sudo yum -y install docker-ce

Step4 : 安装指定版本的Docker-CE: (VERSION 例如:17.03.0.ce.1-1.el7.centos)

# sudo yum -y install docker-ce-[VERSION]
# 注意:在某些版本之后,docker-ce安装出现了其他依赖包,如果安装失败的话请关注错误信息。例如 docker-ce 17.03 之后,需要先安装 docker-ce-selinux。 # yum list docker-ce-selinux- --showduplicates | sort -r # sudo yum -y install docker-ce-selinux-[VERSION]

eg:
sudo yum -y install docker-ce-20.10.9-3.el7

启动

启动
systemctl start docker
设置开机启动:
systemctl enable docker
验证:
查看版本信息命令,出现下图时表明安装成功。
docker version

看到如下信息:

1.3.配置镜像加速

此时如果用docker pull命令下载镜像,本地会连接hub.docker.com网站去下载,耗时较长,因此我们可以设置docker镜像加速,使得本地连接去国内镜像仓库下载,镜像加速的设置有很多种,

本章以阿里云的设置为例,

参考阿里云的镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

步骤如下:

1.创建目录:
mkdir -p /etc/docker
2.设置镜像仓库地址:
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://zle7v70o.mirror.aliyuncs.com"]
}
EOF

4.重启docker服务:
sudo systemctl daemon-reload
sudo systemctl restart docker

至此,机器的标准化准备工作已经完成了!

 

2.离线安装

Docker的社区版(Docker Community Edition)叫做docker-ce。老版本的Docker包叫做docker或者docker-engine,如果安装了老版本的docker得先卸载然后再安装新版本的docker。docker的发展非常迅速,apt源的更新往往比较滞后。

所以docker官网推荐的安装方式都是下载docker安装脚本安装。

离线包下载地址:https://download.docker.com/linux/

提供以下三种方式下载docker离线安装包

Docker官方地址:docker down

1.百度云下载地址:  

2.有网服务器执行命令下载:wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.17.tgz

wget -P /home/test (指定目录下载)

3.官方参考文档:https://docs.docker.com/install/linux/docker-ce/binaries/#install-static-binaries

将已下载好的docker离线包拷贝到服务器,解压压缩包

tar -xvf docker-20.10.17.tgz

将解压出来的docker文件内容移动到 /usr/bin/ 目录下

cp docker/* /usr/bin/

注册编辑docker服务

vim /usr/lib/systemd/system/docker.service

写入以下内容后保存

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
  
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
  
[Install]
WantedBy=multi-user.target

添加权限后启动

chmod +x /etc/systemd/system/docker.service

重新加载配置文件

systemctl daemon-reload

启动Docker

systemctl start docker

设置开机自启

systemctl enable docker.service

验证是否安装成功

systemctl status docker

docker -v

 

posted @ 2023-08-03 17:32  O波V步  阅读(388)  评论(0编辑  收藏  举报