文章目录
- 一、Docker架构
- 二、Docker安装
- 1.官方方式
- 2.aliyun方式
- 2.1 debian
- 2.2 ubuntu
- 3.linuxmirrors方式(推荐)
- 4.1panel方式(强烈推荐)
- 4.1 debian
- 4.2 ubuntu
- 5.安装docker-compose
- 三、配置镜像源
- 1.镜像源检测脚本
- 2.配置加速源
- 3.配置代理
- 4.重启docker生效
- 5.配置系统代理
- 四、容器镜像服务
- 五、macvlan:妈妈再也不用担心主机端口冲突
- 六、watchtower:容器自动更新
- 七、常见问题
- 1.windows11 docker不断重启
- 2.如何开放2375端口?
- 3.如何更新docker存储位置
- 4.如何卸载docker?
- 八、相关文档
一、Docker架构
https://docs.docker.com/get-started/docker-overview/#docker-architecture
二、Docker安装
1.官方方式
https://docs.docker.com/engine/install/ubuntu/
//安装Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyunsystemctl start docker
systemctl enable docker
2.aliyun方式
https://help.aliyun.com/zh/ecs/use-cases/install-and-use-docker#59d024a3e32um
2.1 debian
#更新包管理工具
sudo apt-get update
#添加Docker软件包源
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
sudo curl -fsSL http://mirrors.cloud.aliyuncs.com/docker-ce/linux/debian/gpg | sudo apt-key add -
sudo add-apt-repository -y "deb [arch=$(dpkg --print-architecture)] http://mirrors.cloud.aliyuncs.com/docker-ce/linux/debian $(lsb_release -cs) stable"
#安装Docker社区版本,容器运行时containerd.io,以及Docker构建和Compose插件
sudo apt-get -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
#启动Docker
sudo systemctl start docker
#设置Docker守护进程在系统启动时自动启动
sudo systemctl enable docker
2.2 ubuntu
#更新包管理工具
sudo apt-get update
#添加Docker软件包源
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
sudo curl -fsSL http://mirrors.cloud.aliyuncs.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository -y "deb [arch=$(dpkg --print-architecture)] http://mirrors.cloud.aliyuncs.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
#安装Docker社区版本,容器运行时containerd.io,以及Docker构建和Compose插件
sudo apt-get -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
#启动Docker
sudo systemctl start docker
#设置Docker守护进程在系统启动时自动启动
sudo systemctl enable docker
3.linuxmirrors方式(推荐)
https://linuxmirrors.cn/#docker
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)
4.1panel方式(强烈推荐)
https://1panel.cn/docs/installation/online_installation
4.1 debian
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh
4.2 ubuntu
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
5.安装docker-compose
https://github.com/docker/compose/releases
curl -L "https://github.com/docker/compose/releases/download/v2.36.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version
相关操作
docker-compose -f docker-compose.yml up -d
docker-compose -f docker-compose.yml stop
docker-compose -f docker-compose.yml down
三、配置镜像源
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
Docker 镜像库国内加速的几种方法
1.镜像源检测脚本
#!/bin/bash
#https://github.com/docker-practice/docker-registry-cn-mirror-test/blob/master/.github/workflows/ci.yaml
docker version
docker inforegistrys="
docker.901020.xyz
dockerhub.icu
docker.m.daocloud.io
docker.io
dockerproxy.com
docker.nju.edu.cn
docker.mirrors.sjtug.sjtu.edu.cn
docker.mirrors.ustc.edu.cn
dockerhub.timeweb.cloud
hub-mirror.c.163.com
huecker.io
noohub.ru
mirror.baidubce.com
mirror.gcr.io
registry-1.docker.io
registry.hub.docker.com
ua6hh03f.mirror.aliyuncs.com
"
image="library/nginx:1.25.1-alpine"for registry in $registrys
doecho ::group::Test $registry/$imagedocker pull $registry/$image \&& (echo -e "\033[32m$registry is good\033[0m" \; echo "::warning file=README.md,line=1,col=0::OK [ $registry ] is good") \|| (echo -e "\033[31m$registry is outdated\033[0m" \; echo "::error file=README.md,line=1,col=0::X [ $registry ] is outdated")docker rmi $registry/$image || trueecho ::endgroup::
done
2.配置加速源
注意tee会覆盖之前的配置,请备份后操作!!!
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker.901020.xyz"],"insecure-registries": ["docker.901020.xyz"],
}
EOF
3.配置代理
注意tee会覆盖之前的配置,请备份后操作!!!
tee /etc/docker/daemon.json <<-'EOF'
{"proxies": {"http-proxy": "http://xxx.home.love:7890","https-proxy": "http://xxx.home.love:7890","no-proxy": "*.cn,127.0.0.0/8,192.168.0.0/16,172.16.0.0/12,10.0.0.0/8"}
}
EOF
4.重启docker生效
systemctl daemon-reload
systemctl restart docker
5.配置系统代理
打开environment文件
nano /etc/environment
粘贴如下配置信息:
HTTPS_PROXY=http://xxx.home.love:7890
HTTP_PROXY=http://xxx.home.love:7890
重启生效
reboot now
四、容器镜像服务
https://cr.console.aliyun.com/cn-hangzhou/instance/dashboard
//登录阿里云Docker
docker login --username=$MY_ALIYUN_DOCKER_USERNAME --password=$MY_ALIYUN_DOCKER_PASSWORD registry.cn-hangzhou.aliyuncs.com//登录官网Docker
docker login --username=$MY_OFFICIAL_DOCKER_USERNAME --password=$MY_OFFICIAL_DOCKER_PASSWORD//harbor
docker login --username=admin --password=Harbor12345 harbor.home.love//artifactory
docker login --username=admin --password=password artifactory.home.love
五、macvlan:妈妈再也不用担心主机端口冲突
https://docs.docker.com/engine/network/drivers/macvlan/
解决了一台主机映射端口可以重复,因为ip不一样了
docker network rm macvlan;
docker network create -d macvlan \
--subnet=192.168.128.0/17 --gateway=192.168.128.1 \
--ip-range=192.168.255.0/24 \
-o parent=eth0 macvlan
为了安全,默认禁用宿主机和macvlan网络相通,解决宿主机和macvlan不通的问题
ip link add mynet link eth0 type macvlan mode bridge
ip addr add 192.168.255.254 dev mynet
ip link set mynet up
ip route add 192.168.255.253 dev mynet
docker通过设置–network、–ip完成macvlan设置
docker rm -f openresty;
docker run --name openresty \--network macvlan --ip=192.168.255.253 -dp 80:80 \-e TZ=Asia/Shanghai \-v /root/openresty/conf/conf.d:/usr/local/openresty/nginx/conf/conf.d \-v /root/openresty/conf/nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf \-v /root/openresty/logs:/usr/local/openresty/nginx/logs \--restart=always \
openresty/openresty:alpine
docker-compose通过设置networks.macvlan.ipv4_address完成macvlan设置
# https://github.com/firefly-iii/docker/blob/main/docker-compose-importer.yml
version: '3.3'#
# The Firefly III Data Importer will ask you for the Firefly III URL and a "Client ID".
# You can generate the Client ID at http://localhost/profile (after registering)
# The Firefly III URL is: http://app:8080
#
# Other URL's will give 500 | Server Error
#services:app:image: fireflyiii/core:latesthostname: appcontainer_name: firefly_iii_core# networks:# - firefly_iiirestart: alwaysvolumes:- firefly_iii_upload:/var/www/html/storage/uploadenv_file: .envports:- '80:8080'networks:macvlan:ipv4_address: 192.168.255.250importer:image: fireflyiii/data-importer:latesthostname: importerrestart: alwayscontainer_name: firefly_iii_importer# networks:# - firefly_iiiports:- '81:8080'depends_on:- appenv_file: .importer.envnetworks:macvlan:ipv4_address: 192.168.255.240cron:## To make this work, set STATIC_CRON_TOKEN in your .env file or as an environment variable and replace REPLACEME below# The STATIC_CRON_TOKEN must be *exactly* 32 characters long#image: alpinecontainer_name: firefly_iii_cronrestart: alwayscommand: sh -c "echo \"0 3 * * * wget -qO- http://192.168.255.250:8080/api/v1/cron/REPLACEME\" | crontab - && crond -f -L /dev/stdout"# networks:# - firefly_iii
volumes:firefly_iii_upload:firefly_iii_db:networks:
# firefly_iii:
# driver: bridgemacvlan:external: true
六、watchtower:容器自动更新
https://github.com/containrrr/watchtower
https://containrrr.dev/watchtower/
手动运行一次
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--run-once
定期运行
docker rm -f watchtower;
docker run -d \
--name watchtower \
-e TZ="Asia/Shanghai" \
# -e REPO_USER= \
# -e REPO_PASS= \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart always \
containrrr/watchtower \
--schedule "0 0 1 * * FRI" --cleanup
七、常见问题
1.windows11 docker不断重启
Current version: 4.30.0 (149282)
New version: 4.33.1 (161083) 频繁重启
回滚到之前版本即可,不知道现在还有没有问题了
2.如何开放2375端口?
nano /lib/systemd/system/docker.serviceExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H 0.0.0.0:2375
3.如何更新docker存储位置
注意tee会覆盖之前的配置,请备份后操作!!!
tee /etc/docker/daemon.json <<-'EOF'
{"graph":"/mnt/docker"
}
EOF
4.如何卸载docker?
https://docs.docker.com/engine/install/ubuntu/#uninstall-docker-engine
八、相关文档
官网:https://www.docker.com/
镜像仓库:https://hub.docker.com/
docker命令:https://docs.docker.com/reference/cli/docker/
docker run命令:https://docs.docker.com/reference/cli/docker/container/run/
docker compose命令:https://docs.docker.com/reference/cli/docker/compose/
dockerd命令:https://docs.docker.com/reference/cli/dockerd/
dockerfile文件编写:
https://docs.docker.com/reference/dockerfile/
docker-compose文件编写:
https://docs.docker.com/reference/compose-file/
https://docs.docker.com/compose/compose-file/compose-file-v3/