Loading... > 学习一些高级的docker用法 ## Docker中管理数据 Docker提供三种方式从Docker主机挂载数据下容器中:Volumes ,Bind mount和tempfs mount。 - Volumes存储在主机文件系统中由Docker管理(/var/lib/docker/volumes/)。Docker以外和程序没有权限修改这部分文件系统的。Volumes是Docker中最好的持久层方法。 - Bind mounts 可以放在主机的任何位置。他们甚至可以是重要的系统文件和目录。任何程序都可以对它修改。 - tmpfs mounts 是存储在主机内存中,不会被写入文件系统中。 ### Docker Volume volumes是Docker数据持久化机制。依赖主机目录结构,volumes完全由Docker管理。Volumes有以下优点: - Volumes更容易备份和移植 - 可以通过Docker CLI或API进行管理 - Volumes可以无区别的工作中Windows和Linux下 - 多个容器共享Volumes更安全 - Volume驱动可以允许你把数据存储到远程主机或者云端,并且加密数据内容,以及添加额外功能。 - 一个新的数据内容可以由容器预填充。 - volumes不会增加容器的大小,生命周期独立与容器。 起初,-v或者--volume用于独立容器,--mount用于swarm services。然而,从Docker 17.06开始,也可是使用--mount用于独立容器。--mount命令更精准详细。-v将选项进行了合并。使用—mount。 使用` docker volume ls`可以查看所有的volume。使用inspect可以查看具体的细节。 ```sh $ docker volume inspect d534d89ae90833c7a250813ce0c645c89317b183e7fbf8ce643c12d5f7486c87 [ { "CreatedAt": "2020-04-30T00:57:27+08:00", "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/d534d89ae90833c7a250813ce0c645c89317b183e7fbf8ce643c12d5f7486c87/_data", "Name": "d534d89ae90833c7a250813ce0c645c89317b183e7fbf8ce643c12d5f7486c87", "Options": null, "Scope": "local" } ] ``` ## Docker Stack stack 是构成特定环境中的 service 集合, 它是自动部署多个相互关联的服务的简便方法,而无需单独定义每个服务。 stack file 是一种 yaml 格式的文件,类似于 docker-compose.yml 文件,它定义了一个或多个服务,并定义了服务的环境变量、部署标签、容器数量以及相关的环境特定配置等。 比如说创建一个WordPress的stack,包含WordPress和MySql这2个服务。 ```yaml version: '2' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: ${MYSQL_DATABASE_PASSWORD} MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: image: wordpress:latest ports: - 80 restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress volumes: db_data: ``` 要注意的话,在docker-CLI无法直接管理stack,我这里是用的前面说的portainer管理的。 ## Docker与集群 ### Docker Swarm 然后简单提一下Swarm,Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。 简单来说,swarm允许我们以节点(node)的方式组织集群(cluster);每个节点上面可以部署一个或者多个服务(service);每个服务又可以包括一个或者多个(container) ### Docker Service 多用于分布式程序中,程序的不同部分被称为service。由于我现在用不到集群,先不看这部分。 ## matomo 搭建 test ## 参考文献 [Docker的volumes的使用](https://blog.csdn.net/weixin_42028353/article/details/80018028) [在Docker中管理数据](https://blog.csdn.net/weixin_42028353/article/details/80018080) [Manage data in Docker](https://docs.docker.com/storage/) [Use volumes](https://docs.docker.com/storage/volumes/) [Compose file version 3 reference](https://docs.docker.com/compose/compose-file/) ``` ``` Last modification:January 16th, 2021 at 12:59 pm © 允许规范转载 Support 确定不打赏一下支持博主吗 ×Close Appreciate the author Sweeping payments Pay by AliPay