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
相关推荐
码龄3年 审核中2 小时前
说说SSH的端口转发
大数据·运维·ssh
盛世隐者2 小时前
【Linux】定制Linux系统
linux·运维·服务器
行思理3 小时前
Docker 应该如何学习 分四个阶段
学习·docker·容器
..Move...4 小时前
Docker应用部署tomcat和nginx
nginx·docker·tomcat
Lxt.星翊5 小时前
MySQL(安装和卸载、数据库存储原理图)
linux·运维·windows
苹果醋35 小时前
JAVA面试汇总(二)多线程(五)
运维·vue.js·spring boot·nginx·课程设计
JustNow_Man5 小时前
Cline中模型识别任务与clinerules相关性的实现逻辑
linux·运维·ubuntu
小白银子6 小时前
零基础从头教学Linux(Day 56)
linux·运维·python
你想考研啊6 小时前
Linux下搭建Activemq的Master-Slave(共享文件模式)
linux·运维·activemq
Teamhelper_AR6 小时前
AR巡检系统:打开工业智能运维的下一幕
运维·ar