GKLBB

当你经历了暴风雨,你也就成为了暴风雨

导航

软件开发 --- 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

这条命令会启动 nginxredis 两个服务,并且将端口 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 流程、开发环境搭建等场景。

posted on 2024-12-10 06:50  GKLBB  阅读(3)  评论(0编辑  收藏  举报