Docker 入门教程
1. 简介
Docker 是一个开源的容器化平台,它允许开发者将应用程序及其依赖打包到一个独立的容器中,确保应用在不同环境中(开发、测试、生产)都能一致运行。Docker 使用轻量级的虚拟化技术,比传统的虚拟机更高效,并且能够快速部署和扩展。
Docker 的核心概念:
- 镜像 (Image):类似于虚拟机的快照,是只读模板,包含了应用程序及其所有依赖。
- 容器 (Container):镜像的运行实例,可以启动、停止、删除等操作。
- 仓库 (Registry):存储和分发镜像的地方,最常用的公共仓库是 Docker Hub。
2. 安装 Docker
2.1 Linux 系统安装
Docker 支持多种 Linux 发行版,以下是基于 Ubuntu 的安装步骤:
\\\`bash
更新包索引
sudo apt-get update
安装必要的依赖包
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
添加 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
添加 Docker APT 仓库
echo "deb \[arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg\] https://download.docker.com/linux/ubuntu $(lsb\_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
更新包索引并安装 Docker
sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io
验证安装是否成功
sudo systemctl status docker \\\`
2.2 macOS 和 Windows 系统安装
对于 macOS 和 Windows 用户,推荐使用 Docker Desktop 进行安装。你可以从 Docker 官方网站下载并按照提示安装。
3. Docker 基本命令
3.1 查看 Docker 版本
bash docker --version
3.2 启动 Docker 服务
bash sudo systemctl start docker
3.3 拉取镜像
从 Docker Hub 拉取官方的 hello-world 镜像并运行: bash docker pull hello-world docker run hello-world
3.4 列出本地镜像
bash docker images
3.5 列出正在运行的容器
bash docker ps
3.6 列出所有容器(包括停止的)
bash docker ps -a
3.7 删除容器
bash docker rm <容器id>
3.8 删除镜像
bash docker rmi <镜像id>
3.9 运行容器
bash docker run -it ubuntu /bin/bash
- -it:交互模式,分配一个伪终端。
- ubuntu:镜像名称。
- /bin/bash:启动 Bash 终端。
3.10 构建镜像
创建一个简单的 Dockerfile 来构建自定义镜像:
\\\`Dockerfile
使用官方的基础镜像
FROM ubuntu:latest
设置工作目录
WORKDIR /app
复制当前目录下的文件到容器中的 /app 目录
COPY . /app
安装必要的软件包
RUN apt-get update && apt-get install -y python3-pip
设置默认命令
CMD \["python3", "app.py"\] \\\`
构建镜像: bash docker build -t my-app .
3.11 推送镜像到 Docker Hub
首先登录 Docker Hub: bash docker login
然后推送镜像: bash docker tag my-app your-dockerhub-username/my-app docker push your-dockerhub-username/my-app
4. Docker Compose
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过一个 YAML 文件来配置应用程序的服务,简化了复杂应用的管理和部署。
4.1 安装 Docker Compose
对于 Linux 系统,可以通过以下命令安装: bash sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d '"' -f 4)/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
对于 macOS 和 Windows,Docker Desktop 已经集成了 Docker Compose。
4.2 编写 docker-compose.yml
创建一个简单的 docker-compose.yml 文件:
yaml version: '3' services: web: image: nginx:latest ports: - "8080:80" db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: example
4.3 启动服务
bash docker-compose up -d
4.4 停止服务
bash docker-compose down
5. Docker 网络与卷
5.1 网络
Docker 提供了多种网络模式,默认情况下,容器会连接到桥接网络。你也可以创建自定义网络:
bash docker network create my-network
将容器连接到自定义网络: bash docker run -d --name web --network my-network nginx
5.2 卷
卷用于持久化数据,避免容器重启或删除后数据丢失。创建一个带有卷的容器:
bash docker run -d --name db -v my-volume:/var/lib/mysql mysql:5.7
列出所有卷: bash docker volume ls
删除卷: bash docker volume rm my-volume
6. Docker 安全性
6.1 用户命名空间
用户命名空间可以让容器以非 root 用户身份运行,增强安全性。
6.2 限制资源使用
通过设置 CPU、内存等资源限制,防止容器占用过多系统资源:
bash docker run -d --name web --memory="512m" --cpus="0.5" nginx
7. Docker 生态系统
Docker 生态系统非常丰富,除了 Docker 自身提供的工具外,还有许多第三方工具和服务可以帮助你更好地管理容器化应用,例如:
- Kubernetes:用于自动化部署、扩展和管理容器化应用的平台。
- Portainer:提供了一个图形化的界面来管理 Docker 环境。
- Jenkins:持续集成工具,支持 Docker 化的工作流。
8. 总结
Docker 是现代 DevOps 流程中不可或缺的一部分,它极大地简化了应用程序的开发、测试和部署。通过本文的介绍,你应该已经掌握了 Docker 的基本概念和常用命令,并能够开始构建自己的容器化应用。希望这篇教程对你有所帮助!
如果你有任何问题或需要进一步的帮助,请随时留言!
Tags:mac docker 安装