需求要点
- use a linux os ubuntu on window
- use docker server on ubuntu
- set docker registry-mirrors in china
- set docker insecure-registries
- set docker remote api
操作指南
install wsl and start wsl
note: get details on installing and setting wsl
# start and login wsl
wsl
install docker with apt on wsl & linux
# install
apt install docker.io -y
# apt remove docker.io -y
# check
# docker --version
# docker info
# dockerd --version
# 20.10.21
note: what is docker.io vs docker-ce-cli,docker-ce,containerd.io ?
start docker service and enbale start on booting
systemctl start docker.service;systemctl enable docker.service;
check runing
docker ps
# or you can run others:
# docker run -ti --rm alpine echo hello
# docker run -ti --rm alpine /bin/sh
set docker registry-mirrors in china
# zero:task:s:exit /etc/docker/daemon.json
# add some txt as below
# WARN: NEXT CMD WILL OVERIDE IT.
# YOU CAN USE vim /etc/docker/daemon.json OR OTHER WAYS
cat > /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"]}
EOF
# zero:task:e:exit /etc/docker/daemon.json
msg="
# restart daemon-reload and docker to work after edting /etc/docker/daemon.json
# if they are having starting.
systemctl daemon-reload;systemctl restart docker;
"
echo "$msg"
msg="
# to check docker mirror setting
# run next:
docker info
"
echo "$msg"
you can use all in one shell script :
restart daemon-reload and docker
systemctl daemon-reload ;systemctl restart docker;
set docker insecure-registries
# cat /etc/docker/daemon.json
{
"insecure-registries": ["harbor.domain.io"]
}
# todo:
# dok-reg.sh [cmd] [domain]
dok-reg.sh use harbor.domain.io
dok-reg.sh use 127.0.0.1
dok-reg.sh del harbor.domain.io
set docker remote api
let docker client on window access docker server on wsl:
- docker server enbale remote api
# "hosts": ["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"],
# "hosts": ["tcp://127.0.0.1:2375","unix:///var/run/docker.sock"],
f=/etc/docker/daemon.json
cat > $f <<EOF
{
"hosts": ["tcp://127.0.0.1:2375","unix:///var/run/docker.sock"],
}
EOF
# cat $f
f=/usr/lib/systemd/system/docker.service
cat $f | grep ExecStart=
bk="ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock"
n="ExecStart=/usr/bin/dockerd";
o="ExecStart=.*";
sed -iE "s,ExecStart=.*,$n,g" $f;
systemctl daemon-reload;systemctl restart docker;
- docker client use relative context
# docker context --help
# docker context ls
docker context create wsl --docker "host=tcp://127.0.0.1:2375"
docker context use wsl
# docker context rm wsl
current /etc/docker/daemon.json
f=/etc/docker/daemon.json
cat > $f <<EOF
{
"insecure-registries": ["127.0.0.1","harbor.domain.io"],
"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"],
"hosts": ["tcp://127.0.0.1:2375","unix:///var/run/docker.sock"],
"log-driver":"json-file",
"log-opts":{
"max-size" :"50m","max-file":"3"
}
}
EOF
# cat $f
uninstall docker
# uninstall soft
apt remove docker.io -y
# delete docker containers,images,volumes
rm -rf /var/lib/docker
#
rm -rf /var/lib/containerd
rm -rf /etc/docker/daemon.json
all in one shell scripts
todir=./tool/wslubt-use-docker;
tof="$todir/index.sh";
gcproxy="https://ghproxy.com/";
uri="${gcproxy}https://raw.githubusercontent.com/ymc-github/wslubt-use-docker/main/index.sh";
mkdir -p "$todir"; curl -o "$tof" -s $uri; chmod +x "$tof";
# install docker
"$tof" install
# reset daemon config
"$tof" reset-cnf
# set docker remote api
"$tof" enable-remote-api
# get current daemon config
"$tof" cnf
# reload cnf
"$tof" reload-cnf
# remove docker
"$tof" remove
参考文献
Install Docker Engine on Ubuntu | Docker Documentation
上篇阅读
下篇阅读
developing in container on wsl & ubuntu (todo)