Docker简介和安装

Docker 是什么

Docker 是一个应用打包、分发、部署的工具

你也可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要,

而普通虚拟机则是一个完整而庞大的系统,包含各种不管你要不要的软件。

跟普通虚拟机的对比

特性普通虚拟机Docker
跨平台通常只能在桌面级系统运行,例如 Windows/Mac,无法在不带图形界面的服务器上运行支持的系统非常多,各类 windows 和 Linux 都支持
性能性能损耗大,内存占用高,因为是把整个完整系统都虚拟出来了性能好,只虚拟软件所需运行环境,最大化减少没用的配置
自动化需要手动安装所有东西一个命令就可以自动部署好所需环境
稳定性稳定性不高,不同系统差异大稳定性好,不同系统都一样部署方式

打包、分发、部署

打包:就是把你软件运行所需的依赖、第三方库、软件打包到一起,变成一个安装包

分发:你可以把你打包好的“安装包”上传到一个镜像仓库,其他人可以非常方便的获取和安装

部署:拿着“安装包”就可以一个命令运行起来你的应用,自动模拟出一摸一样的运行环境,不管是在

Windows/Mac/Linux。

docker

Docker 部署的优势

常规应用开发部署方式:自己在 Windows 上开发、测试 --> 到 Linux 服务器配置运行环境部署。

问题:我机器上跑都没问题,怎么到服务器就各种问题了

用 Docker 开发部署流程:自己在 Windows 上开发、测试 --> 打包为 Docker 镜像(可以理解为软件安装包) --> 各种服务器上只需要一个命令部署好

优点:确保了不同机器上跑都是一致的运行环境,不会出现我机器上跑正常,你机器跑就有问题的情况。

Docker 通常用来做什么

  • 应用分发、部署,方便传播给他人安装。特别是开源软件和提供私有部署的应用
  • 快速安装测试/学习软件,用完就丢(类似小程序),不把时间浪费在安装软件上。例如 Redis / MongoDB / ElasticSearch / ELK
  • 多个版本软件共存,不污染系统,例如 Python2、Python3,Redis4.0,Redis5.0
  • Windows 上体验/学习各种 Linux 系统

重要概念:镜像、容器

镜像:可以理解为软件安装包,可以方便的进行传播和安装。

容器:软件安装后的状态,每个软件运行环境都是独立的、隔离的,称之为容器。

win安装

桌面版:https://www.docker.com/products/docker-desktop

服务器版:https://docs.docker.com/engine/install/#server

启动报错解决

报错截图

image.png

解决方法

控制面板->程序->启用或关闭 windows 功能,开启 Windows 虚拟化和 Linux 子系统(WSL2)

image.png

命令行安装 Linux 内核

1
2
3
4
# 检查并下载最新的 WSL 内核版本
wsl --update
# 尝试自动从 Microsoft Store 下载并安装默认的 Linux 发行版 或 指定了要安装的 Linux 发行版为 Ubuntu
wsl--install 或 wsl --install -d Ubuntu

你也可以打开微软商店 Microsoft Store 搜索 Linux 进行安装,选择一个最新版本的 Ubuntu 或者 Debian 都可以

上面命令很可能你安装不了如安全频道支持出错,微软商店也可能打不开,如果遇到这个问题

win+r 输入inetcpl.cpl-> 高级 -> 选中使用TLS1.1 使用TLS1.2 使用TLS1.3->确定

查看代码测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
(base) PS C:\WINDOWS\system32> wsl --update
正在安装: 适用于 Linux 的 Windows 子系统
已安装 适用于 Linux 的 Windows 子系统。
(base) PS C:\WINDOWS\system32> wsl --install
正在安装: Ubuntu
已安装 Ubuntu。
正在启动 Ubuntu...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: jerry
New password:
Retype new password:
passwd: password updated successfully
操作成功完成。
AInstallation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.133.1-microsoft-standard-WSL2 x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage


This message is shown once a day. To disable it please create the
/home/jerry/.hushlogin file.
jerry@DESKTOP-JR78GOV:~$

设置开机启动 Hypervisor

bcdedit /set hypervisorlaunchtype auto

注意要用管理员权限打开 PowerShell

设置默认使用版本2

wsl.exe --set-default-version 2

查看 WSL 是否安装正确

wsl.exe --list --verbose

应该如下图,可以看到一个 Linux 系统,名字你的不一定跟我的一样,看你安装的是什么版本。

并且 VERSION 是 2

1
2
3
4
5
6
7
8
9
(base) PS C:\WINDOWS\system32> wsl.exe --set-default-version 2
有关与 WSL 2 关键区别的信息,请访问 https://aka.ms/wsl2

操作成功完成。
(base) PS C:\WINDOWS\system32> wsl.exe --list --verbose
NAME STATE VERSION
* Ubuntu Running 2
docker-desktop-data Running 2
docker-desktop Running 2

确保 BIOS 已开启虚拟化,下图检查是否已开启好

如果是已禁用,请在开机时按 F2 进入 BIOS 开启一下,不会设置的可以网上搜索下自己主板的设置方法,Intel 和 AMD 的设置可能稍有不同

image.png

出现下图错误,点击链接安装最新版本的 WSL2

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

image.png

镜像加速源

镜像加速器镜像加速器地址
Docker 中国官方镜像https://registry.docker-cn.com
DaoCloud 镜像站http://f1361db2.m.daocloud.io
Azure 中国镜像https://dockerhub.azk8s.cn
科大镜像站https://docker.mirrors.ustc.edu.cn
阿里云https://ud6340vz.mirror.aliyuncs.com
七牛云https://reg-mirror.qiniu.com
网易云https://hub-mirror.c.163.com
腾讯云https://mirror.ccs.tencentyun.com
1
"registry-mirrors": ["https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn"],

docker.png

linux安装

脚本快速安装docker

官方提供了安装脚本来快速安装最新版本docker-ce:

1
2
3
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl enable --now docker
docker version

参考:

GitHub:https://github.com/docker/docker-install

Docker官方:https://docs.docker.com/engine/install/centos/#install-using-the-convenience-script

安装docker-ce社区版

  • 配置Docker yum源
1
2
3
4
# 这里使用国内阿里云Yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 也可以配置官方yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • 安装必要的依赖包:
1
yum install -y yum-utils device-mapper-persistent-data lvm2
  • 列出可用版本,然后选择并安装指定版本:
1
yum list docker-ce --showduplicates | sort -r
  • 安装Docker-CE:
1
2
# 默认安装最新版
yum install -y docker-ce docker-ce-cli containerd.io
  • 查看docker版本,确认安装成功
1
2
[root@wang ~]# docker --version
Docker version 23.0.0, build 2ae903e
  • 启动Docker服务并设为开机启动
1
2
3
4
$ systemctl enable --now docker

#确认docker服务运行正常,显示active (running)说明服务正常运行
$ systemctl status docker
  • 配置国内镜像加速(可选)

鉴于国内网络问题,后续拉取 Docker 镜像比较慢,建议安装 Docker 之后配置国内镜像加速。

阿里云镜像加速 pu0sxk0h是我阿里云自己的ID

1
2
3
4
5
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://pu0sxk0h.mirror.aliyuncs.com"]
}
EOF

Azure 中国镜像加速

1
2
3
{
"registry-mirrors": ["https://dockerhub.azk8s.cn"],
}

清华源镜像加速

1
2
3
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

daocloud镜像加速

1
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

配置完成后重启docker服务

1
systemctl daemon-reload && systemctl restart docker

执行以下命令重启Docker服务以应用更改:

1
2
sudo systemctl daemon-reload
sudo systemctl restart docker

检查加速配置是否生效

执行 docker info,如果从结果中看到了如下内容,说明配置成功。

1
2
3
$ docker info | grep Mirrors -A1
Registry Mirrors:
https://pu0sxk0h.mirror.aliyuncs.com/

测试镜像拉取速度

1
$ time docker pull centos

开启docker的内核流量转发

开启内核流量转发,可以根据自己情况来配置,不是必须项。

1
2
3
4
5
6
7
8
9
10
# 优化Docker网络性能和安全性
cat >>/etc/sysctl.d/docker.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.ip_forward = 1
EOF

modprobe br_netfilter && sysctl -p /etc/sysctl.d/docker.conf

centos8安装docker-ce

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#配置阿里云yum源
dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#安装containerd.io
dnf install -y https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.13-3.1.el7.x86_64.rpm

#安装docker-ce
dnf install -y docker-ce

#配置docker镜像加速
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://pu0sxk0h.mirror.aliyuncs.com"]
}
EOF

#启动docker服务
systemctl enable --now docker

文笔流畅美,点赞纷至来;

内容引入胜,分享乐开怀;

佳作值得赏,打赏表心怀。