Docker 容器常用指令和 Dockerfile 基本语法详解
Docker 是一种轻量级的容器化技术,广泛用于开发、测试和部署应用。Docker 的强大之处在于其简单易用的命令行工具以及灵活的 Dockerfile 配置文件。本篇文章将详细介绍 Docker 容器的常用指令和 Dockerfile 的基本语法,以帮助你快速掌握 Docker 的使用方法。
一、Docker 容器常用指令
1.1 容器管理相关指令
-
docker run:启动一个新的容器
docker run -d -p 80:80 --name mynginx nginx解释:
-d表示后台运行容器,-p 80:80将主机的80端口映射到容器的80端口,--name mynginx为容器命名为mynginx,nginx表示使用的镜像。 -
docker ps:查看正在运行的容器
docker ps解释:列出所有正在运行的容器,包括容器ID、镜像名称、启动时间等信息。使用
docker ps -a查看所有容器(包括已停止的)。 -
docker stop:停止一个容器
docker stop mynginx解释:停止名为
mynginx的容器。 -
docker start:启动一个已停止的容器
docker start mynginx解释:启动名为
mynginx的容器。 -
docker rm:删除一个容器
docker rm mynginx解释:删除名为
mynginx的容器。如果容器正在运行,需要先停止再删除。 -
docker logs:查看容器日志
docker logs mynginx解释:显示名为
mynginx的容器的日志输出,常用于调试。 -
docker exec:在运行中的容器中执行命令
docker exec -it mynginx /bin/bash解释:在名为
mynginx的容器中启动一个交互式的bashShell,会话。
1.2 镜像管理相关指令
-
docker pull:下载镜像
docker pull nginx解释:从Docker Hub下载
nginx镜像到本地。 -
docker images:查看本地镜像列表
docker images解释:列出所有本地存储的Docker镜像。
-
docker rmi:删除镜像
docker rmi nginx解释:删除本地的
nginx镜像。 -
docker build:通过 Dockerfile 构建镜像
docker build -t myapp:v1 .解释:根据当前目录下的 Dockerfile 构建一个名为
myapp,版本为v1的镜像。
二、Dockerfile 基本语法
Dockerfile 是用于定义如何构建Docker镜像的脚本文件,包含一系列指令,每一条指令都会创建镜像的一层。下面是Dockerfile中常用的基本指令。
2.1 基础指令
-
FROM:指定基础镜像
FROM ubuntu:20.04解释:以
ubuntu:20.04作为基础镜像开始构建。 -
MAINTAINER(已弃用,用LABEL替代):定义镜像的作者信息
LABEL maintainer="youremail@example.com"解释:标识镜像的作者信息。
-
RUN:运行命令并创建镜像层
RUN apt-get update && apt-get install -y nginx解释:在镜像内执行命令,比如安装软件包
nginx。 -
COPY:将文件/目录从宿主机复制到镜像中
COPY ./index.html /usr/share/nginx/html/index.html解释:将当前目录下的
index.html文件复制到镜像中的指定目录。 -
ADD:功能类似于
COPY,但支持自动解压缩和从URL下载文件ADD https://example.com/app.tar.gz /app/解释:将一个远程的tar.gz文件下载并解压到镜像的
/app/目录。 -
CMD:指定容器启动时要执行的命令
CMD ["nginx", "-g", "daemon off;"]解释:设置容器启动时默认执行的命令。
CMD可以被docker run的命令行参数覆盖。 -
ENTRYPOINT:类似于
CMD,但不易被覆盖ENTRYPOINT ["nginx", "-g", "daemon off;"]解释:设置容器启动时必须执行的命令,通常与
CMD搭配使用。 -
EXPOSE:声明容器服务监听的端口
EXPOSE 80解释:声明容器运行时暴露的端口,方便外部访问。
-
ENV:设置环境变量
ENV APP_ENV=production解释:定义环境变量
APP_ENV,可以在后续的RUN指令或容器中使用。 -
VOLUME:创建挂载点,以共享数据
VOLUME ["/data"]解释:在容器中创建一个挂载点,外部可以挂载数据卷到此路径。
-
WORKDIR:设置工作目录
WORKDIR /app解释:设置接下来指令运行的默认工作目录。
2.2 完整示例
以下是一个简单的Dockerfile示例,用于构建一个Node.js应用的镜像:
# 使用Node.js官方基础镜像
FROM node:14
# 设置工作目录
WORKDIR /app
# 复制package.json和package-lock.json文件
COPY package*.json ./
# 安装依赖
RUN npm install
# 复制应用源代码
COPY . .
# 暴露应用服务的端口
EXPOSE 3000
# 启动应用
CMD ["node", "app.js"]
三、总结
Docker 提供了强大的命令行工具和灵活的 Dockerfile 语法,使得应用程序的容器化变得简单而高效。通过掌握常用 Docker 命令和 Dockerfile 的基本指令,可以快速构建、管理和部署容器化应用,提高开发和运维效率。


