当前位置: 首页 > news >正文

Docker实战

文章目录

  • 一、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/

http://www.xdnf.cn/news/579979.html

相关文章:

  • docker network 自定义网络配置与管理指南
  • 数字孪生技术如何重塑能源产业?
  • 生成树协议(STP)配置详解:避免网络环路的最佳实践
  • java基础(api)
  • 第八天的尝试
  • 印度语言指令驱动的无人机导航!UAV-VLN:端到端视觉语言导航助力无人机自主飞行
  • AllToAll通信为什么用于EP并行?
  • Linux性能监控工具nmon
  • 【开源解析】基于深度学习的双色球预测系统:从数据获取到可视化分析
  • Axure系统原型设计首页模版方案
  • InetAddress 类详解
  • AI大模型技术全景解析:核心原理与关键技术拆解
  • 【C++ 真题】P5736 【深基7.例2】质数筛
  • HJ23 删除字符串中出现次数最少的字符【牛客网】
  • 《Effective Java(第三版)》笔记
  • ESP32-S3 (ESP IDF 5.4.1 - LVGL 9.2.0)九宫格拼音输入法
  • 工业控制解决方案三段论
  • Java 实现四种单例(都是线程安全)
  • 【Linux】了解 消息队列 system V信号量 IPC原理
  • 常见字符串相似度算法详解
  • 使用Pandoc实现Markdown和Word文档的双向转换
  • 基于LiveData和ViewModel的路线管理实现(带PopupWindow删除功能)
  • 人工智能价值:技术革命下的职业新坐标
  • 【java】Java注解
  • 通信协议详解(分层技术解析)
  • 4-码蹄集600题基础python篇
  • 16、Python运算符全解析:位运算实战、字符串拼接与列表合并技巧
  • 如何在电脑上登录多个抖音账号?多开不同IP技巧分解
  • 【Redis】AOF日志
  • 8天Python从入门到精通【itheima】-26~28