一、列出本地存储的所有镜像

docker images

二、查找某个镜像

docker search 某个镜像的名字

三、下拉某个镜像

docker pull 某个镜像的名字

四、查看占用空间

docker system df

五、删除镜像

docker rmi 镜像id或者镜像名称

六、启动镜像

docker run :创建一个新的容器并运行一个命令

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明:

  • -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
  • -d: 后台运行容器,并返回容器ID;
  • -i: 以交互模式运行容器,通常与 -t 同时使用;
  • -P: 随机端口映射,容器内部端口随机映射到主机的端口
  • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
  • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
  • –name=“nginx-lb”: 为容器指定一个名称;
  • –dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
  • –dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
  • -h “mars”: 指定容器的hostname;
  • -e username=“ritchie”: 设置环境变量;
  • –env-file=[]: 从指定文件读入环境变量;
  • –cpuset=“0-2” or --cpuset=“0,1,2”: 绑定容器到指定CPU运行;
  • **- m:**设置容器使用内存最大值;
  • –net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
  • –link=[]: 添加链接到另一个容器;
  • –expose=[]: 开放一个端口或一组端口;
  • –volume , -v: 绑定一个卷

七、构建镜像

docker build 命令用于从 Dockerfile 和 构建上下文 中构建 Docker 镜像。它是将应用容器化的核心步骤。

  • Dockerfile:一个文本文件,包含了一系列指令(如 FROM、RUN、COPY),定义了如何构建镜像。
  • 构建上下文:执行 docker build 时指定的目录或 URL,Docker 会将该目录下的所有文件发送给 Docker 守护进程,以便在构建过程中使用(例如通过 COPY 指令)。
docker build [OPTIONS] PATH
  • PATH:构建上下文的路径,可以是本地目录(如 .),也可以是 Git 仓库 URL 或 tar 包。
  • OPTIONS:一系列可选参数,用于定制构建行为。
选项说明
-t, --tag list为镜像指定名称和标签,格式为 name:tag(可多次使用,添加多个标签)。例如 -t myapp:1.0
-f, --file string指定 Dockerfile 的路径(默认是上下文路径下的 Dockerfiledocker build -t myapp -f docker/Dockerfile.prod .
--no-cache构建镜像时不使用缓存,所有步骤都会重新执行docker build --no-cache -t myapp .
--pull尝试拉取基础镜像的最新版本。
--build-arg list设置构建时的变量,例如 docker build --build-arg VERSION=20.04 -t myubuntu .,可在 Dockerfile 中用 ARG 引用。
--target string在多阶段构建中,指定要构建的目标阶段。
--progress string设置构建输出的格式(autoplaintty)。
--secret--ssh用于安全地传递敏感信息或 SSH 密钥(高级用法)。

使用 .dockerignore 文件
当你执行 docker build . 时,. 表示当前目录为构建上下文。Docker 客户端会将当前目录下的所有文件(包括子目录)打包发送给 Docker 守护进程。注意:发送的文件越多,构建越慢,且可能包含敏感信息。因此:使用 .dockerignore 文件:类似于 .gitignore,列出不需要发送到守护进程的文件或目录(如 node_modules、*.log、.git),可以显著提升构建性能并保证安全。
示例:.dockerignore

node_modules
*.pyc
.git
Dockerfile
.dockerignore

基础示例

假设我们有一个简单的 Python Flask 应用,目录结构如下:

myapp/ # 主目录
├── app.py
├── requirements.txt
└── Dockerfile

app.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
    return "Hello, Docker!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

requirements.txt:

flask

Dockerfile:

# 使用官方 Python 镜像作为基础
FROM python:3.9-slim

# 设置工作目录
WORKDIR /app

# 复制依赖文件并安装(利用缓存)
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 复制应用代码
COPY . .

# 声明容器运行时监听的端口
EXPOSE 5000

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

在 myapp 目录下执行:

docker build -t my-flask-app:latest .
  • -t my-flask-app:latest:给镜像打上名称和标签。
  • .:指定当前目录为构建上下文,既为myapp文件夹里面的所有文件

结束后使用docker images查看本地镜像列表

问题处理

更多推荐