Docker基础知识整理

一直用docker,无论是服务器还是自己本地开发,常用也就几个命令,所以一直没有整理笔记。在搞NAS的时候,发现我可能还不太了解Docker

常用命令

一些常用命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
1. docker ps 列出容器 
   | -a 显示所有容器,包括未运行的
   | -l 显示最近创建的容器
   | -n 2 显示最近创建的 2 个容器
   | -s 显示总的文件大小
   
2. docker start|stop|restart <容器ID> # 启动|关闭|重启容器

3. docker exec -it <容器ID> /bin/bash # 进入容器bash

- docker image prune -a # 删除未被使用的镜像
- docker container prune # 删除所有停止运行的容器
- docker container ls --filter label=com.docker.compose.project # 查看哪些容器是通过docker-compose创建的
- docker volume prune # 删除所有未被挂在的卷
- docker network prune # 删除所有网络
- docker system prune # 删除 docker 所有资源

- docker-compose ps # 查看启动的服务
- docker-compose stop|start|restart {name} # 停止|启动|重启服务
- docker-compose down {name} # 停用移除容器以及网络相关
- docker-compose rm {name} # 删除停止状态容器,推荐先stop再删除
- docker-compose logs {name} # 查看某个容器的日志
- docker-compose logs -f {name} # 查看某个容器的日志<实时日志>
- docker-compose pause nginx    # 暂停nignx容器
- docker-compose unpause nginx  # 恢复ningx容器

关于yaml模板

docker-compose构建容器目前是我最喜欢的方式,单独创建一个目录存放docker-compose.yml同时把容器配置、缓存目录等放到一起,数据部分单独映射到其他目录,防止误删,干净又卫生。

  • 每个缩进级别由 两个空格 组成,一定不能使用tab键

  • 每个 冒号 后面一定要有一个空格(如果冒号结尾不需要空格,镜像名冒号不用空格)

  • 每个 短横杠 后有一个空格。多个项使用同样的缩进级别作为同一部分配置

关于Dockerfile

现在我已经很少用了,原来写的一些文笔记

  • RUN 的默认权限是 sudo,如果需要执行多个 RUN 操作,最好把他们合并到一起执行,因为每次执行一次 RUN 就会在 docker 上新建一层镜像

  • CMD 是docker run执行的时候使用,而 RUN 是在docker build的时候使用,一个 Dockerfile 只有最后一个 CMD 会起作用

  • EXPOSE 的端口可以不 PUBLISH,这样只有容器间可以访问,宿主之外无法访问。而 PUBLISH 的端口,可以不事先 EXPOSE,换句话说 PUBLISH 等于同时隐式定义了该端口要 EXPOSE。docker run -p就相当于 PUBLISH

  • 根据 FORM 命令指定的基本镜像,将每一条指令与从该基本镜像派生的所有子镜像比较,查看是否有使用完全相同的指令构建,如果没有则缓存无效

  • 对于 ADD 和 COPY 指令,检查镜像中的文件内容,并为每一个文件计算一个校验标识。将校验标识与现有镜像进行比较,如果文件中的任何内容发送了改变,则缓存无效

  • 除了 ADD 和 COPY 指令,缓存检查不会查看容器中的文件变化来确定缓存是否匹配

  • 缓存无效后,所有后续命令都会重新构建。

Licensed under CC BY-NC-SA 4.0
Last updated on Mar 26, 2025 10:32 CST