docker run > 找image > docker hub > 安装image > 新建一个程序
一切从docker hub寻找
1. Docker 命令行工具基础
- 获取帮助:使用
docker help可以显示所有可用命令的完整列表。若需特定命令的详细信息,可使用docker help <COMMAND>(如docker help cp)。 - 常用容器操作命令:
- 运行/创建:
docker run用于创建并启动容器。 - 列举:
docker ps列出正在运行的容器;docker ps -a列出所有容器(包括已退出的)。 - 停止/启动/重启:
docker stop、docker start和docker restart。 - 查看输出:
docker logs查看容器日志,使用-f或--follow标志可以持续监视日志更新。 - 执行额外进程:
docker exec可以在正在运行的容器内启动一个新进程。
- 运行/创建:
2. 容器的运行模式与隔离
- 后台运行(守护模式):使用
--detach或-d标志,容器将在后台运行,不会占用当前终端。 - 交互模式:使用
--interactive(-i) 和--tty(-t) 标志,可以为容器分配虚拟终端并保持标准输入开放,适合运行 shell 等程序。 - PID 命名空间隔离:这是 Docker 的关键特性。每个容器都有自己独立的 PID 命名空间,这意味着容器内的进程无法看到或影响主机或其他容器中的进程。每个容器内都有自己的 PID 1(通常是 init 进程)。
3. 容器标识与元数据管理
- 容器标识符:每个容器都有三种标识方式:
- 十六进制 ID:全长为 1024 位的唯一标识符(通常截断为 12 位显示)。
- 人性化名称:由 Docker 自动生成或通过
--name显式指定。如果名称冲突,需先删除旧容器或使用docker rename重命名。 - CID 文件:使用
--cidfile标志将容器 ID 写入特定文件,常用于自动化脚本。
- 容器状态:容器总是处于以下四种状态之一:运行中 (Running)、暂停 (Paused)、重新启动 (Restarting) 或 已退出 (Exited)。
4. 构建与环境无关的系统
- 环境变量注入:使用
-e或--env标志将配置信息注入容器。这种方式允许在不修改镜像的情况下改变程序的行为。 - 只读文件系统:通过
--read-only标志启动容器,可以将容器的文件系统设置为只读,这有助于提高安全性并防止未经授权的改动。
5. 容器的持久化与可靠性策略
- 自动重启策略:在创建容器时设置
--restart标志(如always、on-failure),可以在容器崩溃或系统重启后自动恢复服务。 - 使用 init/supervisor:对于需要维持运行状态或管理多个进程的容器,可以使用
supervisord或启动脚本来管理容器内的进程。
6. 清理容器
- 删除容器:使用
docker rm删除已停止的容器。若要删除正在运行的容器,可以使用docker rm -f(强制删除)。 - 自动清理:在
docker run时添加--rm标志,容器在退出时会自动删除,非常适合临时测试。
比喻理解: 如果说镜像是一张“光盘快照”,那么运行中的容器就像是根据这张光盘启动的一台“虚拟游戏机”。PID 命名空间则是这台游戏机的外壳,它确保你在这一台机器上玩游戏时,不会干扰到旁边另一台机器的存档或进程。而环境变量就像是游戏机开机前的参数设置(如语言或难度),让你无需重新制作光盘也能调整游戏体验。