Docker安装和配置二

标签: 无 分类: 未分类 创建时间:2021-05-09 00:47:11 更新时间:2024-11-15 10:49:43

学习一样东西,我觉得首先要知道为什么学习这件东西,他的好处是什么,缺点是什么,适合于什么场景,只有相互比较了,才能知道我们该花多少时间在这个东西上面。一直都有用虚拟机,折腾来,折腾去,还是一个玩具罢了。后来在部署gitlab的时候,多次接触到docker这么一个东西,于是就不得不研究一番了。

1.Windows Server 2016安装Docker

Docker官方提供的安装程序是支持windows10的,如果想要在Windows Server 2016上安装Docker还需要费一番周折。根据参考文章3,我就遇到了问题。
(1) 点击开始菜单,找到Windows PowerShell文件夹下的Windows PowerShell,右键以管理员身份运行

(2) 执行Docker安装命令

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
## 执行更新命令,出现不受信任的程序,直接输入A
sconfig

## PowerShell 库安装 Docker-Microsoft PackageManagement 提供程序,系统提示安装 NuGet 提供程序,还请键入 Y 进行安装,如果遇到问题,查看下面的解决方法
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force

## 使用 PackageManagement PowerShell 模块安装最新版本的 Docker,PowerShell 询问是否信任包源“DockerDefault”时,键入 A 以继续进行安装
Install-Package -Name docker -ProviderName DockerMsftProvider

## 重启计算机
Restart-Computer -Force


## 更新
Get-Package -Name Docker -ProviderName DockerMsftProvider
Find-Package -Name Docker -ProviderName DockerMsftProvider
## 升级
Install-Package -Name Docker -ProviderName DockerMsftProvider -Update -Force
## 启动
Start-Service Docker
## 停止
Stop-Service Docker

## 查看docker信息
docker info

最后安装成功

(3) 卸载

1
2
3
4
5
6
7
8
9
10
11
12
Uninstall-Package -Name docker -ProviderName DockerMsftProvider
Uninstall-Module -Name DockerMsftProvider

## Clean up Docker data and system components
Get-HNSNetwork | Remove-HNSNetwork
Get-ContainerNetwork | Remove-ContainerNetwork
Remove-Item "C:\ProgramData\Docker" -Recurse

Remove-WindowsFeature Containers
Remove-WindowsFeature Hyper-V
## 重启系统
Restart-Computer -Force

注意
如果安装了360,docker文件可能会被删除,需要在360误报软件中将docker.exe还原回来,最好的方法,就是卸载360。

参考文章:
【1】.Install Docker Desktop on Windows (Docker官方给出的安装步骤,直接下载了安装程序,然后安装,但是这个安装程序只支持Win10)
【2】.在WIN SERVER 2016上安装DOCKER(带过坑) (文章说安装的时候有一个坑,就是可能提示文件不存在:第二步会提示”docker xx”文件不存在,这个坑我倒是没有遇到过)
【3】.入门:准备适用于容器的 Windows (微软提供的在Server2016和Server2019上安装Docker的方法)
【4】.windows server 2016环境下安装Docker (这里也是一个详细的步骤)
【5】.Windows Server 2016 安装 Docker (这里有在Windows安装Docker的详细步骤,还有就是无法遇到了PowerShell库不可用的问题的解决方法。)
【6】.轻松搞定windows2016 安装docker指定版本 (这里使用的是离线安装包的方式安装的Docker)
【7】.How to start and stop services manually on Windows 10 (使用PowerShell命令行的方式,启动和停止Windows服务,Start-Service、Stop-Service)
【8】.Windows Server 2016系统的Docker容器初体验 (这里有一个错误就是:找不到路径…,我没有遇到这个问题,暂且不管了。还有记录了一些windows下的常用的docker命令,这个和linux上的没啥主要的区别)
【9】.Uninstall Docker
【10】.Run Linux containers on Windows (算是ubuntu官方的文档吧,这里明明写了可以在windows server上运行docker并安装ubuntu,但是实际上不可以,起码我没有找到在Server安装ubuntu的地方。It is now possible to run Docker containers on Windows 10 and Windows Server, leveraging Ubuntu as a hosting base.)

修改配置

默认的配置文件的位置:’C:\ProgramData\Docker\config\daemon.json’ (如果没有这个文件,就创建一个,在命令行中进入Administrator文件夹或者直接在Administrator文件夹中按住shift键右键,选择从此处打开命令行,然后输入:md .docker 命令,即可创建以点开头的文件夹),如果需要的话,可能需要直接修改配置文件,比如修改镜像文件的位置等,修改后重启Docker服务

1
2
## 重启服务
Restart-Service docker
参考文章:
1.Configure Docker with a configuration file (微软关于docker配置及其文件的说明,还有卸载Docker,清除Docker数据的说明)
2.Windows 上的 Dockerfile (如何在windows上创建dockerfile文件,及其注意事项,因为我暂时用不到,就没有仔细的研究)

问题

(1) 警告: 无法从 URI“https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409”下载到“”。
在使用PowerShell安装的时候,出现了无法从URI下载,请检查Internet连接。

解决方法,直接在命令行中输入如下的命令:

1
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12;
参考文章:
1.警告: 无法从 URI“https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409”下载到“”。 (我执行了第一条命令,但是执行完之后,没有啥反应,我以为是卡了,于是就强行结束了命令行,再次打开,就出现了新的问题,下面的问题)
2.PowerShell正在安装NuGet,表示无法访问Internet,但是我实际上可以 (没啥用)

(2) Get-PSGalleryApiAvailability : PowerShell 库当前不可用。请稍后再试。
当我解决了上面的问题之后,因为运行命令后没有反应,于是我关闭了PowerShell,然后重新打开,于是出现了新的问题:PowerShell库不可用。

解决方法:PowerShell 命令行输入下面的两条命令

1
2
3
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
## 如果提示不受信任的存储库,就输入A,选择全是
Install-Module posh-ssh
参考文章:
1.Windows Server 2016 安装 Docker (这里有在Windows详细步骤,还有就是无法遇到了PowerShell库不可用的问题的解决方法。)

(3) image operating system “linux” cannot be used on this platform
下载了一个clickhouse-server的镜像,下载完成之后,出现了提示:image operating system “linux” cannot be used on this platform

1
docker pull yandex/clickhouse-server

我尝试运行下面的命令,但是失败了

1
& $Env:ProgramFiles\Docker\Docker\DockerCli.exe -SwitchDaemon .
参考文章:
1.image operating system “linux” cannot be used on this platform (这里提示了要转换模式)
2.docker 提示image operating system “linux” cannot be used on this platform (桌面版的Docker系统,进行Docker模式的切换)
3.image operating system “linux” cannot be used on this platform (我听到了一个噩耗,就是windows 2016的docker不支持linux系统,我辛辛苦苦这么久,告诉我不能用,这是什么鬼。)
4.Linux Docker container on Windows Server 2016 (这里有人提到了通过修改注册表,然后拷贝win10下的Docker文件到server2016上运行,但是实际上,我找不到其中的几个文件:mobylinuxvm.ps1、forceremovedocker.ps1,所以没有办法测试)
5.Linux container in w2k16 (这里同样提到了上面的方法,修改注册表,同样也是需要forceremovedocker文件)
6.How to run Linux Docker images on Windows Server 2016? (这里也有说,Windows 2016无法运行linux,)
7.Build and run your first Docker Windows Server container (这里是如何使用Docker创建Windows容器的操作)

(4) 在windows server 2016上到底能不能安装docker?
Linux container on Windows Server 2016中有这么一句话:

Containers are therefore lightweight, so you can run more containers than VMs on a host server. They are also less flexible. Whereas you can run Linux in a VM running on Windows, that idea makes no sense for a container, which shares operating system files with its host.

也就是说,轻量级的容器是和主机共享相同的文件系统的,所以考虑在windows上运行容器,是没有意义的。从这个角度来看,确实在2016上安装docker运行linux没有意义,但是随之而来的问题就是,为什么在windos10上可以运行docker,而其他的不可以。

Install Docker Desktop on Windows 文章中,提到了系统的要求:

Windows 10 64-bit: Pro, Enterprise, or Education (Build 17134 or higher).
For Windows 10 Home, see System requirements for WSL 2 backend.
Hyper-V and Containers Windows features must be enabled.
The following hardware prerequisites are required to successfully run Client Hyper-V on Windows 10:
- 64 bit processor with Second Level Address Translation (SLAT)
- 4GB system RAM
- BIOS-level hardware virtualization support must be enabled in the BIOS settings. For more information, see Virtualization.

注定是要失败的啊。

参考文章:
1.在 Windows Server 2016 上使用 Linux Container (文章有点久远了,按照第一步就错误了,下载不了相关的文件。里面说Docker for Windows 已經支援 Windows Server 2016,但是实际上还是有问题。透過 docker for windows 可以讓 Windows Server 2016 也能擁有像是 Windows 10 一樣橫跨 Windows container 與 Linux container 的優點,快速切換的功能讓使用不同 OS container 時更加節省時間及有效率。这里提供的Docker版本是17.06.1.ce-win24)
2.在 Windows 上可以用 Docker 吗? (当然这其实没有什么明确的答案,能或者不能)
3.如何在Windows 10上运行Docker和Kubernetes? (在win10上安装Kubernetes和Docker,在Hyper-V上安装Minikube,使用Chocolatey安装软件包)
4.Docker for Window with Subsystem for Linux (WSL) (这里也是关于在具有wsl系统的windows10上安装Docker命令)
5.Getting Started with Windows Containers (这里有说:Install Docker Enterprise Engine on Windows Server,也就是Docker Enterprise支持Server 2019,而且2019要是 Windows Server 2019 Datacenter with Containers 版本)
6.Announcing Support for Windows Server 2019 within Docker Enterprise (顾名思义,就是Docker宣布支持Server2019了,但是是Docker Enterprise)
7.Docker for Window with Subsystem for Linux (WSL) (Docker如何在WSL中使用)

2.MasOS安装

下载安装也挺简单的,双击就好了。

配置

打开Docker面板,找到设置,可以进行配置的修改。在设置的Resources中,默认的images存放的路径是:/Users/[用户名]/Library/Containers/com.docker.docker/Data/vms/0/data,点击Browse,可以修改位置;Docker Engine中,可以修改镜像的地址,添加 registry-mirrors 节点就可以了。

1
2
3
4
"registry-mirrors": [
"http://hub-mirror.c.163.com",
"http://docker.mirrors.ustc.edu.cn"
]

如果你在images文件存放路径中,执行:ls -lh 命令查看磁盘占用,你会发现磁盘占用很大,

1
2
3
4
5
6
7
8
9
10
11
12
## 查看所有镜像
docker images
## or
docker image ls

## 进入镜像目录
cd /Users/[用户名]/Library/Containers/com.docker.docker/Data/vms/0/data
## 查看磁盘占用
ls -lh

## 查看实际占用
du -h Docker.raw

打开Docker配置,可以进行修改,拖动Disk image size 大小,最少可以减到8G,然后点击应用重启Docker。

再次使用 ls 命令查看 Docker.raw 文件,就会发现只有8G大小了。从大空间变道小空间的时候,会弹出一个警告,大意就是 镜像可能损毁,请注意。

当然了,也可以不用修改,毕竟这只是一个最大的占用,实际上,没有占用这么大的空间。

参考文章:
【1】.Docker.raw 占用空间较大 可以修改diskSizeMiB配置,减小空间占用,但是也会存在镜像丢失的问题
【2】.关于docker for mac 占用大量硬盘的问题 清理镜像占用 docker system prune -a
【3】.Docker.raw reserving too much size 减小磁盘空间后,可能出现的镜像丢失问题
【4】.ls命令按兆查看文件大小 -h human-readable
【5】.docker占用磁盘空间清理 docker system prune命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。docker system prune -a命令清理得更加彻底,可以将没有容器使用Docker镜像都删掉。
【6】.mac下的docker的Docker.raw占用空间问题 其实这个只是系统分配给docker的逻辑硬盘大小,应该是指docker最大可用的硬盘空间,实际占用没有这么大。
【7】.MacOS上配置docker国内镜像仓库地址

proxyconnect tcp: dial tcp 172.17.0.1:3128: connect: connection refused

这个问题是在mac电脑上运行 docker compose 的时候出现的问题,我暂时没有空去解决这个东西。

小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。