掌握Docker命令与Dockerfile实战技巧:快速构建高效容器化应用

文章目录

  • [1. 介绍](#1. 介绍)
  • [2. 常用命令](#2. 常用命令)
    • [2.1 启动容器(前台交互模式)](#2.1 启动容器(前台交互模式))
    • [2.2 提交容器为镜像](#2.2 提交容器为镜像)
    • [2.3 打开多个终端](#2.3 打开多个终端)
    • [2.4 退出容器并删除容器](#2.4 退出容器并删除容器)
    • [2.5 保存容器为镜像](#2.5 保存容器为镜像)
  • [2.6 加载镜像](#2.6 加载镜像)
    • [2.7 删除镜像](#2.7 删除镜像)
  • [3. Dockerfile 实战](#3. Dockerfile 实战)
  • [3.1 介绍](#3.1 介绍)
    • [3.2 Dockerfile 基本结构](#3.2 Dockerfile 基本结构)
    • [3.3 Dockerfile 实战练习](#3.3 Dockerfile 实战练习)
    • [3.4 构建与运行镜像](#3.4 构建与运行镜像)
  • [4. 小结](#4. 小结)

1. 介绍

Docker 是现代开发和运维的必备工具,集成了容器技术的优势。本文将记录 Docker 的常用指令,并会随着使用经验的积累进行不定期更新。

2. 常用命令

2.1 启动容器(前台交互模式)

复制代码
docker run --privileged --volume /home/xx/project/:/project/ -it test_x86_deployed:latest /bin/bash
  • --privileged:授予容器额外的权限(例如设备访问)。
  • --volume /home/xx/project/:/project/:将宿主机的 /home/xx/project/ 目录挂载到容器内的 /project/ 目录。
  • -it:以交互模式启动容器,并连接终端。
  • /bin/bash:启动容器时进入 Bash 环境。

2.2 提交容器为镜像

复制代码
docker commit -m "更新内容描述" -a "作者信息" [容器id] [输出镜像名称]
  • -m:提交镜像时添加提交信息。
  • -a:设置提交的作者信息。

启动容器(后台模式)

复制代码
docker run --privileged --volume /home/xx/project/:/project/ -t -d test_x86_deployed:latest /bin/bash
  • -t:分配一个伪终端。
  • -d:以后台模式运行容器。

2.3 打开多个终端

复制代码
docker exec -it [容器id] bash
  • exec:在运行中的容器中执行命令。
  • -it:进入交互式终端。

2.4 退出容器并删除容器

复制代码
# 显示所有容器
docker ps -a

# 停止容器
docker stop [容器id_or_名称]

# 停止所有容器
docker stop $(docker ps -aq)

# 删除所有容器
docker rm $(docker ps -aq)
  • docker ps -a:列出所有容器(包括停止的)。
  • docker stop:停止容器。
  • docker rm:删除容器。

2.5 保存容器为镜像

复制代码
docker save -o <output-file>.tar <image-name>
  • -o .tar:指定保存的文件路径及名称。
  • :要保存的镜像名称。

2.6 加载镜像

复制代码
docker load -i <output-file>.tar
  • -i .tar:加载镜像文件。

2.7 删除镜像

复制代码
docker rmi [镜像id或镜像名称]
  • rmi:删除镜像。

3. Dockerfile 实战

3.1 介绍

Dockerfile 是一个文本文件,包含一系列指令,用于定义如何构建一个 Docker 镜像。通过这些指令,你可以指定操作系统、安装软件、配置环境变量、复制文件等,最终自动化构建容器镜像。

3.2 Dockerfile 基本结构

一个标准的 Dockerfile 包含以下指令:

复制代码
FROM:指定基础镜像。
RUN:在镜像中执行命令(如安装软件包)。
COPY 或 ADD:将文件从宿主机复制到镜像中。
WORKDIR:设置工作目录。
CMD 或 ENTRYPOINT:容器启动时执行的命令。
EXPOSE:声明容器暴露的端口。
ENV:设置环境变量。
USER:指定执行容器命令的用户。

3.3 Dockerfile 实战练习

以下是一个基本的 Dockerfile 示例,构建一个 Python 环境的镜像:

复制代码
# 1. 使用官方 Python 3.9 镜像作为基础镜像
FROM python:3.9-slim

# 2. 设置工作目录为 /app
WORKDIR /app

# 3. 将当前目录的文件复制到容器的 /app 目录
COPY . /app

# 4. 安装 Python 依赖
RUN pip install --no-cache-dir -r requirements.txt

# 5. 暴露容器的 80 端口(根据需要调整)
EXPOSE 80

# 6. 设置环境变量(可选)
ENV APP_ENV=production

# 7. 指定容器启动时执行的命令
CMD ["python", "app.py"]

3.4 构建与运行镜像

构建镜像:

复制代码
docker build -t my-python-app .
  • -t my-python-app:指定构建镜像的标签(名字)。
  • .:表示 Dockerfile 所在的当前目录。

运行容器:

复制代码
docker run -p 4000:80 my-python-app
  • -p 4000:80:将容器的 80 端口映射到宿主机的 4000 端口。
  • my-python-app:你之前构建的镜像名称。

4. 小结

本文介绍了 Docker 的一些常用命令和 Dockerfile 的基本使用。Dockerfile 可以帮助你快速构建和部署容器化应用,熟练掌握这些指令,将大大提升你在容器化应用开发与管理中的效率。如果你有其他问题,或希望了解更多 Docker 的高级功能,欢迎继续关注后续更新。

相关推荐
分布式存储与RustFS3 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
玉&心3 天前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas
xing-xing3 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
guo_wen_qiang3 天前
上传本地镜像到harbor中
docker·容器·持续部署
羑悻的小杀马特3 天前
Dockerfile 全景指南:从入门编写dockerfile到生产环境镜像优化实战,一步步带你从啃透制作指令到镜像制作落地!
docker·dockerfile·镜像制作
BianHuanShiZhe3 天前
docker常见命令
docker
正经教主3 天前
【FDE系列】阶段2:Day 43:Docker Compose — 多容器一键编排
人工智能·docker·fde
忆~遂愿3 天前
本地片库怎么在外面打开?Plex + cpolar 搭一套可远程访问的私人影音库
docker·容器
ChaITSimpleLove3 天前
云原生性能对决:JDK21虚拟线程+GraalVM vs .NET10/11 技术栈深度对比
微服务·云原生·serverless·graalvm native·native aot·runtime async·.net11/java21
Zhu7583 天前
docker环境,vLLM 部署 Qwen3.8-27B
docker·qwen·vllm