Docker - 入门

数据管理

前面讲过镜像使用的是分层存储,容器也是如此。每一个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层,我们可以称这个为容器运行时读写而准备的存储层为 容器存储层。

容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。

按照 Docker 最佳实践的要求,容器不应该向其存储层内写入任何数据,容器存储层要保持无状态化。所有的文件写入操作。

Docker 内部以及容器之间管理数据,在容器中管理数据主要有两种方式

  • 数据卷(Volumes)
  • 挂载主机目录 (Bind mounts)

数据卷(Volumes)

docker volume ls                                                    # 列出所有数据卷
docker volume create <volume_name> # 创建一个数据卷
docker volume inspect <volume_name> # 查看数据卷详细信息
docker volume rm <volume_name> # 删除数据卷
docker volume prune # 清理无用数据卷
docker pull mongodb

docker volume create mongodb_data

docker run -d -p 27017:27017 --mount source=mongodb_data,target=/data/db --name mongo mongo

挂载主机目录

cd $HOME && mkdir mongodb_data

docker run -d -p 27017:27017 --mount type=bind,source=$HOME/mongodb_data,target=/data/db --name mongo mongo

Docker Compose

Docker-Compose 是 Docker 的一种编排服务,是一个用于在 Docker 上定义并运行复杂应用的工具,可以让用户在集群中部署分布式应用。

通过 Docker-Compose 用户可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。Docker-Compose 解决了容器与容器之间如何管理编排的问题。

Compose 中有两个重要的概念:

服务 (service) :一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。

项目 (project) :由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

使用

  1. 安装docker-compose

    Docker Desktop集成docker-compose,若没有使用pip安装,Docker Desktop集成docker集成是V2,若想更新最新,也可以使用下面更新

    pip3 install docker-compose
  2. 新建app.py编写下面代码

    from flask import Flask
    from redis import Redis app = Flask(__name__)
    redis = Redis(host='redis', port=6379) @app.route('/')
    def hello():
    count = redis.incr('hits')
    return 'Hello World! 该页面已被访问 {} 次。\n'.format(count) if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)
  3. 编写Dockerfile文件

    FROM python:3.9-alpine
    ADD . /code
    WORKDIR /code
    RUN pip install redis flask
    CMD ["python", "app.py"]
  4. 编写docker-compose.yml文件

    version: '3'
    
    services:
    
    web:
    build: .
    ports:
    - "5000:5000" redis:
    image: "redis:alpine"
  5. 启动

    docker-compose up
  6. 关闭

    docker-compose down

【Docker】- 入门的更多相关文章

  1. 第三章 Docker 入门

    第三章 docker 入门 3.1 确保docker已经就绪 首先查看docker程序是否存在,功能是否正常 [#3#cloudsoar@cloudsoar-virtual-machine ~]$su ...

  2. Docker入门教程(九)10个镜像相关的API

    Docker入门教程(九)10个镜像相关的API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第九篇,重点介绍了镜像相关的Docker Remote ...

  3. Docker入门教程(八)Docker Remote API

    Docker入门教程(八)Docker Remote API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第八篇,重点介绍了Docker Remote ...

  4. Docker入门教程(七)Docker API

    Docker入门教程(七)Docker API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第七篇,重点介绍了Docker Registry API和 ...

  5. Docker入门教程(六)另外的15个Docker命令

    Docker入门教程(六)另外的15个Docker命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第六篇,继续介绍Docker命令.之前的第二篇文章 ...

  6. Docker入门教程(五)Docker安全

    Docker入门教程(五)Docker安全 [编者的话]DockOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第五篇,介绍了Docker的安全问题,依然是老话重谈,入门者可以通 ...

  7. Docker入门教程(四)Docker Registry

    Docker入门教程(四)Docker Registry [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第四篇,介绍了Docker Registry,它 ...

  8. Docker入门教程(三)Dockerfile

    Docker入门教程(三)Dockerfile [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第三篇,介绍了Dockerfile的语法,DockerOn ...

  9. Docker入门教程(二)命令

    Docker入门教程(二)命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第二篇,介绍了Docker的基本命令以及命令的用法和功能. 在Docker ...

  10. Docker入门教程(一)介绍

    http://dockone.io/article/101 Docker入门教程(一)介绍 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第一篇,介绍了 ...

随机推荐

  1. java 生产者消费者模式 使用标志位进行判断

    简介 RT code package com.kuang; /** * Created by lee on 2021/3/30. */ public class TestPC2 { public st ...

  2. DPDI:Kettle任务调度与管理的高效解决方案

    DPDI:Kettle任务调度与管理的高效解决方案 引言 在企业大规模数据处理领域,Kettle(Pentaho Data Integration)作为一款广受欢迎的开源ETL工具,以其强大的数据处理 ...

  3. iPaaS中API自动化测试的作用

    在iPaaS中,API自动化测试的作用主要是有助于验证集成流程的正确性.保证数据一致性.监控和故障排除.性能评估.支持持续集成和持续交付,并增加合作和安全性.通过自动化测试,可以提高iPaaS平台的稳 ...

  4. SciTech-BigDataAIML-Boltzmann constant波尔兹曼常数 + Boltzmann Machine波尔兹曼机模型

    SciTech-BigDataAIML- Boltzmann constant

  5. POLIR-Society-Organization-Psychology-Attitude态度-The Components(成份) of Attitude: Formation(形成) of an Attitude and How It Can Be Changed 如何能改变

    Theories > Social Psychology > The Components of Attitude The Components of Attitude Formation ...

  6. 官宣!Dora-rs 官方中文教程正式发布!

    Dora-rs:是一个为现代AI机器人应用设计的.以数据流为核心的机器人开发框架 . 在机器人开发的世界里,我们常常面临这样的困境: 过于复杂: 传统软件栈学习曲线陡峭,配置繁琐,让快速原型验证成为奢 ...

  7. 编辑器下实现Update

    private void OnEnable() { if (Application.isEditor) { SceneView.onSceneGUIDelegate += OnScene; } } p ...

  8. Linux C编程之三 静态库的制作和使用(lib + 名字 + .a)

    摘自:https://www.cnblogs.com/xuejiale/p/10788320.html 一.整体大纲 二.静态库的制作 1)命名规则        lib + 库的名字 + .a    ...

  9. Flutter3-MacOS桌面OS系统|flutter3.32+window_manager客户端OS模板

    原创flutter3.32+dart3.8+window_manager桌面OS解决方案Flutter3MacOS. flutter3_macos最新研发flutter3.32+dart3.8+get ...

  10. 超级计算 CST DC作业故障(一)

    (1)故障问题:用户的CST DC(分布式计算作业)作业出现解压缩错误, 提示如下: error while decompressing: Extracted file:............... ...