From 25e28b2e7992f86bdb6bb77b5855b749a78f2b95 Mon Sep 17 00:00:00 2001 From: he-xiang-best <172837855@qq.com> Date: Tue, 6 Dec 2022 15:35:06 +0800 Subject: [PATCH] Update README.md --- README.md | 237 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 222 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 0183f87..50f3d37 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,13 @@ > windows安装docker服务 -## 环境工具下载 +## 环境下载 - [Docker Desktop Installer.exe](https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe) (windows 环境下运行docker的一款产品) - [wsl_update_x64](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi) (Linux 内核包) -## 开启相关配置 +## 开启配置 - 打开任务管理器(Ctrl+Alt+Delete)-> 选择性能 -> CPU ->虚拟化,确认是否已启用 - 开启 Hyper-v,在控制面板打开**程序**,然后点击**启动或关闭windows功能**,找到勾选Hyper-v点击确定 @@ -23,7 +23,7 @@ del hyper-v.txt Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL ``` -## 开始安装服务 +## 安装装服务 - 先安装**wsl_update_X64.msi**,一路下一步next即可完成安装 @@ -42,9 +42,56 @@ Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /AL ] ``` -# Docker for Linux +## 远程访问 -## Linux服务器离线安装 +- 在DockerDesktop⚙的General中勾选`Expose daemon on tcp://localhost:2375 without TLS`(也只是开启localhost/127.0.0.1端口2375的监听) + +- 在Docker Engine添加host,然后apply and restart + +```dockerfile +"hosts": ["tcp://0.0.0.0:2375"] +``` + +这里按理来说确实是可以监听任何ip的2375端口,但实际上却无法实现远程访问!因为windows环境下的Docker是运行在Hyper-v的虚拟机中或者是wsl windows子系统中,这些虚拟机和宿主机是NAT方式连接的,宿主机的物理网络和虚拟机网是不在同一子网中。因此**在上面两步的基础上**,还需要解决虚拟机和宿主机网络不在同一子网的问题。 + +解决虚拟机与宿主机不在同一子网上时通过宿主机ip访问docker守护进程方法:需要在宿主机设置代理监听本地127.0.0.1:2375。 + +参考文档说明🔗:[Configuring the Docker Engine to Listen to the TCP Socket - IBM Documentation](https://www.ibm.com/docs/en/addi/6.1.0?topic=prerequisites-configuring-docker-engine-listen-tcp-socket) + +- 在CMD(管理员模式)中执行命令 + +```shell +#替换 为 docker主机的公网IP地址 +netsh interface portproxy add v4tov4 listenport=2375 listenaddress= connectaddress=127.0.0.1 connectport=2375 +``` + +- 验证,输入以下命令,有内容返回输出即可 + +```shell +curl your公网IP:2375/version +``` + +⚠注意宿主机使用本机ip可以访问,但其他机器访问宿主机ip不通的,则需要在windows防火墙开放端口,防火墙配置中,入站和出站都需要开放2375端口! + +❗如果远程端口开放的设置代理无效或者windows重启后失效,需要检查IP Help服务正常运行,重启该服务即可。建议将其设为自动启动。 + +❗除了使用netsh命令添加代理,也可以在宿主机上使用nginx转发127.0.0.1:2375,nginx配置文件nginx.conf添加如下配置,在/etc/nginx/conf.d/中,修改default.conf文件 + +```nginx +# stream与http配置同级 +stream { + server { + listen 2375; + proxy_pass 127.0.0.1:2375; + } +} +``` + +# Docker for Linux + +> ⚠ **以下所有操作均以root管理员身份操作!** + +## 离线安装 下载docker安装包,版本根据自己开发需要进行选择! @@ -84,7 +131,8 @@ 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 --selinux-enabled=false --insecure-registry=10.58.20.199 +# ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=127.0.0.1 -H fd:// --containerd=/run/containerd/containerd.sock +ExecStart=/usr/bin/dockerd --graph /data/dockerdata --selinux-enabled=false -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock 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. @@ -108,8 +156,6 @@ StartLimitInterval=60s WantedBy=multi-user.target ``` -⚠其中`ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=10.51.150.122`,`10.51.150.122`是服务器ip地址,安装部署的时候注意修改这个!!! - - 添加文件权限 ```shell @@ -124,32 +170,193 @@ systemctl daemon-reload - 启动docker -``` +```shell systemctl start docker ``` - 设置开机自启 +```shell +systemctl enable docker.service +``` + +## 在线安装 + +- 关闭selinux安全服务 + +```sh +vi /etc/sysconfig/selinux +``` + +- 把其中的`selinux`设置为`disabled` + +如果之前安装过旧版本的Docker,可以使用下面命令卸载: + +```shell +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 +``` + +- 更新yum源 + +```shell +yum update +``` + +- 首先**需要虚拟机联网**,安装yum工具 + +```shell +yum install -y yum-utils \ + device-mapper-persistent-data \ + lvm2 --skip-broken +``` + +- 然后更新本地镜像源: + +```shell +# 设置docker镜像源 +yum-config-manager \ + --add-repo \ + https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo +``` + +- 更新yum索引 +```shell +yum makecache fast +``` + +- 然后输入命令: + +```shell +yum install -y docker-ce +``` + +docker-ce为社区免费版本。稍等片刻,docker即可安装成功! + +Docker应用需要用到各种端口,逐一去修改防火墙设置以及开放端口,非常麻烦,因此建议大家在学习阶段可以直接关闭防火墙! + +```sh +# 关闭防火墙 +systemctl stop firewalld +# 禁止开机启动防火墙 +systemctl disable firewalld ``` + +- 通过命令启动docker: + +```sh +systemctl start docker # 启动docker服务 + +systemctl stop docker # 停止docker服务 + +systemctl restart docker # 重启docker服务 +``` + +- 然后输入命令,可以查看docker版本: + +```shell +docker -v +``` + +- 设置开机自启 + +```shell systemctl enable docker.service ``` -⚠docker默认的路径/var/lib/docker,如果这个路径下磁盘空间不够大,经常使用容器的话空间很快就会满了,因此需要修改路径,放到一个空间大一点的路径 +- 关闭开机自启 + +```shell +systemctl disable docker.service +``` -- 修改 +## 镜像配置 ```shell -vi /etc/systemd/system/docker.service +vi /etc/docker/daemon.json ``` -在`ExecStart=/usr/bin/dockerd` 后面加上 `--graph /data/dockerdata` +```json +{ +"registry-mirrors": [ + "https://6x1n58x2.mirror.aliyuncs.com", + "http://hub-mirror.c.163.com", + "https://mirror.baidubce.com" + ] +} +``` + +重启守护进程和docker + +```shell +systemctl daemon-reload + +systemctl restart docker +``` -/data/dockerdata路径不存在的话,就先建一个(保证磁盘空间够大的路径均可) +## 拓展配置 -- 重启守护进程和docker +修改配置 + +```shell +vi /etc/systemd/system/docker.service +``` + +可选拓展内容,在`ExecStart=/usr/bin/dockerd` 后面加上 + +- `--graph /data/dockerdata` :docker默认的路径/var/lib/docker,如果这个路径下磁盘空间不够大,经常使用容器的话空间很快就会满了,因此需要修改路径,放到一个空间大一点的路径,若/data/dockerdata路径不存在的话,就自己先建一个,这个路径可自定义,保证磁盘空间够大的路径均可! +- `-H unix:///var/run/docker.sock`:unix socket,本地客户端将通过这个来连接 Docker Daemon +- `-H tcp://0.0.0.0:2375`:tcp socket,表示允许任何远程客户端通过 2375 端口连接 Docker Daemon + +重启守护进程和docker ```shell systemctl daemon-reload + systemctl restart docker ``` +## 远程访问 + +方式一:关闭防火墙 + +```shell +systemctl stop firewalld + +systemctl disable firewalld +``` + +方式二:开放2375端口 + +```shell +firewall-cmd --add-port=2375/tcp --permanent + +firewall-cmd --reload +``` + +## 创建用户组 + +安装好docker后,如果之后操作docker不是root用户,则创建用户组方便操作docker,省去操作权限不够的麻烦 + +```shell +sudo groupadd docker + +sudo usermod -aG docker ${USER} + +sudo systemctl restart docker +``` + + + + + +## -- GitLab