README.md

    Docker for Windows

    windows安装docker服务

    环境下载

    开启配置

    • 打开任务管理器(Ctrl+Alt+Delete)-> 选择性能 -> CPU ->虚拟化,确认是否已启用
    • 开启 Hyper-v,在控制面板打开程序,然后点击启动或关闭windows功能,找到勾选Hyper-v点击确定

    如果进来没找到Hyper-v功能,就新建一个Hyper-V.bat文件,文件内容如下,新建好后,右键以管理员身份运行,开始下载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,出现版本号即安装成功

    镜像配置

    点击设置,找到Docker Engine,添加镜像配置,完成后apply and restart

    "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。

    参考文档说明🔗Configuring the Docker Engine to Listen to the TCP Socket - IBM Documentation

    • 在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

    注意宿主机使用本机ip可以访问,但其他机器访问宿主机ip不通的,则需要在windows防火墙开放端口,防火墙配置中,入站和出站都需要开放2375端口!

    如果远程端口开放的设置代理无效或者windows重启后失效,需要检查IP Help服务正常运行,重启该服务即可。建议将其设为自动启动。

    除了使用netsh命令添加代理,也可以在宿主机上使用nginx转发127.0.0.1:2375,nginx配置文件nginx.conf添加如下配置,在/etc/nginx/conf.d/中,修改default.conf文件

    # stream与http配置同级
    stream {
        server {
            listen 2375;
            proxy_pass 127.0.0.1:2375;
        }
    }

    Docker for Linux

    Linux安装docker服务

    以下所有操作均以root管理员身份操作!

    离线安装

    下载docker安装包,版本根据自己开发需要进行选择!

    下载地址🔗https://download.docker.com/linux/static/stable/x86_64/

    将下载好的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

    项目简介

    docker server

    发行版本

    当前项目没有发行版本

    贡献者 2

    hexiang@ @HXBest
    H hexiang @hexiang

    开发语言

    • Shell 94.8 %
    • Batchfile 5.3 %