当前位置: 首页 > 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/

相关文章:

  • Linux下的Socket编程
  • 小白的进阶之路系列之三----人工智能从初步到精通pytorch计算机视觉详解上
  • React+Taro 微信小程序做一个页面,背景图需贴手机屏幕最上边覆盖展示
  • 桥接智能制造:PROFINET与Devicenet混合架构赋能汽车擦净机器人升级
  • java每日精进 5.22【多数据源(读写分离)、事务】
  • 觉醒三境:在敦煌的风沙中寻找生命的纹路
  • 火山引擎火山云带宽价格
  • 【大模型面试每日一题】Day 26:从伦理角度,大模型可能存在哪些潜在风险?技术上如何实现内容安全控制(如RLHF、红队测试)?
  • Ubuntu-多显示器黑屏问题及nvidia显卡驱动安装
  • 当物联网“芯”闯入纳米世界:ESP32-S3驱动的原子力显微镜能走多远?
  • 自制操作系统day7(获取按键编码、FIFO缓冲区、鼠标、键盘控制器(Keyboard Controller, KBC)、PS/2协议)
  • 鸿蒙Flutter实战:23-混合开发详解-3-源码模式引入
  • FreeBSD14.2因为爆内存而导致Xfce4视窗被卡,桌面变黑色,只能看到鼠标在窗体中心,鼠标无反应,键盘无反应
  • 自制操作系统day8 (鼠标数据取得、通往32位模式之路、A20GATE、切换到保护模式、控制寄存器cr0-cr4以及cr8、ALIGNB)
  • 创建信任所有证书的HttpClient:Java 实现 HTTPS 接口调用,等效于curl -k
  • 【Java面试】从Spring Boot到Kafka:技术栈与业务场景全面剖析
  • 养生新策:五维开启健康生活
  • 青少年编程与数学 02-020 C#程序设计基础 01课题、C#编程概要
  • 现代生活健康养生新策略
  • STM32:0.96寸OLED屏驱动全解析——SSD1306 I2C通信与显存配置指南
  • 网站要怎么做才能让360收录/网络营销企业案例分析
  • 网站 公安 备案/优秀网站网页设计图片
  • 电商小程序需要什么资质/南京seo域名
  • python做网站有优势/seo主要是指优化
  • 如何自己做网站一年赚一亿/淘宝热搜关键词排行榜
  • 基于jsp的社团组织网站建设/搜索引擎优化工作