Docker 基本使用
常用工具
问题排查
Failed to start Docker Application Container Engine.
的解决办法:
极度稀有的场景,都是在虚拟机被外部杀掉的场景: https://stackoverflow.com/questions/40524602/error-creating-default-bridge-network-cannot-create-network-docker0-confli
sudo rm -rf /var/lib/docker/network
sudo systemctl start docker
docker 常用命令
安装部署:
sudo yum -y install docker
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -a -G docker "$USER"
# sudo groupadd docker
# sudo gpasswd -a "$USER" docker
观测运维:
docker stats
docker 不常用命令
save 和 load 一个 docker image 如此简单 docker save -o hello-world.tar hello-world:latest docker load -i hello-world.tar
docker compose 做什么的
1. 多容器编排的复杂性
场景 不用 Compose 使用 Compose
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
启动一个 Web 应用 手动 docker run 3-4 次 docker compose up 一键启动
容器间网络 手动创建网络、指定 IP 自动创建专用网络,服务名即 DNS
依赖关系 手动控制启动顺序 depends_on 自动处理
配置管理 一堆 -e -v -p 参数 统一写在 docker-compose.yml
2. 开发环境一致性
# docker-compose.yml 即文档
services:
web:
build: .
ports: ["8080:80"]
depends_on: [db, redis]
db:
image: postgres:15
volumes: ["pgdata:/var/lib/postgresql/data"]
redis:
image: redis:alpine
解决: "在我机器上能跑" 的问题
3. 与 Kubernetes 的关系
Docker Compose Kubernetes
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
定位 单机/开发环境 生产级集群编排
复杂度 低,YAML 简单 高,概念多
规模 单机多容器 跨节点数千 Pod
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
一句话总结
▌ Docker Compose = 单机多容器的"一键管理器"
解决开发、测试阶段快速搭建完整应用栈(Web + DB + Cache)的需求,是 K8s 的"轻量前身/补充"。
掌握下基本的 docker 技术吧
https://training.play-with-docker.com/
docker image 的基本管理
- docker images - 查看所有镜像及其大小
- docker system df - 查看 Docker 整体磁盘使用情况
- docker system df -v - 详细查看各镜像、容器、卷的占用
🧀 docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 50 12 59.18GB 29.13GB (49%)
Containers 54 1 568.5MB 568.5MB (99%)
Local Volumes 0 0 0B 0B
Build Cache 207 0 6.933GB 403.7MB
🧀 docker images
i Info → U In Use
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
fedora:latest 62d2b462296d 165MB 0B U
ghcr.io/metacubex/metacubexd:latest 3bce53bc7fa2 55.6MB 0B U
hello-world:latest 1b44b5a3e06a 10.1kB 0B U
martins3:fedora 6335fa894a32 1.88GB 0B U
openeuler/openeuler:22.03-lts-sp2 346898c7802a 317MB 0B
typesense/typesense:0.20.0 29958b412d6c 656MB 0B U
- 查看悬空镜像(dangling)
docker images -f “dangling=true”
一键清理所有未使用资源(推荐) 删除所有停止的容器、未使用的网络、悬空镜像、构建缓存
docker system prune -a
docker 网络问题排查
为什么开启 docker 后,内部的有的网络我就上不了
解决办法:
- 找到配置文件 docker inspect WinBoat –format ‘’
然后在这个文件里加顶层配置:
networks:
default:
ipam:
config:
- subnet: 192.168.251.0/24
加完以后重建:
docker compose -f $HOME/.winboat/docker-compose.yml down
docker compose -f $HOME/.winboat/docker-compose.yml up -d
验证:
docker network inspect winboat_default
# 可以看到,原来 172.20 的网段现在是开始走的 clash
ip route get 172.20.128.62
172.20.128.62 via 198.18.0.2 dev Meta table 2022 src 198.18.0.1 uid 1000
cache
问题
- docker vs podman ?
- https://github.com/containers 搞了好多项目
- 为什么 podman 不像 docker 不需要一个 daemon ?
- https://github.com/containers 搞了好多项目
- 所以,docker build 相对于 docker run 是走的不同的网络吗?
docker 如何实现的
- 如何制作最小的 docker image : 将 build 和 run 分开
- awesome-docker
Links
- https://stackoverflow.com/questions/19585028/i-lose-my-data-when-the-container-exits
- https://github.com/google/nsjail
- 这个东西有什么创新吗?
- 其他环境中的的 docker
- https://github.com/sickcodes/Docker-OSX
- https://github.com/dockur/windows : docker 中运行 windows
本站所有文章转发 CSDN 将按侵权追究法律责任,其它情况随意。