mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-25 19:25:27 +00:00
Add blank lines around headers
This commit is contained in:
@@ -44,6 +44,7 @@ RUN apt-get update && apt-get install -y \
|
||||
mercurial \
|
||||
subversion
|
||||
```
|
||||
|
||||
#### 构建缓存
|
||||
|
||||
在镜像的构建过程中,Docker 会遍历 `Dockerfile` 文件中的指令,然后按顺序执行。在执行每条指令之前,Docker 都会在缓存中查找是否已经存在可重用的镜像,如果有就使用现存的镜像,不再重复创建。如果你不想在构建过程中使用缓存,你可以在 `docker build` 命令中使用 `--no-cache=true` 选项。
|
||||
@@ -300,6 +301,7 @@ $ docker run postgres postgres --help
|
||||
```bash
|
||||
$ docker run --rm -it postgres bash
|
||||
```
|
||||
|
||||
#### VOLUME
|
||||
|
||||
`VOLUME` 指令用于暴露任何数据库存储文件,配置文件,或容器创建的文件和目录。强烈建议使用 `VOLUME` 来管理镜像中的可变部分和用户可以改变的部分。
|
||||
|
||||
@@ -22,6 +22,7 @@ $ sudo kill -SIGHUP $(pidof dockerd)
|
||||
$ sudo dmesg |grep dockerd
|
||||
$ sudo dmesg |grep runc
|
||||
```
|
||||
|
||||
### Docker 不响应时处理
|
||||
|
||||
可以杀死 dockerd 进程查看其堆栈调用情况。
|
||||
@@ -29,6 +30,7 @@ $ sudo dmesg |grep runc
|
||||
```bash
|
||||
$ sudo kill -SIGUSR1 $(pidof dockerd)
|
||||
```
|
||||
|
||||
### 重置 Docker 本地数据
|
||||
|
||||
*注意,本操作会移除所有的 Docker 本地数据,包括镜像和容器等。*
|
||||
@@ -43,6 +45,7 @@ $ docker system prune
|
||||
```bash
|
||||
$ sudo rm -rf /var/lib/docker
|
||||
```
|
||||
|
||||
### 常见故障排查
|
||||
|
||||
#### 容器启动失败
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
```bash
|
||||
docker inspect --format '{{ .State.Pid }}' <CONTAINER ID or NAME>
|
||||
```
|
||||
|
||||
### 如何获取某个容器的 IP 地址?
|
||||
|
||||
答:可以使用
|
||||
@@ -59,6 +60,7 @@ docker inspect --format '{{ .State.Pid }}' <CONTAINER ID or NAME>
|
||||
```bash
|
||||
docker inspect --format '{{ .NetworkSettings.IPAddress }}' <CONTAINER ID or NAME>
|
||||
```
|
||||
|
||||
### 如何给容器指定一个固定 IP 地址,而不是每次重启容器 IP 地址都会变?
|
||||
|
||||
答:使用以下命令启动容器可以使容器 IP 固定不变
|
||||
@@ -68,6 +70,7 @@ $ docker network create -d bridge --subnet 172.25.0.0/16 my-net
|
||||
|
||||
$ docker run --network=my-net --ip=172.25.3.3 -itd --name=my-container busybox
|
||||
```
|
||||
|
||||
### 如何临时退出一个正在交互的容器的终端,而不终止它?
|
||||
|
||||
答:按 `Ctrl-p Ctrl-q`。如果按 `Ctrl-c` 往往会让容器内应用进程终止,进而会终止容器。
|
||||
@@ -123,6 +126,7 @@ tmpfs 48G 228K 48G 1% /dev/shm
|
||||
lrwxrwxrwx. 1 root root 15 11月 17 13:43 docker -> /storage/docker
|
||||
[root@s26 lib]# service docker start
|
||||
```
|
||||
|
||||
### 使用内存和 swap 限制启动容器时候报警告:“WARNING:Your kernel does not support cgroup swap limit。WARNING:Your kernel does not support swap limit capabilities。Limitation discarded。”?
|
||||
|
||||
答:这是因为系统默认没有开启对内存和 swap 使用的统计功能,引入该功能会带来性能的下降。要开启该功能,可以采取如下操作:
|
||||
@@ -198,6 +202,7 @@ $ sudo ip netns show
|
||||
```bash
|
||||
$ sudo ip netns exec 1234 ifconfig eth0 172.17.0.100/16
|
||||
```
|
||||
|
||||
### 如何获取容器绑定到本地那个 veth 接口上?
|
||||
|
||||
答:Docker 容器启动后,会通过 veth 接口对连接到本地网桥,veth 接口命名跟容器命名毫无关系,十分难以找到对应关系。
|
||||
|
||||
@@ -53,6 +53,7 @@ Docker 安装配置
|
||||
3. 提交修改为新镜像
|
||||
4. 推送镜像到 Docker Hub(需创建账户)
|
||||
```
|
||||
|
||||
#### 第二阶段:核心开发(2-6 周)
|
||||
|
||||
**学习目标:**
|
||||
@@ -135,6 +136,7 @@ Docker Compose
|
||||
- 数据持久化
|
||||
- 备份恢复策略
|
||||
```
|
||||
|
||||
#### 第三阶段:生产优化(6-12 周)
|
||||
|
||||
**学习目标:**
|
||||
@@ -248,6 +250,7 @@ CI/CD 集成
|
||||
- 部署有状态应用
|
||||
- 配置持久化存储
|
||||
```
|
||||
|
||||
#### 第四阶段:专家深造(12+ 周)
|
||||
|
||||
**学习目标:**
|
||||
@@ -376,6 +379,7 @@ Kubernetes 进阶 (Week 24-36)
|
||||
├── 成本优化
|
||||
└── 开源贡献
|
||||
```
|
||||
|
||||
### 推荐学习资源
|
||||
|
||||
#### 官方文档
|
||||
@@ -475,6 +479,7 @@ docker volume / network / service
|
||||
docker compose up / down / logs / ps
|
||||
docker stats / events / inspect
|
||||
```
|
||||
|
||||
#### Kubernetes 认证
|
||||
|
||||
**认证路径:**
|
||||
@@ -561,6 +566,7 @@ A(要点):
|
||||
|
||||
4. SELinux / AppArmor(强制访问控制)
|
||||
```
|
||||
|
||||
#### Dockerfile 面试题
|
||||
|
||||
**Q4: 如何优化 Docker 镜像大小?**
|
||||
@@ -614,6 +620,7 @@ CMD ["--port", "8000"]
|
||||
# 运行 docker run image --debug 会执行:
|
||||
# python app.py --debug
|
||||
```
|
||||
|
||||
#### 网络和存储面试题
|
||||
|
||||
**Q6: Docker 网络驱动的区别?**
|
||||
@@ -664,6 +671,7 @@ tmpfs:
|
||||
- 用于临时文件、敏感数据
|
||||
- 性能最好,重启丢失
|
||||
```
|
||||
|
||||
#### 安全和生产面试题
|
||||
|
||||
**Q8: 如何提高 Docker 安全性?**
|
||||
@@ -758,6 +766,7 @@ A(要点):
|
||||
5. 触发 ArgoCD / Flux 自动部署
|
||||
6. 监控部署状态
|
||||
```
|
||||
|
||||
### 学习进度跟踪模板
|
||||
|
||||
```markdown
|
||||
@@ -805,6 +814,7 @@ A(要点):
|
||||
- [ ] 监控和日志系统
|
||||
- [ ] CI/CD 流程实现
|
||||
```
|
||||
|
||||
### 快速参考速查表
|
||||
|
||||
**常用命令速查:**
|
||||
|
||||
@@ -25,6 +25,7 @@ $ docker run --name rocky -it rockylinux:9 bash
|
||||
```bash
|
||||
$ docker run --name centos -it centos:7 bash
|
||||
```
|
||||
|
||||
### Dockerfile
|
||||
|
||||
请到 [CentOS 官方镜像文档目录](https://github.com/docker-library/docs/tree/master/centos) 查看。
|
||||
|
||||
@@ -13,6 +13,7 @@ MinIO 是一个非常轻量的服务,可以很简单的和其他应用的结
|
||||
```bash
|
||||
$ docker run -d -p 9000:9000 -p 9090:9090 minio/minio server /data --console-address ':9090'
|
||||
```
|
||||
|
||||
### 离线部署
|
||||
|
||||
许多生产环境是一般是没有公网资源的,这就需要从有公网资源的服务器上把镜像导出,然后导入到需要运行镜像的内网服务器。
|
||||
@@ -33,6 +34,7 @@ $ docker save -o minio.tar minio/minio:latest
|
||||
```bash
|
||||
$ docker load -i minio.tar
|
||||
```
|
||||
|
||||
#### 运行 minio
|
||||
|
||||
- 把 `/mnt/data` 改成要替换的数据目录
|
||||
@@ -49,6 +51,7 @@ $ sudo docker run -d -p 9000:9000 -p 9090:9090 --name minio1 \
|
||||
--restart=always \
|
||||
minio/minio server /data --console-address ':9090'
|
||||
```
|
||||
|
||||
#### 访问 web 管理页面
|
||||
|
||||
打开 `http://<server-ip>:9090` 访问 Web 控制台。
|
||||
|
||||
@@ -33,6 +33,7 @@ $ docker run -it --rm \
|
||||
mongo \
|
||||
sh -c 'exec mongo "some-mongo:27017/test"'
|
||||
```
|
||||
|
||||
### Dockerfile
|
||||
|
||||
请到 [Mongo 官方镜像文档目录](https://github.com/docker-library/docs/tree/master/mongo) 查看。
|
||||
|
||||
@@ -39,6 +39,7 @@ $ docker run -d \
|
||||
-v /path/nginx.conf:/etc/nginx/nginx.conf:ro \
|
||||
nginx
|
||||
```
|
||||
|
||||
### Dockerfile
|
||||
|
||||
请到 [Nginx 官方镜像文档目录](https://github.com/docker-library/docs/tree/master/nginx) 查看。
|
||||
|
||||
@@ -35,6 +35,7 @@ $ docker run -it --rm \
|
||||
node:20-alpine \
|
||||
node your-daemon-or-script.js
|
||||
```
|
||||
|
||||
### Dockerfile
|
||||
|
||||
请到 [Node 官方镜像文档目录](https://github.com/docker-library/docs/tree/master/node) 查看。
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
```bash
|
||||
$ docker run -it --rm -v "$PWD":/app -w /app php:alpine php your-script.php
|
||||
```
|
||||
|
||||
### Dockerfile
|
||||
|
||||
请到 [PHP 官方镜像文档目录](https://github.com/docker-library/docs/tree/master/php) 查看。
|
||||
|
||||
@@ -40,6 +40,7 @@ $ docker run -it --rm \
|
||||
redis \
|
||||
sh -c 'exec redis-cli -h some-redis'
|
||||
```
|
||||
|
||||
### Dockerfile
|
||||
|
||||
请到 [Redis 官方镜像文档目录](https://github.com/docker-library/docs/tree/master/redis) 查看。
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
$ docker run --name some-ubuntu -it ubuntu:20.04
|
||||
root@523c70904d54:/#
|
||||
```
|
||||
|
||||
### Dockerfile
|
||||
|
||||
请到 [Ubuntu 官方镜像文档目录](https://github.com/docker-library/docs/tree/master/ubuntu) 查看。
|
||||
|
||||
Reference in New Issue
Block a user