Docker 🚢 简介

什么是 Docker? 🤔

Docker 是一个开源的容器化平台,它能够简化应用程序的开发、交付和运行过程。容器技术使得开发者能够在任何环境中快速部署和运行应用程序,而无需担心环境配置问题。通过将应用程序及其依赖项打包到一个独立的容器中,Docker 实现了 跨平台运行环境一致性

Docker 的基本概念 🔑

  1. 容器 (Container) 🛳️:容器是轻量级、可移植的虚拟环境,它包含了应用程序及其所有依赖项。容器中的应用与宿主操作系统隔离,但共享宿主的内核

  2. 镜像 (Image) 📸:镜像是容器的模板,包含了应用程序及其所有必需的库、依赖和环境变量等。镜像是只读的,容器是镜像的可执行实例

  3. Dockerfile 📝:Dockerfile 是一个文本文件,包含了构建 Docker 镜像的所有步骤,例如操作系统环境的安装、应用程序的复制等

  4. Docker Hub 🌐:Docker Hub 是一个公共的 Docker 镜像库,用户可以上传、分享和下载 Docker 镜像

  5. 容器引擎 (Docker Engine) 🔧:Docker 引擎是一个客户端-服务器应用程序,负责容器的构建、运行和管理。它包含了 Docker 守护进程和命令行客户端

Docker 的优势 💡

  1. 快速部署 🚀:Docker 容器启动速度非常快,因为它不需要虚拟化整个操作系统,只需要加载应用程序和依赖项

  2. 跨平台 🌍:Docker 容器可以在不同操作系统之间无缝迁移,确保开发环境和生产环境的一致性

  3. 资源隔离 🔒:容器提供了应用程序级别的资源隔离,不同容器之间不会互相干扰

  4. 版本控制 🔄:Docker 镜像支持版本控制,可以方便地管理和回滚应用程序的版本

与其他容器技术对比 🆚

虽然 Docker 是当前最流行的容器平台之一,但它并不是唯一的选择。以下是 Docker 与其它主流容器技术(如 Podman、containerd、LXC 等)的对比:

6554027162.jpg

💡 Docker 更适合快速开发、测试与部署应用,适合多数开发者和小团队;而 Podman、containerd 更适合对安全性或资源调度有更高要求的系统级用户或生产环境;LXC 更像“轻量虚拟机”,适用于复杂服务或系统仿真。

Docker 基本命令 📜

Docker 提供了一些常用命令来管理容器和镜像,以下是一些基本命令:

  • 查看 Docker 版本:
1
docker --version
  • 查看运行中的容器:
1
docker ps
  • 查看所有容器(包括停止的容器):
1
docker ps -a
  • 拉取镜像:
1
docker pull <image_name>
  • 构建 Docker 镜像:
1
docker build -t <image_name> .
  • 运行一个容器:
1
docker run -d -p <host_port>:<container_port> <image_name>
  • 停止容器:
1
docker stop <container_id>
  • 删除容器:
1
docker rm <container_id>
  • 删除镜像:
1
docker rmi <image_id>

如何使用 Docker 🛠️

安装 Docker 🖥️

你可以通过 Docker 官网 获取适合自己操作系统的安装包。安装过程非常简单,只需按照官方指引进行操作

运行一个简单的容器 🎉

  1. 拉取官方 Nginx 镜像:
1
docker pull nginx
  1. 运行 Nginx 容器:
1
docker run -d -p 80:80 nginx

这条命令会下载 Nginx 镜像,并在后台运行一个容器,映射宿主机的 80 端口到容器的 80 端口。你可以通过浏览器访问 http://localhost 来查看 Nginx 的欢迎页面

构建自己的 Docker 镜像 🏗️

  1. 创建一个 Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 使用官方的 Node.js 镜像
FROM node:14

# 设置工作目录
WORKDIR /usr/src/app

# 将本地应用程序代码复制到容器中
COPY . .

# 安装依赖
RUN npm install

# 暴露端口
EXPOSE 8080

# 运行应用程序
CMD ["node", "app.js"]
  1. 构建镜像:
1
docker build -t my-node-app .
  1. 运行容器:
1
docker run -d -p 8080:8080 my-node-app

查看 Docker 容器 🧐

  • 查看正在运行的容器:
1
docker ps
  • 查看所有容器(包括停止的容器):
1
docker ps -a

停止和删除容器 ❌

  1. 停止容器:
1
docker stop <container_id>
  1. 删除容器:
1
docker rm <container_id>
  1. 删除镜像:
1
docker rmi <image_id>

总结 🎯

Docker 作为一种轻量级的容器技术,极大地简化了应用程序的开发、测试、部署和运行过程。通过 Docker,开发者可以保证应用在任何环境中都能一致运行,提升了开发效率和跨平台兼容性。掌握 Docker 是现代 DevOps 和 CI/CD 流程中不可或缺的一部分