Docker安装和配置

标签: Docker 分类: 软件 创建时间:2020-03-10 07:07:47 更新时间:2024-11-15 10:49:43

1.Windows10安装docker

windos7和8上使用的是docker toolbox进行安装,windows10上有另外的安装方法。
(1) [下载docker] (https://hub.docker.com/editions/community/docker-ce-desktop-windows)
使用迅雷下载可能比较快,使用浏览器自带的,下载就特别的慢。

(2) 安装的时候没有找到地方更改安装路径,估计是默认了

(3) 安装完要重启

参考文章:
1.Windows Docker 安装
2.Docker学习系列(一):windows下安装docker
3.Docker windows安装并启用镜像加速 (内容都大同小异,其实windows上已经有了比较成熟的可执行程序,修改配置文件也简单的。)

1.改变镜像文件存储路径

(1) 开始菜单右键->控制面板->管理工具->Hyper-V 管理器->虚拟机右键->设置->SCSI控制器磁盘驱动器。

(2) 将默认C:\Users\Public\Documents\Hyper-V\Virtual hard disks\MobyLinuxVM.vhdx的文件拷贝到想要改变的路径,我这里拷贝到D:\soft\DockerImage路径下,然后点击浏览读取并确定保存设置

这样直接修改路径,好像不可以。因为虚拟机已经在运行了,你重新指定一个新的镜像,那只能是打开了新的虚拟机罢了。于是我换了一个思路。通过移动虚拟机的方式进行修改镜像位置。
(1) 打开Hyper-V管理器,选中虚拟机右键->移动->

(2) 打开移动对话框

(3) 一步步的选择操作,到选择文件夹的地方

(4) 点击完成

(5) 再次查看Docker的位置,已经到新的位置上了。

(6) Docker设置中,修改镜像保存地址
除了将Docker虚拟机移动到其他地方,还有一个地方是默认的镜像保存地址是:C:\ProgramData\DockerDesktop\vm-data,可以在设置中修改位置。

(7) 因为我以前安装过一个CentOS镜像,然后有一次莫名其妙的重启系统后,用户没有权限访问自己的文件夹了,只能重新创建了一个用户,用新的用户登录系统。结果就算我重新在Docker中指定了镜像保存的位置,结果这个文件还是删除不掉。

win10下右键任务栏->任务管理器->性能->打开资源监视器->CPU->关联句柄处输入想要查的文件名->这里是explore.exe(资源管理,小心谨慎的操作,直接右键结束进程,你就没有任务栏了,多半要重启电脑。)

当然不重启电脑也行,重新Ctrl+Alt+Del键,调出任务管理器->文件->新建任务->然后输入explorer.exe,确定就好了。

当然这样做了,上面的文件占用问题还是没有解决,然后你猜怎么找,我重启电脑,解决了问题。

没有什么是重启电脑解决不了的,如果有,那就一直重启

2.镜像加速

新版的Docker好像没有了Daemon选项,只有一个Docker Engine,里面有registry-mirrors,可以直接修改这个数组。

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

我手贱,输入了一个错误的地址,结果,docker启动不起来了。可以找到C:\Users\用户名.docker下的daemon.json,直接修改registry-mirrors的值,然后从任务管理器强制关闭docker,然后重新启动docker。

还有一个地方,如果配置了镜像,还是非常的慢的话,看看是不是DNS没有配置

1
2
3
4
5
6
## 编辑DNS
vi /etc/resolv.conf

## 增加
nameserver 223.5.5.5
nameserver 8.8.8.8

2.Deepin安装docker

一键安装脚本

1
wget -qO- https://get.docker.com/ | sh

安装完之后,有一个提示:

这个时候在命令行运行docker会遇到权限的问题,需要使用 sudo docker version命令

如果想要不使用sudo命令运行docker,可以增加docker用户组,并将当前用户添加进去

1
2
3
4
5
6
## 新建用户组
sudo groupadd docker
## 添加当前用户
sudo usermod -aG docker $USER
## 刷新用户信息
newgrp docker

本来想直接使用docker官方的Debain版,因为Deepin是基于Debain开发的,但是有参考资料说明,如果单纯只是使用Debain版的安装,好像不会成功,因为Deepin进行了大量的修改。比如没有wheey版本等,unstable版本的问题等。我的系统版本已经是15.11了。
(1) 卸载

1
2
3
4
5
## 这些命令挺全的,综合了多个版本
sudo apt-get remove docker docker-engine docker-ce docker.io
sudo apt-get purge docker
sudo apt-get autoremove docker
sudo rm -rf /var/lib/docker

(2) 安装相关工具
这一步视情况进行安装和不安装,我没有进行安装,直接跳到了安装密钥一步,倒是也没有问题。

1
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

这里我遇到了问题:”没有可用的软件包 python-software-properties,但是它被其它的软件包引用了。”

尝试的解决方法,去掉python-software-properties软件包的安装

(3) 安装秘钥

1
2
3
4
5
## 安装秘钥
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

## 查看秘钥
sudo apt-key fingerprint OEBFCD88

(4) 添加docker仓库

1
2
3
4
5
6
7
## 更新仓库
sudo apt-get update

## 编辑源列表文件 /etc/apt/sources.list,这步一定要做,否则可能会出现错误aptsources.distro.NoDistroTemplateException
sudo gedit /etc/apt/sources.list
## 添加
deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/debian stretch stable

安装这一步(add-apt-repository)的时候,又出现错误了:”could not find a distribution template for Deepin/stable”

(6) 查看docker可安装版本

1
sudo apt-cache madison docker-ce

(7) 安装特定版本

1
2
3
4
5
## 安装特定版本docker
sudo apt-get install docker-ce=18.06.3~ce~3-0~debian containerd

## 或者直接安装最新版docker
sudo apt-get install docker-ce

(8) 设置docker非root账户,可以将普通用户也可以使用docker命令运行docker,而不用再输入sudo命令(要重启电脑才能生效)。

1
2
3
4
sudo gpasswd -a ${USER} docker

## 或者把你的账号加到 docker 用户组
sudo usermod -aG docker $USER

(9) 查看安装的docker版本

1
docker version
参考文章:
1.Debian Docker 安装
2.关于Deepin中的Docker
3.在 Deepin 中安装 Docker 最新版的方法
4.deepin安装docker (这个好像写的更加的详细点,版本到了15.10了)
5.deepin系统下的docker安装 (这个版本才刚是15.7)
6.Deepin 安装 最新版Docker (这个就更老了深度15.4)
7.Linux中修改docker镜像源的方法及原因

(10) 修改镜像源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
## 配置文件在daemon.json中,没有就新建
vim /etc/docker/daemon.json

## 添加如下网易镜像
##{
## "registry-mirrors": ["http://hub-mirror.c.163.com"]
##}

##
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.m.daocloud.io"]
}
EOF

## 重新加载配置(这个很重要)
sudo systemctl daemon-reload
sudo systemctl restart docker
参考文章:
1.修改docker镜像源的方法
2.怎么修改镜像源
3.docker 更换镜像源地址
4.Docker 配置国内镜像源加速 中国官方镜像、网易163镜像、中科大镜像
【5】.docker 拉取镜像失败 大部分的镜像网站都不能用了。

(11) 配置本地镜像的存放位置
镜像的默认存放路径是:/var/lib/docker,可以通过修改软连接的方法,也可以通过扩展卷的方法,好像看起来有点复杂,就没有尝试了。
有一种简单的方式,就是修改daemon.json文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
## 停止docker服务
systemctl stop docker

## 编辑
vim /etc/docker/daemon.json

## 添加
{

"data-root":"/data/docker-data"

}

## 将docker镜像迁移到新目录
mv /var/lib/docker /data/docker-data

## 重新加载配置
sudo systemctl daemon-reload

## 启动docker服务
systemctl start docker

## 查看信息
docker info

问题

(1) Got permission denied while trying to connect to the Docker daemon socket
执行:docker search hello-world 出现了权限错误,可是我明明已经执行了gpasswd和usermod命令啊。

参考文章中有这么一句话:

您需要注销并重新登录,以便重新评估组成员身份或键入以下命令:
su -s ${USER}

运行su命令不管事,总是出现鉴定故障,我就干脆重启了电脑。运行:docker version 出现的权限错误,也是这么解决。

3.CentOS安装Docker

CentOS安装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
26
27
28
## 卸载原先的安装包
sudo yum remove docker docker-client docker-client-latest docker-commondocker-latest docker-latest-logrotate docker-logrotate docker-engine

## 安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
## 设置仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 清华源(两步都要执行)
yum-config-manager --add-repo https://mirror.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
sed -i 's+https://download.docker.com+https://mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo

## 安装最新版Docker,我这里是19.0.3版,安装起来有点慢,如果网络不通,其实可以配置 清华源,或者干脆就是离线安装,也不是不可以
sudo yum install docker-ce docker-ce-cli containerd.io
## 启动
sudo systemctl start docker

## 编辑配置文件,默认的镜像及容器存储路径为/var/lib/docker,可以使用docker info查看
vi /etc/docker/daemon.json

## 重新加载配置
sudo systemctl daemon-reload

## 启动docker服务
sudo systemctl start docker

## 停止docker服务,出现:Warning: Stopping docker.service, but it can still be activated by: docker.socket 使用
sudo systemctl stop docker.socket
sudo systemctl stop docker.service
参考文章:
1.CentOS Docker 安装
2.修改CentOS默认yum源为国内yum镜像源
3.国内 docker 仓库镜像对比
4.Centos7修改Docker默认存储位置 修改启动参数ExecStart,增加了–graph参数,指向了新的docker镜像存储位置
5.在CentOS 7 更改Docker默认镜像和容器的位置 两种方法修改镜像位置,一种是通过建立软连接的方式,一种就是启动参数增加–graph的方法
6.四个修改Docker默认存储位置的方法 方法一、软链接;方法二、修改镜像和容器的存放路径,修改配置文件指定启动参数即可;方法三、system下创建配置文件;方法四、使用docker-storage-set(docker1.12)命令进行配置
7.docker更改镜像存储位置 第一种就是做软连接;可通过修改/etc/sysconfig/docker文件实现,OPTIONS=’–graph=”/data/docker-data”;通过修改文件/etc/docker/daemon.json 实现,添加”graph”:”/data/docker-data”。如果已经存在了镜像,需要将旧文件移到新的位置:mv /var/lib/docker /data/docker-data ,将docker镜像迁移到新目录
8.docker:containerd.io docker-ce-cli docker-ce 的区别 containerd.io : 守护进程 containerd。 它在 docker 包上独立工作,并且是 docker 包所必需的。
9.无法正常停止docker进程
10.anolis8.6QU1 docker 安装

问题

(1) package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed,如果要安装高版本的话,可能会遇到新的问题:package docker-ce-3:26.1.4-1.el7.x86_64 requires containerd.io >= 1.6.24, but none of the providers can be installed

我的是CentOS8安装docker时报错,解决方法是升级 containerd.io,去官网查看最新版本containerd.io-1.2.13-3.1.el7.x86_64.rpm

1
2
3
4
5
6
7
8
yum install -y wget
## 离线下载,上传到服务器
wget https://download.docker.com/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.13-3.1.el7.x86_64.rpm
yum install -y containerd.io-1.2.13-3.1.el7.x86_64.rpm

## 重新安装docker
yum install docker-ce docker-ce-cli

4.UOS 1020a安装Docker

信创云上安装了 UOS V20 1020a 版本:UniontechOS 20,就是无法安装 docker。

【尝试方案】
(1)尝试使用 清华源,尝试使用 阿里云的源,都不行。
(2)尝试自己写 docker-ce.repo,结果 这个总是链接不上:Timeout was reached for https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/repodata/repomd.xml,但是我同样的在自己的网络中,是可以访问这个地址的。

1
2
3
4
5
6
7
8
9
10
11
12
13
tee /etc/yum.repos.d/docker-ce.repo <<-'EOF'
[docker-ce-stable]
name=Docker-CE-Stable-$basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=0

[extras]
name=Extras-$basearch
baseurl=https://mirrors.aliyun.com/centos/7/extras/$basearch/
enabled=1
gpgcheck=0
EOF

【解决方案】
(1)最后我还是只增加了清华的源,不知道服务器为什么对某几个地址有限制,就是无法使用 阿里云 的缘,就这么算了吧。

1
2
3
4
5
6
7
tee /etc/yum.repos.d/docker-ce.repo <<-'EOF'
[docker-ce-stable]
name=Docker-CE-Stable-$basearch
baseurl=https://mirror.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=0
EOF

增加完了清华的源,然后解决了这个 containerd.io-1.6.33-3.1.el7.x86_64.rpm 版本依赖的问题,最后终于可以安装 docker 26版本了。

(2)还有一种可能,就是这个DNS服务器的问题

1
2
3
4
5
6
7
8
9
# 编辑 DNS 配置文件
vi /etc/resolv.conf

# Generated by NetworkManager,注释掉 10.130.82.8
nameserver 10.130.82.8
nameserver 10.130.82.9
nameserver 223.5.5.5
nameserver 8.8.8.8

参考文章:
【1】.UOS安装Docker 修改[docker-ce-stable]下的baseurl地址
【2】.在统信UOS V201050a上安装Docker 这里 UOS V201050a ,用的是 apt 管理。
【3】.CentOS7 安装 Docker-CE
【4】.【全平台】统信服务器操作系统安装Docker-CE 这里自定义了一个 docker-ce.repo,
【5】.国内已经无法按照脚本安装docker,有考虑优化安装策略么
小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 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.
幸福是年华的沉淀,微笑是寂寞的悲伤。