文章目录
- Docker三个基本概念
- 镜像(Image)
- 容器(Container)
- 仓库(Repository)
- Docker命令
- 基础命令
- 查看版本信息
- 显示详细信息
- 从仓库拉取镜像
- 列出本地存储的镜像
- 删除一个或多个镜像
- 列出所有运行中的容器
- 运行一个新的容器
- 停止一个运行中的容器
- 启动一个已停止的容器
- 重启一个容器
- 删除一个或多个容器
- 在运行中的容器中执行命令
- 获取容器的日志
- 镜像管理
- 从Dockerfile构建一个镜像
- 为镜像打标签
- 将镜像推送到Docker仓库
- 从Docker仓库中拉取镜像
- 网络管理
- 列出所有Docker网络
- 创建一个新的Docker网络
- 删除一个或多个Docker网络
- 查看Docker网络的详细信息
- 卷管理
- 列出所有Docker卷
- 创建一个新的Docker卷
- 删除一个或多个Docker卷
- 查看Docker卷的详细信息
- Dockerfile
- Docker Compose
- 通俗理解
- Docker Compose 的作用
- 举例说明
- 使用 Docker Compose
- 优点
- 小结
Docker 开源的 应用容器引擎 Go语言开发的
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化
Docker三个基本概念
镜像(Image)
Docker 镜像是一种轻量级、独立的、可执行的软件包,它包含了运行某个软件所需的所有元素。镜像是不可变的,创建后不能更改,但可以用作构建新镜像的基础。
比喻:
想象一下,它就像一本食谱(Recipe),详细列出了如何制作某道菜。这个食谱包含了所有的步骤和所需的食材。
食谱:代表 Docker 镜像
所需的食材和步骤:代表应用程序、依赖库、配置文件等
有了这本食谱(Docker 镜像),你和别人都能按照同样的步骤做出一样的菜。
容器(Container)
Docker 容器是基于镜像创建的一个运行实例,它包含了应用程序及其所有依赖项,运行在一个完全隔离的环境中。容器是动态的,可以启动、停止、移动和删除。
比喻:
容器就像是你根据食谱(Docker 镜像)做出来的那道实际的菜。你可以吃这道菜,也可以把它装进饭盒里带走。
实际的菜:代表 Docker 容器
装进饭盒里带走:代表容器的便携性和可移植性
有了这道菜(Docker 容器),你可以随时享用,也可以带到任何地方,和别人分享。
仓库(Repository)
集中存放镜像文件的场所
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。
Docker 镜像是用于创建 Docker 容器的模板
容器与镜像的关系类似于面向对象编程中的对象与类。

Docker命令
基础命令
查看版本信息
docker version
显示详细信息
docker info
从仓库拉取镜像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
# 例如:
docker pull ubuntu:latest
列出本地存储的镜像
docker images
删除一个或多个镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]
# 例如:
docker rmi ubuntu:latest
列出所有运行中的容器
docker ps [OPTIONS]
# 列出所有容器(包括停止的容器):
docker ps -a
运行一个新的容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 例如,运行一个交互式的 Ubuntu 容器:
docker run -it ubuntu:latest /bin/bash
常用选项:
-d:后台运行容器。
-p:端口映射。
-v:挂载卷。
–name:给容器命名。
-e:设置环境变量。
停止一个运行中的容器
docker stop [OPTIONS] CONTAINER [CONTAINER...]
# 例如:
docker stop my_container
启动一个已停止的容器
docker start [OPTIONS] CONTAINER [CONTAINER...]
# 例如:
docker start my_container
重启一个容器
docker restart [OPTIONS] CONTAINER [CONTAINER...]
# 例如:
docker restart my_container
删除一个或多个容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
# 例如:
docker rm my_container
在运行中的容器中执行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
# 例如,在容器中打开一个交互式 shell:
docker exec -it my_container /bin/bash
获取容器的日志
docker logs [OPTIONS] CONTAINER
# 例如:
docker logs my_container
镜像管理
从Dockerfile构建一个镜像
docker build [OPTIONS] PATH | URL | -
# 例如,从当前目录的 Dockerfile 构建镜像:
docker build -t my_image:latest .
为镜像打标签
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
# 例如:
docker tag my_image:latest my_repo/my_image:v1.0
将镜像推送到Docker仓库
docker push [OPTIONS] NAME[:TAG]
# 例如:
docker push my_repo/my_image:v1.0
从Docker仓库中拉取镜像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
# 例如:
docker pull ubuntu:latest
网络管理
列出所有Docker网络
docker network ls
创建一个新的Docker网络
docker network create [OPTIONS] NETWORK
# 例如:
docker network create my_network
删除一个或多个Docker网络
docker network rm NETWORK [NETWORK...]
# 例如:
docker network rm my_network
查看Docker网络的详细信息
docker network inspect NETWORK
# 例如:
docker network inspect my_network
卷管理
列出所有Docker卷
docker volume ls
创建一个新的Docker卷
docker volume create [OPTIONS] [VOLUME]
# 例如:
docker volume create my_volume
删除一个或多个Docker卷
docker volume rm VOLUME [VOLUME...]
# 例如:
docker volume rm my_volume
查看Docker卷的详细信息
docker volume inspect VOLUME
# 例如:
docker volume inspect my_volume
常用选项详解
-d:后台运行容器。
-it:运行一个交互式终端。
-p:端口映射,格式为HOST_PORT:CONTAINER_PORT。
-v:挂载卷,格式为HOST_PATH:CONTAINER_PATH。
-e:设置环境变量。
–name:为容器指定名称。
–rm:容器退出后自动删除容器。
–network:指定容器加入的网络。
Dockerfile
Dockerfile 是一个文本文件,包含了构建Docker镜像的所有指令。
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
通过定义一系列命令和参数,Dockerfile 指导 Docker 构建一个自定义的镜像。
Docker Compose
Compose 是用于定义和运行多容器 Docker 应用程序的工具。
通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过一个简单的配置文件,你可以使用 Docker Compose 来配置应用程序的服务,并使用单个命令启动所有服务。
通俗理解
假设你有一个复杂的应用程序,它需要多个组件来一起工作,比如:
- Web服务器:处理用户的 HTTP 请求。
- 数据库:存储应用程序的数据。
- 缓存服务器:加速数据访问,提高性能。
如果你要手动启动这些服务,你需要分别运行多个 docker run 命令,这可能会变得非常复杂和容易出错。特别是当你需要在不同的环境(如开发、测试和生产)中运行应用程序时,管理这些服务的配置会变得更加困难。
Docker Compose 的作用
Docker Compose 通过一个配置文件(通常命名为 docker-compose.yml)来定义所有这些服务。这个配置文件可以包括:
- 每个服务使用的镜像。
- 服务之间的依赖关系。
- 网络和卷的配置。
- 环境变量。
举例说明
假设你有一个简单的应用程序,有一个 Web 服务器和一个数据库。你可以创建一个 docker-compose.yml 文件来定义这些服务:
version: '3'
services:
web:
image: nginx:latest
ports:
- "8080:80"
db:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: example
这个文件定义了两个服务:
- web 服务:使用最新版本的 Nginx 镜像,并将主机的 8080 端口映射到容器的 80 端口。
- db 服务:使用最新版本的 MySQL 镜像,并设置一个环境变量来定义 MySQL 的根密码。
使用 Docker Compose
-
启动服务:
通过运行以下命令,Docker Compose 会根据配置文件启动所有服务:
docker-compose up -
停止服务:
运行以下命令可以停止所有服务:
docker-compose down -
查看服务状态:
你可以使用以下命令查看运行中的服务状态:
docker-compose ps
优点
- 简化多容器管理:不用手动启动和停止每个容器,简化操作。
- 一致的开发环境:所有开发人员都可以使用相同的配置文件,确保一致的开发环境。
- 易于扩展:可以轻松添加或删除服务,调整配置。
小结
Docker Compose 让你能够通过一个简单的配置文件来管理多容器应用,简化了复杂应用的部署和管理。无论是在开发环境还是生产环境,它都能帮助你更高效地管理服务。







![[MySql]保姆级上手教程](https://img-blog.csdnimg.cn/img_convert/ba46cfb7ee543ef63b527a8661319959.png)











