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

浙公网安备 33010602011771号