docker学习(安装及教程)
1、安装
通过“ wsl.exe -d Ubuntu” 启动,“ exit ” 退出

2、镜像使用命令
| 常用命令 | |
|---|---|
| 拉取镜像 | docker pull nginx:1.23(1.23为标签,可下载特定版本的镜像,默认为 latest) |
| 运行镜像 | docker run nginx |
| 为镜像创建新标签 | docker tag nginx:latest my-nginx:v1 |
| 推送镜像到docker hub | docker tag my-image your_username/my-image:1.0(使用登录的 Docker Hub 用户给镜像打标签) docker push your_username/my-image:1.0 |
| 查看所有镜像列表 | docker images |
| 查看指定镜像详细信息 | docker inspect nginx |
| 查看镜像的构建历史 | docker history nginx |
| 删除nginx镜像(需先删除所有用它的容器) | docker rmi nginx 当镜像有多个标签时,删除一个标签只会移除该标签引用,不会真正删除镜像数据,需要使用 docker rmi 加上镜像 ID 才能彻底删除镜像文件。镜像 ID 可以通过 docker images 命令进行查看。 |
| 清理镜像缓存 | docker image prune 不加参数时,这个命令只删除悬空镜像(没有标签且不被任何镜像引用的中间层)。加上 -a 参数会删除所有未被容器或镜像引用的镜像,包括构建缓存和旧版本镜像。 清理完成后可以用 docker system df 查看磁盘使用情况,确认空间已经释放。定期清理镜像缓存能有效节省存储空间,保持 Docker 环境整洁高效。 |
| 查找镜像 | docker search mysql 镜像的查找可以通过 Docker Hub 网站或命令行完成,使用 docker search 命令能在终端直接搜索公共镜像。 官方镜像由 Docker 官方团队维护,通常更可靠安全,建议优先选择带有 "OFFICIAL" 标记的镜像。
|
| 镜像的导出 | docker save -o nginx.tar nginx:latest |
| 镜像的导入 | docker load -i nginx.tar |
3、容器使用命令
在获取镜像并下载完成之后,可以通过 docker run 命令运行容器,这个命令的基本格式为:
$ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
常用参数说明:
-
-d:以后台模式运行容器。 -
-p:端口映射,格式为主机端口号:容器端口号,例如8080:80。 -
--name:指定容器名称。 -
-it:保持交互式终端连接。 -
-v:挂载主机目录到容器,格式为-v 主机目录:容器目录。 -
--rm:容器停止时自动删除容器。 -
--env或-e:设置环境变量,格式为--env 变量名=变量值。 -
--network:指定容器的网络模式。 -
--restart:容器的重启策略。 -
-u:指定用户运行,格式为-u 用户名。
以 nginx 为例,如果我们想要启动一个 nginx 容器,可以通过以下命令进行启动。
$ docker run -d -p 8080:80 --name nginx-container nginx
通过以上命令,Docker 会进行以下操作:
-
使用指定的
nginx镜像构建容器。 -
允许容器在后台运行。
-
将容器的
80端口映射到主机的8080端口上。 -
指定容器名称为
nginx-container。 -
启动容器。
在容器启动后,通过主机的 IP 地址就能看到 nginx 的默认欢迎页面了。
注:如果每次运行容器使用 docker run 命令,则每次都都会创建一个新的容器实例,即使使用相同的镜像和参数也会生成不同的容器。
| 命令 | |
|---|---|
| 运行Nginx | docker run -d -p 8080:80 --name my-nginx nginx Nginx是常用的网页服务器; -d:后台运行容器(不会占着终端) -p 8080:80:把容器的80端口映射到电脑的8080端口(访问电脑的8080端口就等于访问容器的80端口) --name my-nginx:给容器起个名字叫“my-nginx”,方便后续操作 打开浏览器输入http://localhost:8080,能看到Nginx的默认欢迎页面! |
| 停止my-nginx容器 | docker stop my-nginx |
| 启动已停止的my-nginx | docker start my-nginx |
| 删除my-nginx容器(需先停止) | docker rm my-nginx |
| 查看容器详细信息 | docker inspect my-nginx |
| 查看容器的日志输出(排查问题) | docker logs (-f) my-nginx 加上 -f 参数可以实时查看日志输出 |
| 查看容器资源使用情况,包括 CPU、内存、网络和磁盘 I/O | docker stats |
| 查看正在运行的容器 | docker ps |
| 查看所有容器 | docker ps -a |
| 容器的导出 | docker export -o nginx-container.tar nginx-container 导出到当前目录下的 nginx-container.tar 文件中 |
| 容器的导入 | docker import nginx-container.tar my-nginx:v1 |
1)进入容器内部
当容器在后台运行时,我们可以通过 docker exec 命令来进入运行中的容器内部执行命令或查看状态。
$ docker exec -it my-nginx /bin/bash
以上命令会启动一个bash shell 让我们能与 my-nginx 容器进行交互,-it 参数会保持终端交互连接。
通过这种方式可以像操作普通 Linux 系统一样在容器内执行命令、查看文件或修改配置。容器启动后,Docker 会为它分配唯一的 ID 和名称,自动设置网络和存储,并根据镜像定义启动指定的进程。
2)私有镜像仓库
4、docker file
Dockerfile:Dockerfile 是用来构建 Docker 镜像的文本文件,它包含了一系列的指令和配置,用于告诉 Docker 如何构建一个镜像。
使用 Dockerfile 可以自动构建镜像,这样在不同的电脑上都能得到一样的镜像。Dockerfile 里可以写很多不同的指令,比如指定用什么基础镜像、往镜像里放什么文件、安装什么软件、设置什么环境变量、打开什么端口、运行什么命令等。每一条指令都会在镜像里新建一层,所有层叠在一起就是最终的镜像。这种分层的方式让镜像构建更快,也更容易分享和重复使用。
在实际开发中,虽然官方镜像提供了基础运行环境,但项目通常需要特定的配置、依赖、文件、程序代码,这时我们就需要用 Dockerfile 来定制自己的镜像。
以 Web 开发为例,我们可以在官方 nginx 镜像基础上,添加自定义的网页文件、修改配置文件、安装必要的工具等。这样就能保证开发、测试和线上环境完全一致,不会因为环境不同出问题。
具体操作如下:
-
创建一个新的空白目录
myweb。 -
在目录
myweb下创建一个文本文件,命名为Dockerfile,并在文件中添加如下内容。
FROM nginx:latest RUN echo '<h1>My Custom Nginx Page</h1>' > /usr/share/nginx/html/index.html EXPOSE 80
这个 Dockerfile 做了三件事:第一行 FROM nginx:latest 指定使用最新版 nginx 作为基础镜像;第二行 RUN 命令将网页内容放到容器的 nginx 默认的网页目录中;第三行 EXPOSE 80 声明容器会使用 80 端口。
-
在
myweb目录下运行命令docker build -t my-web .进行自定义 nginx 镜像构建。
这样就完成了自定义 nginx 镜像的构建。其中 -t my-web 是给新镜像命名为 my-web,最后的点表示使用当前目录的 Dockerfile。
构建完成后可以用 docker images 查看新构建的镜像。
$ docker images
-
运行
docker run -d -p 80:80 my-web启动容器。
这时访问主机的 80 端口就能看到自定义网页了。
1)docker常用命令
| 命令 | 描述 |
|---|---|
| FROM | 指定基础镜像,用于后续指令构建。 |
| LABEL | 添加镜像的元数据,使用键值对的形式。 |
| RUN | 创建镜像时,在镜像中要执行的命令。 |
| CMD | 指定容器启动时默认要执行的命令(可以被覆盖)。如果执行 docker run 后面跟启动命令会被覆盖掉。 |
| ENTRYPOINT | 设置容器创建时的主要命令(不可被覆盖)。 |
| SHELL | 覆盖Docker中默认的shell,用于RUN、CMD和ENTRYPOINT指令。 |
| EXPOSE | 声明容器运行时监听的特定网络端口。 |
| ENV | 设置环境变量 |
| COPY | 将文件或目录复制到镜像中。 |
FROM 指令:FROM 指令用于指定基础镜像,必须是 Dockerfile 的第一个指令。基础镜像可以是官方镜像如
ubuntu:20.04,也可以是用户自定义的镜像。如果不指定标签,默认使用latest标签。例如FROM nginx表示基于最新版 nginx 镜像构建。每个 Dockerfile 可以有多个 FROM 指令用于构建多阶段镜像,但最终只会保留最后一个 FROM 生成的镜像层。基础镜像的选择直接影响最终镜像的大小和安全性,通常推荐使用官方维护的最小化镜像如alpine版本。最后的AS name可以选择为新生成阶段指定名称。
-
FROM 指令格式:
FROM <image>[:<tag>] [AS <name>]
-
参数说明:
-
-
<image>:必需,指定基础镜像名称。 -
:<tag>:可选,指定镜像版本标签。 -
AS <name>:可选,为构建阶段命名。
-
-
FROM 指令示例:
FROM nginx:1.23 FROM python:3.9-alpine FROM ubuntu:20.04 AS builder
LABEL 指令:用于添加元数据到镜像,采用键值对格式。
-
LABEL 指令格式:
LABEL <key>=<value>
-
LABEL 指令示例:
LABEL version="1.0.1" LABEL maintainer="admin@example.com"
RUN 指令:在镜像构建过程中执行命令,每条 RUN 指令都会创建一个新的镜像层。RUN 有两种格式:Shell 格式(
RUN <command>)和 Exec 格式(RUN ["executable", "param1", "param2"])。Shell 格式默认使用/bin/sh -c执行,Exec 格式直接调用可执行文件。为了减少镜像层数,建议将多个命令合并到单个 RUN 指令中,用&&连接命令,用\换行。例如安装软件包时应该先更新包列表再安装,最后清理缓存。
-
RUN 指令格式:
# Shell 格式 RUN <command> # Exec 格式 RUN ["executable", "param1", "param2"]
-
RUN 指令示例:
RUN yum -y install wget RUN apt-get update && apt-get install -y \ git \ curl \ && rm -rf /var/lib/apt/lists/* RUN ["/bin/bash", "-c", "echo Hello, Docker!"] RUN ["yum", "-y", "install", "wget"]
CMD 指令:指定容器启动时的默认命令,一个 Dockerfile 只能有一个有效的 CMD 指令。如果
docker run指定了命令,CMD 会被覆盖。CMD 有三种格式:Exec 格式(推荐)、Shell 格式和作为 ENTRYPOINT 的参数。Exec 格式直接调用可执行文件,不经过 shell 处理环境变量;Shell 格式会通过/bin/sh -c执行。例如运行 Python 应用时可以使用CMD ["python", "app.py"]。
-
CMD 指令格式:
# Exec 格式(推荐) CMD ["executable","param1","param2"] # Shell 格式 CMD command param1 param2 # 作为 ENTRYPOINT 的参数 CMD ["param1","param2"]
-
CMD 指令示例:
# Shell 格式示例: 运行 Python 脚本 CMD python app.py # Exec 格式示例: 运行 Nginx CMD ["nginx", "-g", "daemon off;"] # 作为 ENTRYPOINT 参数 CMD ["--port=8080"]
ENTRYPOINT 指令:用于设置容器启动时的主要命令,与 CMD 不同,它不会被 docker run 后面的命令覆盖。
-
ENTRYPOINT 指令格式:
# Shell 格式 ENTRYPOINT command param1 param2 # Exec 格式 ENTRYPOINT ["executable", "param1", "param2"]
-
ENTRYPOINT 指令示例:
# Shell 格式示例: 运行 Python 脚本 ENTRYPOINT python app.py # Exec 格式示例: 运行 Nginx ENTRYPOINT ["nginx", "-g", "daemon off;"]
SHELL 指令:用于覆盖 Docker 默认的 shell 程序。默认情况下 Linux 使用
["/bin/sh", "-c"],Windows 使用["cmd", "/S", "/C"]。这个指令会影响 RUN、CMD 和 ENTRYPOINT 的 shell 格式执行方式。
-
SHELL 指令格式
SHELL ["executable", "parameters"]
-
SHELL 指令示例:
# 切换为 PowerShell SHELL ["powershell", "-command"] # 切换回默认 shell SHELL ["/bin/sh", "-c"]
EXPOSE 指令:声明容器运行时监听的网络端口,只是文档性质的说明,不会实际发布端口。实际端口映射需要在运行容器时通过
-p参数设置。EXPOSE 可以指定 TCP 或 UDP 协议,默认是 TCP。例如EXPOSE 80/tcp表示容器会监听 80 端口。这个指令主要作用是帮助使用者理解容器提供的服务端口,同时被一些编排工具如 Docker Compose 使用。
-
EXPOSE 指令格式:
EXPOSE <port> [<port>/<protocol>...]
-
EXPOSE 指令示例:
# 声明单个端口 EXPOSE 80 # 声明多个端口 EXPOSE 80 443 # 指定协议 EXPOSE 53/udp
ENV 指令:设置环境变量,这些变量会在构建阶段和容器运行时生效。变量可以被后续的 RUN、CMD 等指令使用,也会持久化到容器中。定义的环境变量会出现在
docker inspect的输出中,也可以在容器运行时通过docker run --env参数覆盖。
-
ENV 指令格式:
# 定义单个变量 ENV <key> <value> # 一次性定义多个变量 ENV <key1>=<value1> <key2>=<value2>...
-
ENV 指令示例:
# 设置单个变量 ENV NODE_VERSION=18.15.0 # 设置多个变量 ENV NODE_VERSION=18.15.0 NODE_ENV=production
COPY 指令:将文件或目录从构建上下文复制到镜像中,源路径必须是相对路径(相对于 Dockerfile 所在目录),不能使用绝对路径或
../父目录引用。目标路径可以是绝对路径或相对于 WORKDIR 的路径。COPY 会保留文件元数据(权限、时间戳),但不支持自动解压压缩包。与 ADD 指令相比,COPY 更推荐用于简单的文件复制操作,因为它的行为更可预测。例如复制项目代码到镜像的/app目录。
-
COPY 指令格式:
COPY <src>... <dest>
-
COPY 指令示例:
# 复制单个文件 COPY requirements.txt /app/ # 复制整个目录 COPY src /app/src # 使用通配符复制多个文件 COPY *.sh /scripts/
2)实际使用
构建 Python Web 应用镜像
假设有一个简单的 Python Flask 应用,需要将其打包成 Docker 镜像。以下是完整的 Dockerfile 示例:
# 使用官方 Python 基础镜像 FROM python:3.9-slim # 设置工作目录 WORKDIR /app # 复制当前目录下的文件到工作目录 COPY . . # 安装依赖 RUN pip install --no-cache-dir -r requirements.txt # 暴露端口 EXPOSE5000 # 定义环境变量 ENV FLASK_APP=app.py ENV FLASK_ENV=production # 启动命令 CMD ["flask", "run", "--host=0.0.0.0"]
这个 Dockerfile 的执行步骤如下:
-
使用
python:3.9-slim作为基础镜像,这是一个轻量级的 Python 环境。 -
设置工作目录为
/app。 -
将当前目录的所有文件复制到容器的
/app目录。 -
运行
pip install安装依赖包。 -
声明容器运行时监听的端口为 5000。
-
设置两个环境变量,指定 Flask 应用入口和运行环境。
-
最后定义容器启动时执行的命令。
构建镜像的命令:
docker build -t my-python-app .
运行容器的命令:
docker run -d -p 5000:5000 my-python-app
构建 Node.js 应用镜像
下面是一个 Node.js 应用的 Dockerfile 示例:
# 使用官方 Node.js 基础镜像 FROM node:16-alpine # 设置工作目录 WORKDIR /usr/src/app # 复制 package.json 和 package-lock.json COPY package*.json ./ # 安装依赖 RUN npm install # 复制所有源代码 COPY . . # 构建应用 RUN npm run build # 暴露端口 EXPOSE3000 # 启动命令 CMD ["npm", "start"]
这个 Dockerfile 的执行步骤如下:
-
使用
node:16-alpine作为基础镜像,这是一个基于 Alpine Linux 的 Node.js 环境。 -
设置工作目录为
/usr/src/app。 -
先复制
package.json和package-lock.json文件,这样可以利用 Docker 的缓存层。 -
运行
npm install安装依赖。 -
复制所有源代码到容器中。
-
运行构建命令。
-
声明容器运行时监听的端口为 3000。
-
定义容器启动时执行的命令。
构建镜像的命令:
docker build -t my-node-app .
运行容器的命令:
docker run -d -p 3000:3000 my-node-app
构建 Nginx 静态网站镜像
如果需要部署一个静态网站,可以使用 Nginx 作为 Web 服务器。以下是 Dockerfile 示例:
# 使用官方 Nginx 基础镜像 FROM nginx:alpine # 删除默认的 Nginx 配置 RUN rm -rf /etc/nginx/conf.d/default.conf # 复制自定义配置 COPY nginx.conf /etc/nginx/conf.d/ # 复制静态网站文件 COPY dist/ /usr/share/nginx/html/ # 暴露端口 EXPOSE 80 # 启动 Nginx CMD ["nginx", "-g", "daemon off;"]
这个 Dockerfile 的执行步骤如下:
-
使用
nginx:alpine作为基础镜像,这是一个轻量级的 Nginx 环境。 -
删除默认的 Nginx 配置文件。
-
复制自定义的 Nginx 配置文件到容器中。
-
将构建好的静态网站文件复制到 Nginx 的默认网站目录。
-
声明容器运行时监听的端口为 80。
-
定义容器启动时执行的命令,以前台模式运行 Nginx。
需要准备一个 nginx.conf 配置文件,例如:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html;
try_files $uri $uri/ /index.html;
}
}
构建镜像的命令:
docker build -t my-static-site .
运行容器的命令:
docker run -d -p 8080:80 my-static-site
5、用Docker Compose部署多服务
如果需要同时运行多个服务(比如Web服务+数据库),用Docker Compose更方便,只需一个配置文件。
Docker Compose:用于定义和管理多容器应用的工具。它通过一个 YAML 文件来配置所有服务配置,用一条命令就能启动整个应用。Docker Compose 解决了多个容器之间的依赖关系和启动顺序问题,主要用于开发环境、测试环境和 CI/CD 流程中。Docker Compose 文件包含了容器镜像、端口映射、数据卷、环境变量等配置,所有配置集中在一个文件中,便于版本控制和团队协作。
1)Docker Compose 文件结构
Docker Compose 的核心是 docker-compose.yml 文件,它采用 YAML 格式定义服务、网络和卷。一个基本的 Compose 文件包含以下部分:
-
version:指定 Compose 文件格式版本,例如
'3.8'。 -
services:定义各个容器服务,每个服务对应一个容器。
-
networks:配置自定义网络。
-
volumes:声明数据卷。
YAML 文件使用缩进来表示层级关系,冒号表示键值对,连字符表示列表项。
以下是一个典型的 docker-compose.yml 示例,定义了一个 WordPress 的应用配置。
version: '3.8' services: db: image:mysql:5.7 volumes: -db_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD:password MYSQL_DATABASE:wordpress networks: -backend wordpress: image:wordpress:latest ports: -"80:80" environment: WORDPRESS_DB_HOST:db WORDPRESS_DB_USER:root WORDPRESS_DB_PASSWORD:password depends_on: -db networks: -frontend -backend networks: frontend: backend: volumes: db_data:
这个 WordPress 的应用配置示例中展示了:
-
两个服务:MySQL 数据库和 WordPress。
-
自定义网络:frontend 和 backend。
-
声明数据卷:数据卷 db_data 持久化数据库。
-
设置环境变量:设置 MySQL 数据库和 WordPress 相关环境变量。
-
端口映射:将容器 80 端口映射到主机 80 端口。
-
服务依赖关系:确保数据库服务先启动。
下面详细说明每个部分的作用和配置方法。
version
version:指定使用的 Compose 文件格式版本。不同版本支持的功能不同。目前常用的是 3.x 版本。版本号需要用引号包裹。
示例:
version: '3.8'
版本号影响可用功能。例如 3.8 版本支持更多配置选项。版本号必须与安装的 Docker Compose 版本兼容。如果不指定版本,默认使用最新支持版本。
services
services:定义需要运行的容器服务,是 Compose 文件的核心部分。每个服务对应一个容器。服务名称自定义,作为容器的标识。
基本服务配置示例:
services: web: image: nginx:latest ports: - "80:80"
常用服务配置项:
-
image:指定使用的镜像名称和标签。可以从 Docker Hub 获取或使用本地构建的镜像。
-
build:如果使用本地 Dockerfile 构建镜像,需要指定构建路径。
build: ./dir
-
ports:设置端口映射,格式为
"主机端口:容器端口"。ports: - "8080:80"
-
volumes:配置数据卷挂载,支持主机路径和命名卷。
支持主机路径:把容器里的某个目录和容器外面的存储位置关联起来,让数据不会因为容器删除而丢失。
命名卷:Docker 帮你管理存储位置,你只需要给这个存储空间起一个名字。删除容器后,数据仍然保存在 Docker 管理的那个 Volume 里,之后创建一个新的 MySQL 容器仍可重新挂载。可通过docker命令查看已有的volume。
挂载:连接 容器目录 ←→ 外部存储
# linux系统 volumes: - /host/path:/container/path - named_volume:/container/path
# windows系统 services: mysql: image: mysql volumes: - D:/docker/mysql-data:/var/lib/mysql
# 命名卷 services: mysql: image: mysql volumes: - mysql-data:/var/lib/mysql volumes: mysql-data:
注:
docker compose down -v:其中的-v就是在删除 Compose 容器的同时把相关命名卷也删除,数据库数据因此可能一起丢失 -
environment:设置环境变量,可以用列表或键值对格式。
environment: - VAR1=value1 - VAR2=value2
-
depends_on:定义服务启动顺序,确保依赖服务先启动。
depends_on: - db
-
restart:设置容器重启策略,比如
always表示总是自动重启。restart: always
-
command:覆盖容器启动命令。
command: ["python", "app.py"]
完整服务示例:
services: web: build:. ports: -"5000:5000" volumes: -.:/code environment: FLASK_ENV:development depends_on: -redis redis: image:redis:alpine volumes: -redis_data:/data
-.:/code : 表示把当前目录 . 挂载到容器里的 /code 目录
networks
networks:定义自定义网络。容器通过网络名称互相通信。默认会创建 bridge 网络。
示例:
首先定义两个网络
networks: # 创建两个独立的虚拟局域网: frontend网络和backend网络 frontend: driver: bridge backend: driver: bridge
bridge 是 Docker 最常用的网络驱动,可以暂时理解为:在这台电脑上创建一个 Docker 内部使用的虚拟局域网。
注:如果你不写 networks,Docker Compose 本身就会自动给这个 Compose 项目创建一个默认网络,通常使用 bridge 驱动,然后把 涉及的容器都接进去。
服务中使用网络:
services: # 创建两个独立的虚拟局域网 web: networks: - frontend db: networks: - backend
自定义网络提供更好的隔离性。不同网络的容器默认不能互相访问。
解释:
network 决定“哪些容器可以直接互相通信”。
可以把 Docker 网络想象成一个个局域网。
假设有三个容器:
web 前端 api 后端 db 数据库
如果它们都加入同一个网络:
my-network ┌─────────────────────────┐ │ │ │ web ←→ api ←→ db │ │ │ └─────────────────────────┘
它们就可以通过服务名互相访问,比如 api 访问数据库时可以写:
db:3306
而不需要知道 db 容器具体的 IP 地址。
MySQL 默认监听 3306
区分port:
services: web: networks: - backend ports: - "8088:80"
8088为主机端口,80为容器端口
如果你的 Windows 主机访问 web:
http://localhost:8088
而另一个 Docker 容器访问 web,通常是:
http://backend:8080
volumes
volumes:声明数据卷。数据卷用于持久化存储和容器间共享数据。
可以理解为是:Docker 专门在容器外准备的一块持久化存储空间。
示例:
声明两个命名卷:
volumes: db_data: driver: local app_data: driver: local
服务中使用卷:
services: db: volumes: - db_data:/var/lib/mysql
/var/lib/mysql为容器内目录,相当于把 Docker 管理的 db_data 数据卷,挂载到 db 容器里的 /var/lib/mysql
卷数据独立于容器生命周期。删除容器不会删除卷数据。
2)Docker Compose 常用操作命令
Docker Compose 提供了一系列命令来管理多容器应用:
-
启动服务:
docker-compose up -d会在后台启动所有服务,-d表示 detached 模式。 -
停止服务:
docker-compose down停止并移除所有容器、网络和卷。 -
查看状态:
docker-compose ps显示各容器的运行状态。 -
查看日志:
docker-compose logs输出容器日志,加-f可以跟踪实时日志。 -
构建镜像:如果服务使用本地 Dockerfile,
docker-compose build会重新构建镜像。 -
重启服务:
docker-compose restart,重启所有服务或指定服务。。 -
单服务操作:可以针对单个服务执行命令,例如
docker-compose start wordpress。
这些命令大大简化了多容器应用的管理工作。通过组合使用这些命令,可以轻松控制整个应用的运行状态。
6、docker常用命令
1)Docker 服务命令
-
启动 Docker 服务
$ systemctl start docker
-
停止 Docker 服务
$ systemctl stop docker
-
重启 Docker 服务
$ systemctl restart docker
-
设置开机启动 Docker 服务
$ systemctl enable docker
-
查看 Docker 服务状态
$ systemctl status docker
2)Docker 镜像命令
-
查看本地的镜像信息
$ docker images
-
从镜像仓库中拉取或者更新指定镜像(默认的镜像仓库是官方的 Docker Hub)
$ docker pull NAME[:TAG]
-
从镜像仓库查找镜像
$ docker search NAME
-
根据本地 Dockerfile 文件,构建镜像
# docker build -t 镜像名:版本号 . $ docker build -t my_image:1.0 .
-
删除本地镜像
# docker rmi 镜像名:版本号 $ docker rmi mysql:5.7
-
导入镜像
# docker load -i 指定要导入的镜像压缩包文件名 $ docker load -i image.tar
-
导出镜像
# docker save -o 导出的镜像压缩包的文件名 要导出的镜像名:版本号 $ docker save -o image.tar target_image:tag
-
清除多余镜像缓存
$ docker system prune -a
3)Docker 容器命令
-
创建容器
# 常用参数列表 # -d: 后台运行容器,并返回容器 ID # -p: 指定端口映射,格式为:主机(宿主)端口:容器端口 # -i: 以交互模式运行容器,通常与 -t 同时使用 # -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用 # --name=my_container: 为容器指定一个名称 # --dns 8.8.8.8: 指定容器使用的 DNS 服务器,默认和宿主一致 $ docker run -d --name=my_container -p 8080:8080 tomcat:latest
-
查看容器列表
# 查看正在运行的容器列表 $ docker ps # 查看最近一次创建的容器 $ docker ps -l # 查看正在运行的容器 ID 列表 $ docker ps -q # 查看全部容器(包括已经停止的容器) $ docker ps -a # 查看全部容器 ID 列表 $ docker ps -aq
-
停止运行的容器
# 使用容器名停止 $ docker stop my_container # 使用容器 ID 停止 $ docker stop container_id # 使用容器 ID 停止多个正在运行的容器 $ docker ps
-
启动已停止的容器
# 容器名 $ docker start my_container # 容器 ID $ docker start container_id # 使用容器 ID 启动多个已停止的容器 $ docker start `docker ps -aq`
-
删除容器
# 用容器名删除 $ docker rm my_container # 用容器 ID 删除 $ docker rm container_id # 删除多个未运行的容器, 运行中的无法删除 $ docker rm `docker ps -aq`
-
进入容器(正在运行的容器才可以进入)
# 使用容器名 $ docker exec -it my_container /bin/bash # 使用容器 ID $ docker exec -it container_id /bin/bash
-
查看容器信息
# 容器名 $ docker inspect my_container # 容器 ID $ docker inspect container_id
更多推荐


所有评论(0)