Docker for Windows
windows安装docker服务
环境下载
-
Docker Desktop Installer.exe (windows 环境下运行docker的一款产品)
-
wsl_update_x64 (Linux 内核包)
开启配置
- 打开任务管理器(Ctrl+Alt+Delete)-> 选择性能 -> CPU ->虚拟化,确认是否已启用
- 开启 Hyper-v,在控制面板打开程序,然后点击启动或关闭windows功能,找到勾选Hyper-v点击确定
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
安装装服务
-
先安装wsl_update_X64.msi,一路下一步next即可完成安装
-
安装完wsl_update_X64.msi后,开始安装Docker Desktop(过程有点久,务必耐心等待,安装完会提示关闭重启)
-
安装好并启动好docker后,输入:
docker --version
,出现版本号即安装成功
镜像配置
点击设置
"registry-mirrors": [
"https://6x1n58x2.mirror.aliyuncs.com",
"http://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
远程访问
-
在DockerDesktop
⚙ 的General中勾选Expose daemon on tcp://localhost:2375 without TLS
(也只是开启localhost/127.0.0.1端口2375的监听) -
在Docker Engine添加host,然后apply and restart
"hosts": ["tcp://0.0.0.0:2375"]
这里按理来说确实是可以监听任何ip的2375端口,但实际上却无法实现远程访问!因为windows环境下的Docker是运行在Hyper-v的虚拟机中或者是wsl windows子系统中,这些虚拟机和宿主机是NAT方式连接的,宿主机的物理网络和虚拟机网是不在同一子网中。因此在上面两步的基础上,还需要解决虚拟机和宿主机网络不在同一子网的问题。
解决虚拟机与宿主机不在同一子网上时通过宿主机ip访问docker守护进程方法:需要在宿主机设置代理监听本地127.0.0.1:2375。
参考文档说明
- 在CMD(管理员模式)中执行命令
#替换 <your_IP>为 docker主机的公网IP地址
netsh interface portproxy add v4tov4 listenport=2375 listenaddress=<your_IP> connectaddress=127.0.0.1 connectport=2375
- 验证,输入以下命令,有内容返回输出即可
curl your公网IP:2375/version
# stream与http配置同级
stream {
server {
listen 2375;
proxy_pass 127.0.0.1:2375;
}
}
Docker for Linux
Linux安装docker服务
⚠ 以下所有操作均以root管理员身份操作!
离线安装
下载docker安装包,版本根据自己开发需要进行选择!
下载地址
将下载好的docker-18.06.3-ce.tgz上传到服务器的/data/docker目录下(没有就创建,放一个看空间大一点的位置)
- 解压压缩包
tar -zxvf docker-18.06.3-ce.tgz
- 将docker相关命令拷贝到 /usr/bin,方便直接运行命令
cp docker/* /usr/bin/
- 编写docker.service文件,注意:如下语句末尾需要有个空格,请带上!
vi /etc/systemd/system/docker.service
- 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 --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.
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
在线安装
- 关闭selinux安全服务
vi /etc/sysconfig/selinux
- 把其中的
selinux
设置为disabled
如果之前安装过旧版本的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
- 更新yum源
yum update
- 首先需要虚拟机联网,安装yum工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
- 然后更新本地镜像源:
# 设置docker镜像源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 更新yum索引
yum makecache fast
- 然后输入命令:
yum install -y docker-ce
docker-ce为社区免费版本。稍等片刻,docker即可安装成功!
Docker应用需要用到各种端口,逐一去修改防火墙设置以及开放端口,非常麻烦,因此建议大家在学习阶段可以直接关闭防火墙!
# 关闭防火墙
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
- 通过命令启动docker:
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
- 然后输入命令,可以查看docker版本:
docker -v
- 设置开机自启
systemctl enable docker.service
- 关闭开机自启
systemctl disable docker.service
镜像配置
vi /etc/docker/daemon.json
{
"registry-mirrors": [
"https://6x1n58x2.mirror.aliyuncs.com",
"http://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
重启守护进程和docker
systemctl daemon-reload
systemctl restart docker
拓展配置
修改配置
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
systemctl daemon-reload
systemctl restart docker
远程访问
方式一:关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
方式二:开放2375端口
firewall-cmd --add-port=2375/tcp --permanent
firewall-cmd --reload
创建用户组
安装好docker后,如果之后操作docker不是root用户,则创建用户组方便操作docker,省去操作权限不够的麻烦
sudo groupadd docker
sudo usermod -aG docker ${USER}
sudo systemctl restart docker