页面“每天一命令之curl”与“Docker and docker-compose快速安装”之间的差异

来自linux中国网wiki
(页面间的差异)
跳到导航 跳到搜索
 
 
第1行: 第1行:
=常用参数=
+
=参考=
<pre>
+
[[Docker-compose教程]]
  
 +
[[Docker 镜像瘦身优化]]
  
-o: --output <file> Write to file instead of stdout
+
=[[Docker国内镜像的配置及使用]]=
  将文件保存为命令行中指定的文件名的文件中
 
  
 +
=最后改DNS8.8.4.4=
  
借助-o选项,提供名称,下载文件会以该名称保存;如使用-O选项,文件就会以原始名称保存。
+
=docker on cenos7=
 +
<pre>#install 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
  
-O:使用URL中默认的文件名保存文件到本地
+
yum install -y yum-utils \
 +
          device-mapper-persistent-data \
 +
          lvm2
 +
 
 +
#如果在外网       
 +
yum-config-manager \
 +
    --add-repo \
 +
    https://download.docker.com/linux/centos/docker-ce.repo
 +
#如果在国内 这里不要用 ali dns  反而是在国内用 8.8.4.4速度正常 or 114.114.114.114
 +
yum-config-manager \
 +
    --add-repo \
 +
    https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
 +
   
 +
yum makecache fast
 +
yum install docker-ce -y 
 +
systemctl enable docker
 +
systemctl start docker
  
 +
#NOTE 不要用pip 安装 容易出事,见最下面的直接 curl  官方二进制包
 +
yum -y install vim wget curl yum-utils bash-completion bash-completion-extras epel-release lrzsz telnet python-pip
 +
pip install docker-compose
  
 +
mkdir -p /home/data/docker
  
 +
echo '{"graph": "/home/data/docker"}' >/etc/docker/daemon.json
 +
# cat /etc/docker/daemon.json
 +
{"graph": "/home/data/docker"}
  
-L, --location      Follow redirects 进行强制重定向
+
systemctl restart docker
    --location-trusted Like --location, and send auth to other hosts
 
    --login-options <options> Server login options
 
    --mail-auth <address> Originator address of the original email
 
    --mail-from <address> Mail from this address
 
    --mail-rcpt <address> Mail to this address
 
  
 +
#验证docker储存位置
 +
docker system info | grep "Root Dir"
 +
</pre>
 +
https://docs.docker.com/install/linux/docker-ce/centos/
  
 +
=on debian=
 +
==国内网络==
 +
<pre>
 +
sudo apt-get update
 +
apt-get install -y gnupg2
 +
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
 +
# step 2: 安装GPG证书
  
 +
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo apt-key add -
 +
# Step 3: 写入软件源信息
 +
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/debian $(lsb_release -cs) stable"
 +
# Step 4: 更新并安装Docker-CE
 +
sudo apt-get -y update
 +
sudo apt-get -y install docker-ce
  
举个栗子
+
安装指定版本的Docker-CE:
curl -L linux.net/lnmp.sh -o 1.sh
+
# Step 1: 查找Docker-CE的版本:
把lnmp.sh 下载回来 并重命令为1.sh
+
# apt-cache madison docker-ce
  
 +
Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
 +
# sudo apt-get -y install docker-ce=[VERSION]
 +
</pre>
  
 +
==国外网络==
 +
<pre>
  
指令:curl
+
#Fri Nov  8 09:54:03 CST 2019
在linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。
+
apt  install software-properties-common
  
 +
apt-get remove docker docker-engine docker.io containerd runc
  
语法:# curl [option] [url]
+
sudo apt-get install -y \
 +
    apt-transport-https \
 +
    ca-certificates \
 +
    curl \
 +
    gnupg2 \
 +
    software-properties-common
  
 +
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
  
常见参数:
+
sudo apt-key fingerprint 0EBFCD88
-A/--user-agent <string>        设置用户代理发送给服务器
+
sudo add-apt-repository    "deb [arch=amd64] https://download.docker.com/linux/debian \
-b/--cookie <name=string/file>  cookie字符串或文件读取位置
+
  $(lsb_release -cs) \
-c/--cookie-jar <file>          操作结束后把cookie写入到这个文件中
+
  stable"
-C/--continue-at <offset>      断点续转
+
apt-get update
-D/--dump-header <file>        把header信息写入到该文件中
+
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
-e/--referer                    来源网址
+
</pre>
-f/--fail                      连接失败时不显示http错误
+
https://docs.docker.com/install/linux/docker-ce/debian/
-o/--output                    把输出写到该文件中
 
-O/--remote-name                把输出写到该文件中,保留远程文件的文件名
 
-r/--range <range>              检索来自HTTP/1.1或FTP服务器字节范围
 
-s/--silent                    静音模式。不输出任何东西
 
-T/--upload-file <file>        上传文件
 
-u/--user <user[:password]>    设置服务器的用户和密码
 
-w/--write-out [format]        什么输出完成后
 
-x/--proxy <host[:port]>        在给定的端口上使用HTTP代理
 
-#/--progress-bar              用进度条显示当前的传送状态
 
  
 +
=[[DockerHub镜像加速]]=
  
 +
=docker-compose=
 +
==国外==
 +
<pre>
  
 +
#如果在内网看下面的手工 或者找个国内的 镜像吧
  
 +
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  
 +
sudo chmod +x /usr/local/bin/docker-compose
  
 +
curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-Linux-x86_64"  -o /usr/bin/docker-compose
 +
sudo chmod +x /usr/local/bin/docker-compose
  
 +
#官方教程  有些机器 path没这个目录 
 +
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  
用curl的内置option就好,存下http的结果,用这个option: -o
+
  docker-compose
 
 
curl -o page.html http://www.yahoo.com
 
 
 
大写的O,这么用:这样,就可以按照服务器上的文件名,自动存在本地了
 
curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG
 
 
 
 
 
访问不到?肯定是你的proxy没有设定了。
 
使用curl的时候,用这个option可以指定http访问所使用的proxy服务器及其端口: -x
 
  curl -x 123.45.67.89:1080 -o page.html http://www.yahoo.com
 
 
 
 
 
下载
 
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
 
 
 
 
 
其它例子本身就是一个sh脚本 哈哈 写得不错
 
https://test.docker.com/
 
curl -fsSL https://test.docker.com/ | bash
 
 
 
curl -fsSL https://test.com/lnmp.sh | bash
 
 
 
-f/--fail                      连接失败时不显示http错误
 
 
 
-s/--silent                    静音模式。不输出任何东西
 
 
 
-S, --show-error    Show error. With -s, make curl show errors when they occur
 
 
 
-L, --location      Follow redirects (H)
 
 
 
or
 
wget http://xxx/xxx.sh -O- | bash
 
  
 
</pre>
 
</pre>
  
= curl获取状态码Getting curl to output HTTP status code?=
+
==国内 和手工 ==
curl -I http://www.example.org
+
<pre>
 +
curl -L "https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
 +
#curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
 +
chmod +x /usr/local/bin/docker-compose
  
[https://superuser.com/questions/272265/getting-curl-to-output-http-status-code Getting curl to output HTTP status code?]
+
#firefox 直接下载居然很快
 +
wget https://github.com/docker/compose/releases/download/1.25.0/docker-compose-Linux-x86_64
  
=指定ip访问url=
+
curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-Linux-x86_64“
<pre>指定ip访问url
 
curl -H 'Host:a.com' http://10.12.20.21
 
  
 
</pre>
 
</pre>
  
=每一秒 不停的 curl 一个特定页面=
 
<pre>
 
#!/bin/bash
 
cuoun=0
 
while true
 
do
 
me=`curl -N k0.frg.kaixin001.com.cn/curl.php`
 
#echo $me
 
if [ "$me" != "evan" ]
 
then
 
echo "err $cuoun"
 
fi
 
cuoun=`expr $cuoun + 1`
 
sleep 1
 
done
 
 
 
 
 
cat /data/mon/curl_website.sh
 
#!/bin/bash
 
# Usage */1  * * * * /bin/bash /data/mon/curl_website.sh
 
DATE_TIME=`date +"%Y-%m-%d %H:%M.%S"`
 
echo "${DATE_TIME}" >> /data/mon/webcurl.log
 
curl -s -o /dev/null -I -w "%{http_code}"  https://www.cailu.net >> /data/mon/webcurl.log
 
echo -e '\n' >>/data/mon/webcurl.log
 
 
 
cat get.sh
 
#!/bin/bash
 
#author: linuxsa.org
 
DATE_TIME=`date +"%Y-%m-%d %H:%M.%S"`
 
echo "${DATE_TIME}" >> /home/evan/getes.log
 
zabbix_get  -s prod-sns-node-ng-web02 -k"agent.ping" >>/home/evan/getes.log
 
#zabbix_get  -s prod-sns-es01 -k"agent.ping" >>/home/evan/getes.log
 
 
 
</pre>
 
  
 
=trouble shooting=
 
=trouble shooting=
 +
==docker-compose up 启动容器服务超时错误:ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information. ==
 
<pre>
 
<pre>
 +
docker-compose up 启动容器服务超时错误:ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information.
  
在容器里 curl  里有问题  最终加了-k  叫程序自己去搞
 
root@b92094bd49ed:/var/www#  curl -H "Content-Type:application/json" -X POST https://market-api.cailuw.com/api/v1/coin/list
 
curl: (60) SSL certificate problem: certificate has expired
 
More details here: https://curl.haxx.se/docs/sslcerts.html
 
  
curl performs SSL certificate verification by default, using a "bundle"
+
由于docker-compose up 同时启动的服务过多,超过了请求HTTP限制的60s时间仍未全部成功启动起来,所以出现了超时错误:
of Certificate Authority (CA) public keys (CA certs). If the default
 
bundle file isn't adequate, you can specify an alternate file
 
using the --cacert option.
 
If this HTTPS server uses a certificate signed by a CA represented in
 
the bundle, the certificate verification probably failed due to a
 
problem with the certificate (it might be expired, or the name might
 
not match the domain name in the URL).
 
If you'd like to turn off curl's verification of the certificate, use
 
the -k (or --insecure) option.
 
  
 +
    ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information.
 +
              If you encounter this issue regularly because of slow network conditions, consider setting COMPOSE_HTTP_TIMEOUT to a higher value (current value: 60).
  
/var/www# curl -V   
+
其中60s是默认的时间。
curl 7.52.1 (x86_64-pc-linux-gnu) libcurl/7.52.1 OpenSSL/1.0.2l zlib/1.2.8 libidn2/0.16 libpsl/0.17.0 (+libidn2/0.16) libssh2/1.7.0 nghttp2/1.18.1 librtmp/2.3
+
解决思路:
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp
 
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL
 
root@b92094bd49ed:/var/www# exit
 
  
[root@prod-sns-php02 ~]# curl -V
+
把 COMPOSE_HTTP_TIMEOUT 的值调大,并转为环境变量即可。
curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.36 zlib/1.2.7 libidn/1.28 libssh2/1.4.3
 
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
 
Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz unix-sockets
 
  
 +
解决步骤:
  
 +
先进入/etc/profile配置文件,执行命令:
  
-k, --insecure      Allow insecure server connections when using SSL
+
    vi /etc/profile
  
加-k
+
然后在尾部添加上下面代码:
  
/etc/pki 加了也不行呀
+
    export COMPOSE_HTTP_TIMEOUT=500
 +
    export DOCKER_CLIENT_TIMEOUT=500
  
      volumes:
+
接着使/etc/profile配置文件生效,执行命令:
        - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
 
        - ${APP_PACKAGE_PATH}:${APP_PACKAGE_PATH_CONTAINER}
 
        - ./php-worker/supervisord.d:/etc/supervisor/conf.d
 
        - /etc/pki/:/etc/pki/
 
  
 +
    source /etc/profile
  
date -s "2020-10-14 15:35:01"
+
最后重新执行命令 docker-compose up 即可。
  
 +
</pre>
  
sudo ln -sf /usr/share/zoneinfo/America/Monterrey /etc/localtime
+
<pre>
 +
删除volume 后报错 改一下 目录就好了
 +
ERROR: stat /var/lib/docker/overlay2/bc5838430495b942c06a838d8bfecaf416211fa98cc2e3a2372a33ebb7d3061e: no such file or directory
  
  
时间同步
+
echo '{"graph": "/home/data/docker"}' >/etc/docker/daemon.json
  
ln -sf  /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
+
</pre>
 +
===Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io ===
 +
<pre>
 +
Unable to find image 'telegrammessenger/proxy:latest' locally
 +
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on [::1]:53: read udp [::1]:58699->[::1]:53: read: connection refused.
  
  
1,先修改host使域名解析到正确的IP(至于为什么会解析到一个错误的IP我还没搞清楚,可能是之前的缓存)
+
restart docker
 
+
</pre>
2,然后根据https://curl.haxx.se/docs/sslcerts.html,下载证书openssl s_client -showcerts -servername server -connect server:443 > cacert.pem
+
==ERROR: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)==
 
 
之前从错误的服务器(IP)上下载的证书所以不行,指定了正确的IP之后就正常了
 
 
 
ntpdate pool.ntp.org
 
  
 +
<pre>
 +
原来是他们没开外网 坑
 +
oot@dev-fincy-mq03:/data/apps/redis-cluster# docker-compose up  -d
 +
Pulling redis-cluster-7004 (redis:5.0.4-alpine)...
 +
ERROR: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
 
</pre>
 
</pre>
  
[https://www.cnblogs.com/xuxinkun/p/5417836.html  记一次解决curl https证书问题 ]
+
https://docs.docker.com/compose/install/
 
 
[https://q.cnblogs.com/q/124645/ docker容器内访问https问题,curl: (60) SSL certificate problem: self signed certificate]
 
 
 
[https://blog.csdn.net/lixuande19871015/article/details/101206642 curl忽略ssl证书进行https请求]
 
 
 
=see also=
 
 
 
[https://www.cnblogs.com/hujiapeng/p/8470099.html  Linux curl 命令下载文件 ]
 
 
 
https://www.cnblogs.com/gbyukg/p/3326825.html
 
 
 
http://www.21andy.com/new/20080602/1154.html
 
 
 
http://doiido.blog.51cto.com/5503054/1564631
 
  
https://www-31.ibm.com/support/techdocs/cn/faqhtmlfaq/2311073I23001.htm
+
[https://www.jianshu.com/p/34d3b4568059 Docker快速安装以及换镜像源]
  
[[category:shell]][[category:ops]][[category:linux]]
+
[[category:ops]] [[category:Container]]

2020年10月17日 (六) 02:57的版本

参考

Docker-compose教程

Docker 镜像瘦身优化

Docker国内镜像的配置及使用

最后改DNS8.8.4.4

docker on cenos7

#install 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

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2
  
#如果在外网         
 yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
#如果在国内 这里不要用 ali dns  反而是在国内用 8.8.4.4速度正常 or 114.114.114.114
yum-config-manager \
    --add-repo \
    https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
    
yum makecache fast
yum install docker-ce -y   
systemctl enable docker
systemctl start docker

#NOTE 不要用pip 安装 容易出事,见最下面的直接 curl  官方二进制包 
yum -y install vim wget curl yum-utils bash-completion bash-completion-extras epel-release lrzsz telnet python-pip
pip install docker-compose

mkdir -p /home/data/docker

echo '{"graph": "/home/data/docker"}' >/etc/docker/daemon.json
# cat /etc/docker/daemon.json 
{"graph": "/home/data/docker"}

systemctl restart docker

#验证docker储存位置
docker system info | grep "Root Dir"

https://docs.docker.com/install/linux/docker-ce/centos/

on debian

国内网络

sudo apt-get update
apt-get install -y gnupg2
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/debian $(lsb_release -cs) stable"
# Step 4: 更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce

 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce

 Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
# sudo apt-get -y install docker-ce=[VERSION]

国外网络


#Fri Nov  8 09:54:03 CST 2019
apt  install software-properties-common

apt-get remove docker docker-engine docker.io containerd runc

sudo apt-get install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg2 \
    software-properties-common

 curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

 sudo apt-key fingerprint 0EBFCD88
 sudo add-apt-repository    "deb [arch=amd64] https://download.docker.com/linux/debian \
   $(lsb_release -cs) \
   stable"
 apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

https://docs.docker.com/install/linux/docker-ce/debian/

DockerHub镜像加速

docker-compose

国外


#如果在内网看下面的手工 或者找个国内的 镜像吧 

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-Linux-x86_64"  -o /usr/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

#官方教程  有些机器 path没这个目录  
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

 docker-compose 

国内 和手工

curl -L "https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

#firefox 直接下载居然很快 
wget https://github.com/docker/compose/releases/download/1.25.0/docker-compose-Linux-x86_64

curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-Linux-x86_64“


trouble shooting

docker-compose up 启动容器服务超时错误:ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information.

docker-compose up 启动容器服务超时错误:ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information.


由于docker-compose up 同时启动的服务过多,超过了请求HTTP限制的60s时间仍未全部成功启动起来,所以出现了超时错误:

    ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information.
               If you encounter this issue regularly because of slow network conditions, consider setting COMPOSE_HTTP_TIMEOUT to a higher value (current value: 60).

其中60s是默认的时间。
解决思路:

把 COMPOSE_HTTP_TIMEOUT 的值调大,并转为环境变量即可。

解决步骤:

先进入/etc/profile配置文件,执行命令:

    vi /etc/profile

然后在尾部添加上下面代码:

    export COMPOSE_HTTP_TIMEOUT=500
    export DOCKER_CLIENT_TIMEOUT=500

接着使/etc/profile配置文件生效,执行命令:

    source /etc/profile

最后重新执行命令 docker-compose up 即可。

删除volume 后报错 改一下 目录就好了 
ERROR: stat /var/lib/docker/overlay2/bc5838430495b942c06a838d8bfecaf416211fa98cc2e3a2372a33ebb7d3061e: no such file or directory


echo '{"graph": "/home/data/docker"}' >/etc/docker/daemon.json

Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io

Unable to find image 'telegrammessenger/proxy:latest' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on [::1]:53: read udp [::1]:58699->[::1]:53: read: connection refused.


restart docker 

ERROR: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

原来是他们没开外网 坑
oot@dev-fincy-mq03:/data/apps/redis-cluster# docker-compose up  -d 
Pulling redis-cluster-7004 (redis:5.0.4-alpine)...
ERROR: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

https://docs.docker.com/compose/install/

Docker快速安装以及换镜像源