Docker-基础(数据卷、自定义镜像、Compose)

Docker是一个开源的容器化平台,提供了一种标准化的方式来构建、运行和共享应用程序容器。本文将介绍Docker的三个重要概念:数据卷、自定义镜像和Docker Compose。

1. 数据卷(Volumes)

数据卷是Docker中用于持久化和共享容器数据的一种机制。与容器的生命周期无关,数据卷可以在容器之间共享和重用。

1.1 创建和使用数据卷

创建一个数据卷:

复制代码
docker volume create my_volume
​

在容器中使用数据卷:

复制代码
docker run -d -v my_volume:/app/data --name my_container my_image
​

在这个例子中,my_volume卷被挂载到容器内的 /app/data目录。

1.2 数据卷的优点
  • 持久化数据:容器删除后,数据仍然存在。
  • 性能:数据卷在宿主机上直接管理,性能较高。
  • 易于备份和恢复:数据卷可以很方便地备份和恢复。

2. 自定义镜像(Custom Images)

自定义镜像是基于基础镜像,通过添加应用程序代码、依赖包或配置文件等创建的新的镜像。通常使用Dockerfile来构建自定义镜像。

2.1 创建Dockerfile

一个简单的Dockerfile示例如下:

复制代码
# 使用官方的基础镜像
FROM ubuntu:20.04

# 维护者信息
LABEL maintainer="your_email@example.com"

# 安装依赖包
RUN apt-get update && apt-get install -y python3

# 复制应用程序代码到容器中
COPY . /app

# 设置工作目录
WORKDIR /app

# 指定容器启动时运行的命令
CMD ["python3", "app.py"]
​
2.2 构建自定义镜像

在Dockerfile所在目录下运行以下命令来构建镜像:

复制代码
docker build -t my_custom_image .
​
2.3 运行自定义镜像

使用以下命令运行自定义镜像:

复制代码
docker run -d --name my_custom_container my_custom_image
​

3. Docker Compose

Docker Compose是一种用于定义和运行多容器Docker应用程序的工具。通过使用YAML文件,可以轻松地配置应用程序的服务、网络和卷。

3.1 创建docker-compose.yml文件

一个简单的 docker-compose.yml示例:

复制代码
version: '3'
services:
  web:
    image: my_custom_image
    ports:
      - "5000:5000"
    volumes:
      - my_volume:/app/data
    networks:
      - my_network

  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
    networks:
      - my_network

volumes:
  my_volume:

networks:
  my_network:
​
3.2 启动Compose应用

docker-compose.yml所在目录下运行以下命令启动应用:

复制代码
docker-compose up -d
​
3.3 管理Compose应用

查看运行中的服务:

复制代码
docker-compose ps
​

停止服务:

复制代码
docker-compose down
相关推荐
小阳睡不醒1 小时前
小白成长之路-部署Zabbix7(二)
android·运维
杰克逊的日记1 小时前
GPU运维常见问题处理
linux·运维·gpu
caolib2 小时前
无需云服务器的内网穿透方案 -- cloudflare tunnel
运维·服务器·内网穿透·tunnel·cloudflared
奇舞精选2 小时前
k8s基本概念初探
运维
誰能久伴不乏2 小时前
Linux系统调用概述与实现:深入浅出的解析
linux·运维·服务器
程序员学习随笔2 小时前
Linux进程深度解析(2):fork/exec写时拷贝性能优化与exit资源回收机制(进程创建和销毁)
linux·运维·服务器
-SGlow-3 小时前
MySQL相关概念和易错知识点(2)(表结构的操作、数据类型、约束)
linux·运维·服务器·数据库·mysql
代码改变世界ctw3 小时前
Linux内核设计与实现 - 第14章 块I/O层
linux·运维·服务器
Dreams_l4 小时前
网络编程2(应用层协议,传输层协议)
运维·服务器·网络
勇哥的编程江湖4 小时前
starrocks官网docker部署mysql无法连接
运维·docker·容器