Docker是一个开源的平台,用于开发、部署和运行应用程序,它通过容器化技术实现应用的打包、隔离和跨平台部署。Docker 将应用程序及其所有依赖项打包到一个称为容器的标准化单元中,以便能够在任何支持 Docker 的环境中运行。这种方法使得应用程序可以无缝地在开发、测试和生产环境之间移动,消除了“在我电脑上运行没问题”的问题。
Docker 的核心概念:
1. 容器(Container):
容器是 Docker 的基本运行单元,它包含了应用程序以及运行它所需的一切环境(如库、配置文件、依赖项等)。与虚拟机不同,容器共享宿主操作系统的内核,因此比虚拟机更轻量、启动更快,且资源占用更少。
2. 镜像(Image):
Docker 镜像是一个只读的模板,用于创建 Docker 容器。镜像包含了应用程序及其所需的环境和依赖项,是创建容器的基础。你可以将镜像视为容器的蓝图。
3. Docker 引擎(Docker Engine):
Docker 引擎是用于构建和运行容器的核心组件。它包含:
- 守护进程(Daemon):管理 Docker 容器的后台服务。
- 客户端(Client):与守护进程通信的命令行工具。
- 镜像注册表(Registry):存储和分发 Docker 镜像的仓库。
4. Dockerfile:
Dockerfile 是一个文本文件,包含了构建 Docker 镜像的指令。通过定义一系列命令,开发者可以指定如何从基础镜像构建自己的应用镜像。
5. 仓库(Registry):
Docker 镜像可以发布到仓库,方便分发和分享。Docker Hub 是官方提供的公共仓库,用户可以上传、下载各种镜像。
Docker 的优点:
- 跨平台一致性:应用程序在任何支持 Docker 的操作系统中运行时都有相同的行为,简化了从开发到生产的流程。
- 轻量化:容器与虚拟机相比资源开销更少,启动速度更快。
- 易于部署和扩展:通过 Docker Compose 等工具,可以轻松地管理多个容器,便于构建微服务架构。
- 版本管理和回滚:镜像可以记录多个版本,支持快速回滚到前一个版本。
使用 Docker 创建并运行容器 :
1. 安装 Docker
首先,确保你的系统上已经安装了 Docker。如果没有安装,可以根据你的操作系统选择相应的安装方法:
- Linux:在 Ubuntu、CentOS 等 Linux 发行版上可以通过包管理工具安装 Docker。
- Windows/Mac:可以从 [Docker官网]( https://www.docker.com/products/docker-desktop) 下载 Docker Desktop 安装包。
安装完成后,可以运行 `docker --version` 来检查 Docker 是否安装成功。
docker --version
2. 拉取镜像
容器是基于镜像创建的,因此首先需要从 Docker Hub(或其他仓库)拉取所需的镜像。
docker pull <镜像名>
例如,拉取一个官方的 Ubuntu 镜像:
docker pull ubuntu
3. 查看已拉取的镜像
你可以使用以下命令查看本地有哪些镜像:
docker images
4. 创建并运行容器
使用拉取的镜像创建并运行容器,可以通过 `docker run` 命令:
docker run [选项] <镜像名> [命令]
例如,基于 Ubuntu 镜像运行一个容器,并进入交互模式:
docker run -it ubuntu
-i:开启交互模式,让容器保持打开。
-t:分配一个伪终端。
ubuntu:使用的镜像。
bash:默认进入 `bash` 终端(可选,如果未指定,Docker 会默认进入容器的启动命令)。
此时你已经进入了一个 Ubuntu 容器的终端,可以像操作普通 Linux 系统一样在容器内部运行命令。
5. 后台运行容器
如果你想让容器在后台运行(例如运行一个 Web 服务器),可以使用 `-d` 参数(detach模式):
docker run -d <镜像名>
例如,启动一个 Nginx 容器:
docker run -d -p 8080:80 nginx
-d:后台运行容器。
-p 8080:80:将主机的 8080 端口映射到容器的 80 端口。这样你可以通过 `http://localhost:8080` 访问 Nginx 服务。
6. 列出正在运行的容器
要查看当前正在运行的容器,可以使用以下命令:
docker ps
如果想查看所有容器(包括已停止的容器),可以加上 `-a` 参数:
docker ps -a
7. 停止容器
要停止一个正在运行的容器,可以使用以下命令:
docker stop <容器ID或容器名>
例如:
docker stop my_container
8. 启动已停止的容器
要重新启动已停止的容器,可以使用 `docker start`:
docker start <容器ID或容器名>
9. 进入正在运行的容器
如果需要进入正在运行的容器的终端,可以使用 `docker exec` 命令:
docker exec -it <容器ID或容器名> /bin/bash
例如:
docker exec -it my_container /bin/bash
这会将你带入容器的命令行环境。
10. 删除容器
停止容器后,如不再需要,可以删除它:
docker rm <容器ID或容器名>
如果想强制删除一个正在运行的容器,可以使用 `-f` 选项:
docker rm -f <容器ID或容器名>
11. 删除镜像
如果镜像不再需要,也可以将其删除:
docker rmi <镜像ID或镜像名>
12. 使用 Dockerfile 自定义镜像
如果你想自定义镜像,可以创建一个 `Dockerfile`,然后使用 `docker build` 命令创建镜像。以下是一个简单的 Dockerfile 示例:
# 基于官方的 Ubuntu 镜像
FROM ubuntu:latest
# 安装一些基础软件
RUN apt-get update && apt-get install -y curl vim
# 设置工作目录
WORKDIR /app
# 启动命令
CMD ["bash"]
然后使用 `docker build` 命令创建镜像:
docker build -t my_custom_image .
`-t` 参数指定镜像名称,`.` 表示 Dockerfile 的路径(当前目录)。
13. 查看容器日志
要查看某个容器的输出日志,可以使用 `docker logs` 命令:
docker logs <容器ID或容器名>