docker常用指令

docker常用指令

启动

sudo systemctl start docker

重启

sudo systemctl restart docker

启动容器

docker start <容器ID或名称>

查看运行中的容器

docker ps

关闭容器

docker stop 容器id或名称

删除容器

docker rm <容器ID或名称>

查找镜像

docker search image

拉取镜像

docker pull image:version

查看镜像

docker images

删除镜像(删除前确保没有该镜像的容器)

docker rmi image

docker数据管理

容器数据存储在它的存储层中,但存储层会随着容器的删除而消失,所以要挂载数据卷,将存储层的地址映射到真实的地址,将数据存储独立于容器之外。

# 创建一个数据卷
docker volume create my-vol
# 查看所有的数据卷
docker volume ls
# 查看数据卷的具体信息
docker inspect web
# 删除指定的数据卷
docker volume rm my-vol

挂载数据卷的方式,有两种,一种直接存在宿主机中,另一种弄到docker的数据卷中

docker run -d -v /宿主机路径:/容器路径 镜像名
docker run -d -v 数据卷名称:/容器路径 镜像名

Dockerfile

Dockerfile 是一个文本文件,包含了一系列指令,用于定义如何构建一个 Docker 镜像。通过 Dockerfile,你可以指定基础镜像、安装软件、配置环境、复制文件等操作,最终生成一个可运行的容器镜像。

Dockerfile 是 Docker 镜像构建的核心,它使得镜像的构建过程可重复、可自动化。

Dockerfile 常用指令

指令 说明
FROM 指定基础镜像,例如 FROM ubuntu:20.04
LABEL 添加元数据,例如 LABEL version="1.0"
RUN 执行命令并创建新的镜像层,例如 RUN apt-get update && apt-get install -y curl
COPY 将文件或目录从构建上下文复制到镜像中,例如 COPY ./app /app
ADD 类似于 COPY,但支持自动解压和远程 URL,例如 ADD https://example.com/file.tar.gz /app
WORKDIR 设置工作目录,例如 WORKDIR /app
ENV 设置环境变量,例如 ENV NODE_ENV=production
ARG 定义构建时的变量,例如 ARG VERSION=1.0
EXPOSE 声明容器运行时监听的端口,例如 EXPOSE 80
CMD 指定容器启动时执行的默认命令,例如 CMD ["npm", "start"]
ENTRYPOINT 指定容器启动时执行的主命令,例如 ENTRYPOINT ["python", "app.py"]
VOLUME 定义匿名卷,例如 VOLUME /data
USER 指定运行命令的用户,例如 USER node

例子:

# 使用官方 Python 镜像作为基础镜像(会先检查本地是否存在这个镜像,没有再拉取)
FROM python:3.9-slim

# 设置工作目录
WORKDIR /app

# 复制当前目录下的文件到镜像中
COPY . /app

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

# 暴露端口
EXPOSE 8000

# 设置环境变量
ENV FLASK_APP=app.py

# 启动命令
CMD ["flask", "run", "--host=0.0.0.0"]

Docker Compose

用于配置启动的应用,通过文件docker-compose.yml 实现一个文件创建和启动多个服务。 文件基本结构如下:

版本(version): 指定 Compose 文件格式的版本。版本决定了可用的配置选项。

服务(services): 定义了应用中的每个容器(服务)。每个服务可以使用不同的镜像、环境设置和依赖关系。

  • 镜像(image): 从指定的镜像中启动容器,可以是存储仓库、标签以及镜像 ID。
  • 命令(command): 可选,覆盖容器启动后默认执行的命令。在启动服务时运行特定的命令或脚本,常用于启动应用程序、执行初始化脚本等。
  • 端口(ports): 可选,映射容器和宿主机的端口。
  • 依赖(depends_on): 依赖配置的选项,意思是如果服务启动是如果有依赖于其他服务的,先启动被依赖的服务,启动完成后在启动该服务。
  • 环境变量(environment): 可选,设置服务运行所需的环境变量。
  • 重启(restart): 可选,控制容器的重启策略。在容器退出时,根据指定的策略自动重启容器。
  • 服务卷(volumes): 可选,定义服务使用的卷,用于数据持久化或在容器之间共享数据。
  • 构建(build): 指定构建镜像的 dockerfile 的上下文路径,或者详细配置对象。

网络(networks): 定义了容器间的网络连接。

卷(volumes): 用于数据持久化和共享的数据卷定义。常用于数据库存储、配置文件、日志等数据的持久化。

docker-compose.yml 例子:

version: '3.8'  # 指定 Docker Compose 版本

services:
  web:  # 定义一个名为 web 的服务
    image: nginx:latest  # 使用 nginx 镜像
    ports:
      - "80:80"  # 将宿主机的 80 端口映射到容器的 80 端口
    volumes:
      - ./html:/usr/share/nginx/html  # 挂载本地目录到容器

  db:  # 定义一个名为 db 的服务
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example  # 设置环境变量
    volumes:
      - db_data:/var/lib/mysql  # 使用命名卷持久化数据

volumes:
  db_data:  # 定义一个名为 db_data 的卷

常用指令:

启动服务

docker-compose up -d 

停止服务

docker-compose down

查看服务状态:

docker-compose ps

重启服务

docker-compose build

进入某个服务的容器

docker-compose exec serviceName bash
posted @ 2025-03-09 11:25  Liang2003  阅读(34)  评论(0)    收藏  举报