Docker-镜像使用
·
一、列出本地存储的所有镜像
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 的路径(默认是上下文路径下的 Dockerfile)docker 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 | 设置构建输出的格式(auto、plain、tty)。 |
--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查看本地镜像列表
问题处理
更多推荐
所有评论(0)