软件开发 --- Docker之初体验
Docker 是一个开源的容器化平台,用于开发、打包和运行应用程序。它允许你把应用和它的依赖一起打包成一个容器,保证在任何环境中都能一致地运行。以下是 Docker 的常见用法举例,涵盖从安装到运行容器的全过程。
1. 安装 Docker
在 Ubuntu 上安装 Docker
# 更新软件包列表
sudo apt update
# 安装必要的依赖
sudo apt install apt-transport-https ca-certificates curl software-properties-common
# 导入 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 设置 Docker 的稳定版仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 更新软件包列表
sudo apt update
# 安装 Docker CE(Community Edition)
sudo apt install docker-ce
# 验证 Docker 安装是否成功
sudo docker --version
启动 Docker 服务
sudo systemctl start docker
# 设置 Docker 开机自启动
sudo systemctl enable docker
2. 基本 Docker 命令
2.1 拉取 Docker 镜像
Docker 镜像是运行容器的基础。你可以从 Docker Hub(官方仓库)或者其他仓库拉取镜像。
# 从 Docker Hub 拉取最新的 Ubuntu 镜像
sudo docker pull ubuntu
2.2 启动容器
一旦镜像下载完成,可以通过 docker run
命令启动一个容器。
# 启动一个 Ubuntu 容器,并进入容器内部
sudo docker run -it ubuntu bash
这里:
-it
:启动一个交互式终端。ubuntu
:使用ubuntu
镜像。bash
:进入容器内的 bash shell。
2.3 查看运行中的容器
查看当前正在运行的容器:
sudo docker ps
如果想查看所有容器(包括停止的容器),使用:
sudo docker ps -a
2.4 停止容器
停止一个正在运行的容器:
sudo docker stop <container_id>
你可以通过 docker ps
查看容器 ID,或者使用容器的名称来停止容器。
2.5 删除容器
删除一个已经停止的容器:
sudo docker rm <container_id>
2.6 删除镜像
如果不再需要某个镜像,可以删除它:
sudo docker rmi <image_name>
3. 创建自己的 Dockerfile
在 Docker 中,Dockerfile
是一个文本文件,包含了一系列指令,用来定义自定义镜像。
3.1 创建一个简单的 Dockerfile
假设我们要创建一个包含 Nginx 的镜像,可以创建一个简单的 Dockerfile
:
# 基础镜像为 ubuntu
FROM ubuntu:20.04
# 安装 Nginx
RUN apt-get update && apt-get install -y nginx
# 复制本地的 nginx 配置文件到容器中
COPY ./nginx.conf /etc/nginx/nginx.conf
# 开放 80 端口
EXPOSE 80
# 启动 Nginx 服务
CMD ["nginx", "-g", "daemon off;"]
这个 Dockerfile
指定了:
- 使用
ubuntu:20.04
镜像作为基础镜像。 - 安装了 Nginx 服务。
- 复制本地的 Nginx 配置文件到容器内。
- 启动 Nginx 服务,并暴露 80 端口。
3.2 构建自定义镜像
使用以下命令根据 Dockerfile
构建镜像:
sudo docker build -t my-nginx-image .
这条命令会根据当前目录下的 Dockerfile
构建一个名为 my-nginx-image
的镜像。
3.3 运行容器
构建完镜像后,使用以下命令运行容器:
sudo docker run -d -p 8080:80 my-nginx-image
这条命令会将容器的 80 端口映射到主机的 8080 端口,可以通过访问 http://localhost:8080
查看运行中的 Nginx 服务。
4. 使用 Docker Compose
Docker Compose
是一个工具,用于定义和运行多个 Docker 容器的应用。在 Docker Compose 文件中,你可以定义多个服务、网络、卷等。
4.1 安装 Docker Compose
在 Ubuntu 上安装 Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
4.2 创建 docker-compose.yml
文件
例如,我们可以创建一个简单的 docker-compose.yml
文件,定义一个包含 Nginx 和 Redis 的服务:
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
redis:
image: redis
4.3 启动 Docker Compose 服务
使用以下命令启动所有服务:
docker-compose up
这条命令会启动 nginx
和 redis
两个服务,并且将端口 8080
映射到 Nginx 服务的 80 端口。
4.4 停止 Docker Compose 服务
停止并移除所有容器:
docker-compose down
5. 容器数据持久化
默认情况下,容器内的数据会在容器停止或删除时丢失。如果需要持久化数据,可以使用 Docker 卷 (Volumes)。
5.1 创建卷并挂载
docker volume create my_volume
docker run -d -v my_volume:/data ubuntu
这样,my_volume
卷的数据会在容器删除后继续存在。
总结
- Docker 是一个开源平台,用于将应用及其依赖打包到容器中运行,保证在任何环境中都能一致地运行。
- 主要操作包括拉取镜像、运行容器、构建自定义镜像、管理容器等。
- 可以通过
docker-compose
管理多个容器,实现复杂的服务部署。 - Docker 容器广泛应用于微服务架构、CI/CD 流程、开发环境搭建等场景。