第45天:使用Docker容器
目标
在本节中,我们将深入了解Docker及其基本用法,掌握如何使用Docker容器来简化开发和部署流程。
背景知识
Docker是一个开源平台,用于开发、运输和运行应用程序。它使我们能够使用容器技术将应用程序及其依赖项打包在一起,确保无论在何处运行都能保持一致性。
1. Docker的基本概念
概念 | 说明 |
---|---|
容器 | 一种轻量级、可移植的虚拟化环境,允许应用程序运行。 |
镜像 | 容器的蓝图,包含应用程序及其所有依赖项和运行环境。 |
Dockerfile | 一个文本文件,描述如何构建Docker镜像的步骤。 |
Docker Hub | Docker的公共镜像仓库,可以存储和分享镜像。 |
守护进程 | Docker的核心组件,负责创建、运行和管理容器。 |
2. 安装Docker
在开始之前,请确保你的开发环境中已安装Docker。可以通过以下命令检查是否成功安装Docker:
bash
docker --version
如果未安装,请访问 Docker官网 按照指导进行安装。
3. Docker基础命令
命令 | 说明 |
---|---|
docker pull <image> |
从Docker Hub拉取镜像 |
docker images |
列出本地镜像 |
docker run <image> |
创建并运行一个容器 |
docker ps |
列出正在运行的容器 |
docker stop <container> |
停止指定的容器 |
docker rm <container> |
删除指定的容器 |
docker rmi <image> |
删除指定的镜像 |
docker exec -it <container> /bin/bash |
通过交互式终端进入容器指令接口 |
3.1 运行第一个Docker容器
我们来运行一个简单的Docker容器,以测试Docker是否正常工作。我们将使用Official的hello-world
镜像。
bash
docker run hello-world
运行该命令后,Docker将从Docker Hub拉取该镜像并运行容器。如果成功,你将看到一条欢迎消息,表明Docker已成功安装并配置。
4. 使用Dockerfile构建镜像
Dockerfile是构建自定义镜像的基础。下面是一个简单的示例,创建一个运行Go应用程序的Docker镜像。
4.1 创建项目结构
在你的工作目录下,创建如下目录结构:
my-go-app/
├── Dockerfile
└── main.go
4.2 编写Go应用程序
在main.go
中添加以下简单的HTTP服务器代码:
go
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, Docker!")
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
4.3 编辑Dockerfile
在Dockerfile
中添加以下内容:
Dockerfile
# 使用官方Go语言镜像作为基础镜像
FROM golang:1.20
# 设置工作目录
WORKDIR /app
# 复制Go模块文件和代码到容器
COPY go.mod go.sum ./
RUN go mod download
COPY . .
# 编译Go应用程序
RUN go build -o main .
# 运行应用程序
CMD ["./main"]
# 开放服务的端口
EXPOSE 8080
4.4 构建镜像
在终端中切换到my-go-app
目录,执行以下命令:
bash
docker build -t my-go-app .
这将根据Dockerfile构建一个名为my-go-app
的镜像。
4.5 运行容器
本地运行构建的镜像:
bash
docker run -p 8080:8080 my-go-app
4.6 访问应用程序
在浏览器中输入 http://localhost:8080
,你应该可以看到"Hello, Docker"的消息。
5. Docker容器与镜像的管理
5.1 列出镜像和容器
要查看本地的Docker镜像:
bash
docker images
要查看运行中的容器:
bash
docker ps
5.2 停止和删除容器
如果需要停止运行的容器,可以通过以下命令停止它:
bash
docker stop <container_id>
若想删除容器:
bash
docker rm <container_id>
5.3 删除镜像
若要删除不再需要的镜像,可以使用:
bash
docker rmi my-go-app
6. Docker Compose
对于更复杂的应用程序,Docker Compose是一种便利的工具,允许你使用一个YAML文件同时定义和管理多个容器。
6.1 安装Docker Compose
确保你的Docker已经安装了Compose。可以通过以下命令检查:
bash
docker-compose --version
6.2 创建docker-compose.yml
在项目目录中创建一个名为 docker-compose.yml
的文件,并加入以下内容:
yaml
version: '3'
services:
web:
build: .
ports:
- "8080:8080"
6.3 启动服务
在项目目录中运行以下命令启动服务:
bash
docker-compose up
访问 http://localhost:8080
,确保应用程序正常工作。
7. Docker网络和数据管理
7.1 Docker网络
Docker提供不同的网络驱动程序,支持容器间的通信。可以通过以下命令查看当前的网络:
bash
docker network ls
7.2 Docker数据管理
若要在容器间共享数据,可以使用卷(Volume)来管理数据。卷是存储在主机文件系统上的一个特定路径,能够在不同的容器之间共享数据。
7.3 创建和使用卷
创建一个卷:
bash
docker volume create my_data
在运行容器时使用该卷:
bash
docker run -v my_data:/data my-go-app
8. 运行流程图
以下是运行Docker容器的流程图:
创建Dockerfile 构建镜像 运行容器 访问应用 使用Docker命令管理
9. 总结
通过本节学习,我们了解了Docker的基础知识,掌握了如何使用Dockerfile构建镜像,运行和管理容器,以及使用Docker Compose管理多容器应用。此外,也学习了如何使用Docker网络和数据卷来支持更复杂的应用架构。
相关工具
怎么样今天的内容还满意吗?再次感谢观众老爷的观看,关注GZH:凡人的AI工具箱,回复666,送您价值199的AI大礼包。最后,祝您早日实现财务自由,还请给个赞,谢谢!