Docker实战
文章目录一、Docker架构二、Docker安装1.官方方式2.aliyun方式3.linuxmirrors方式(推荐)4.1panel方式(强烈推荐)4.1 debian4.2 ubuntu5.安装docker-compose三、配置镜像源1.镜像源检测脚本2.配置加速源和代理3.配置系统代理四、容器镜像服务五、macvlan妈妈再也不用担心主机端口冲突六、watchtower容器自动更新七、常见问题1.windows11 docker不断重启2.如何开放2375端口3.如何更新docker存储位置4.如何卸载docker5.Docker Unix / TCP socket (with unix:///var/run/docker.sock): Permission Denied八、相关文档一、Docker架构https://docs.docker.com/get-started/docker-overview/#docker-architecture二、Docker安装1.官方方式https://docs.docker.com/engine/install/ubuntu///安装Dockercurl-fsSLhttps://get.docker.com|bash-sdocker--mirrorAliyun systemctl startdockersystemctlenabledocker2.aliyun方式https://help.aliyun.com/zh/ecs/use-cases/install-and-use-docker#59d024a3e32um3.linuxmirrors方式(推荐)https://linuxmirrors.cn/#dockerbash(curl-sSLhttps://gitee.com/SuperManito/LinuxMirrors/raw/main/DockerInstallation.sh)\--sourcemirrors.aliyun.com/docker-ce\--source-registry docker.1ms.run\--protocolhttp\--use-intranet-sourcefalse\--install-latesttrue\--close-firewalltrue\--ignore-backup-tips4.1panel方式(强烈推荐)https://1panel.cn/docs/installation/online_installation4.1 debiancurl-sSLhttps://resource.fit2cloud.com/1panel/package/quick_start.sh-oquick_start.shbashquick_start.sh4.2 ubuntucurl-sSLhttps://resource.fit2cloud.com/1panel/package/quick_start.sh-oquick_start.shsudobashquick_start.sh5.安装docker-composehttps://github.com/docker/compose/releasescurl-Lhttps://github.com/docker/compose/releases/download/v2.36.1/docker-compose-$(uname-s)-$(uname-m)-o/usr/local/bin/docker-composechmodx /usr/local/bin/docker-composeln-s/usr/local/bin/docker-compose /usr/bin/docker-composedocker-compose--version相关操作docker-compose-fdocker-compose.yml up-ddocker-compose-fdocker-compose.yml stopdocker-compose-fdocker-compose.yml down三、配置镜像源https://cr.console.aliyun.com/cn-hangzhou/instances/mirrorsDocker 镜像库国内加速的几种方法1.镜像源检测脚本#!/bin/bash#https://github.com/docker-practice/docker-registry-cn-mirror-test/blob/master/.github/workflows/ci.yamldockerversiondockerinforegistrys 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 imagelibrary/nginx:1.25.1-alpineforregistryin$registrysdoecho::group::Test$registry/$imagedockerpull$registry/$image\(echo-e\033[32m$registryis good\033[0m\;echo::warning fileREADME.md,line1,col0::OK [$registry] is good)\||(echo-e\033[31m$registryis outdated\033[0m\;echo::error fileREADME.md,line1,col0::X [$registry] is outdated)dockerrmi$registry/$image||trueecho::endgroup::done2.配置加速源和代理curl-fsSLhttps://gitee.com/duhongming/tools/raw/master/set_proxy.sh|bash3.配置系统代理curl-fsSLhttps://gitee.com/duhongming/tools/raw/master/set_proxy.sh|bash四、容器镜像服务https://cr.console.aliyun.com/cn-hangzhou/instance/dashboard//登录阿里云Dockerdockerlogin--username$MY_ALIYUN_DOCKER_USERNAME--password$MY_ALIYUN_DOCKER_PASSWORDregistry.cn-hangzhou.aliyuncs.com //登录官网Dockerdockerlogin--username$MY_OFFICIAL_DOCKER_USERNAME--password$MY_OFFICIAL_DOCKER_PASSWORD//harbordockerlogin--usernameadmin--passwordHarbor12345 harbor.home.love //artifactorydockerlogin--usernameadmin--passwordpassword artifactory.home.love五、macvlan妈妈再也不用担心主机端口冲突https://docs.docker.com/engine/network/drivers/macvlan/解决了一台主机映射端口可以重复因为ip不一样了dockernetworkrmmacvlan;dockernetwork create-dmacvlan\--subnet192.168.128.0/17--gateway192.168.128.1\--ip-range192.168.255.0/24\-oparenteth0 macvlan为了安全默认禁用宿主机和macvlan网络相通解决宿主机和macvlan不通的问题iplinkaddmynetlinketh0typemacvlan mode bridgeipaddradd192.168.255.254 dev mynetiplinksetmynet upiprouteadd192.168.255.253 dev mynetdocker通过设置–network、–ip完成macvlan设置dockerrm-fopenresty;dockerrun--nameopenresty\--networkmacvlan--ip192.168.255.253-dp80:80\-eTZAsia/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\--restartalways\openresty/openresty:alpinedocker-compose通过设置networks.macvlan.ipv4_address完成macvlan设置# https://github.com/firefly-iii/docker/blob/main/docker-compose-importer.ymlversion: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 URLs will give 500 | Server Error#services: app: image: fireflyiii/core:latest hostname: app container_name: firefly_iii_core# networks:# - firefly_iiirestart: always volumes: - firefly_iii_upload:/var/www/html/storage/upload env_file: .env ports: -80:8080networks: macvlan: ipv4_address:192.168.255.250 importer: image: fireflyiii/data-importer:latest hostname: importer restart: always container_name: firefly_iii_importer# networks:# - firefly_iiiports: -81:8080depends_on: - app env_file: .importer.env networks: macvlan: ipv4_address:192.168.255.240 cron:## 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: alpine container_name: firefly_iii_cron restart: always command:sh-cecho\0 3 * * * wget -qO- http://192.168.255.250:8080/api/v1/cron/REPLACEME\| crontab - crond -f -L /dev/stdout# networks:# - firefly_iiivolumes: firefly_iii_upload: firefly_iii_db: networks:# firefly_iii:# driver: bridgemacvlan: external:true六、watchtower容器自动更新https://github.com/containrrr/watchtowerhttps://containrrr.dev/watchtower/手动运行一次dockerrun--rm\-v/var/run/docker.sock:/var/run/docker.sock\containrrr/watchtower\--run-once定期运行dockerrm-fwatchtower;dockerrun-d\--namewatchtower\-eTZAsia/Shanghai\# -e REPO_USER \# -e REPO_PASS \-v/var/run/docker.sock:/var/run/docker.sock\--restartalways\containrrr/watchtower\--schedule0 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-Hfd://--containerd/run/containerd/containerd.sock-H0.0.0.0:23753.如何更新docker存储位置注意tee会覆盖之前的配置请备份后操作tee/etc/docker/daemon.json-EOF { graph:/mnt/docker } EOF4.如何卸载dockerhttps://docs.docker.com/engine/install/ubuntu/#uninstall-docker-engine5.Docker Unix / TCP socket (with unix:///var/run/docker.sock): Permission Deniedhttps://blog.csdn.net/a15561415881/article/details/103145964id $USER sudo groupadd docker sudo usermod -aG docker $USER sudo chmod arwx /var/run/docker.sock sudo chmod arwx /var/run/docker.pid八、相关文档官网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/