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
相关推荐
胡斌附体26 分钟前
linux测试端口是否可被外部访问
linux·运维·服务器·python·测试·端口测试·临时服务器
愚润求学34 分钟前
【Linux】自旋锁和读写锁
linux·运维
大锦终36 分钟前
【Linux】常用基本指令
linux·运维·服务器·centos
知北游天1 小时前
Linux:多线程---深入互斥&&浅谈同步
linux·运维·服务器
Gappsong8741 小时前
【Linux学习】Linux安装并配置Redis
java·linux·运维·网络安全
try2find2 小时前
移动conda虚拟环境的安装目录
linux·运维·conda
码农101号2 小时前
Linux中容器文件操作和数据卷使用以及目录挂载
linux·运维·服务器
ladymorgana2 小时前
【docker】修改 MySQL 密码后 Navicat 仍能用原密码连接
mysql·adb·docker
有点小帅得平哥哥2 小时前
本地部署index-tts并且通过docker做成镜像
docker·index-tts
程序员弘羽3 小时前
Linux进程管理:从基础到实战
linux·运维·服务器