首页 > 其他分享 >Docker 容器数据卷

Docker 容器数据卷

时间:2023-09-23 12:25:01浏览次数:46  
标签:容器 run root nginx mysql Docker 数据 docker

Docker 容器数据卷

1. 方式一:直接使用命令来挂载 -v

# docker run -it -v 主机目录:容器目录
[root@ home]# docker run -it -v /home/ceshi:/home centos /bin/bash

总结:容器运行时,挂载目录数据一直同步


# 获取镜像
[root@ home]# docker pull mysql:5.7
# 运行容器, 需要做数据挂载! # 安装启动mysql,需要配置密码(注意)
# 官方测试, docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
[root@ home]# docker run -d -p 3344:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
9552bf4eb2b69a2ccd344b5ba5965da4d97b19f2e1a78626ac1f2f8d276fc2ba

	# 参数说明:
	-d      # 后台运行
	-p      # 端口隐射
	-v      # 卷挂载
	-e      # 环境配置
	--name  # 容器的名字
# 启动成功之后,我们在本地使用navicat链接测试一下
# navicat链接到服务器的3344 --- 3344 和 容器的3306映射,这个时候我们就可以连接上mysql喽!
 
# 在本地测试创建一个数据库,查看下我们的路径是否ok!

2. 匿名和具名挂载

# 匿名挂载
-v 容器内路径
docker run -d -P --name nginx01 -v /etc/nginx nginx     # -P 随机指定端口
 
# 查看所有volume的情况
[root@ ~]# docker volume ls
DRIVER              VOLUME NAME
local               561b81a03506f31d45ada3f9fb7bd8d7c9b5e0f826c877221a17e45d4c80e096
local               36083fb6ca083005094cbd49572a0bffeec6daadfbc5ce772909bb00be760882
 
# 这里发现,这种情况就是匿名挂载,我们在-v 后面只写了容器内的路径,没有写容器外的路径!
 
# 具名挂载
[root@ ~]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
26da1ec7d4994c76e80134d24d82403a254a4e1d84ec65d5f286000105c3da17
[root@ ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
26da1ec7d499        nginx               "/docker-entrypoint.…"   3 seconds ago       Up 2 seconds        0.0.0.0:32769->80/tcp   nginx02
486de1da03cb        nginx               "/docker-entrypoint.…"   3 minutes ago       Up 3 minutes        0.0.0.0:32768->80/tcp   nginx01
[root@ ~]# docker volume ls
DRIVER              VOLUME NAME
local               561b81a03506f31d45ada3f9fb7bd8d7c9b5e0f826c877221a17e45d4c80e096
local               36083fb6ca083005094cbd49572a0bffeec6daadfbc5ce772909bb00be760882
local               juming-nginx
 
# 通过-v 卷名:容器内的路径
# 查看一下这个卷
# docker volume inspect juming-nginx

[root@ ~]# docker volume inspect juming-nginx
[
  {
      "CreatedAt": "2020-08-12T18:15:21+08:00",
      "Driver": "local",
      "Labels": null,
      "Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data",
      "Name": "juming-nginx",
      "Options": null,
      "Scope": "local"
  }
]
# 通过 -v 容器内容路径 ro rw 改变读写权限
ro  readonly    # 只读
rw  readwrite   # 可读可写
 
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx
 
# ro 只要看到ro就说明这个路径只能通过宿主机来操作,容器内容无法操作

从容器内拷贝文件到主机上

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
redis        latest    7614ae9453d1   9 months ago    113MB
mysql        latest    3218b38490ce   9 months ago    516MB
centos       latest    5d0da3dc9764   12 months ago   231MB
[root@localhost ~]# docker run -it centos /bin/bash
[root@30dde7df25fb /]# cd /root/
[root@30dde7df25fb ~]# ls
anaconda-ks.cfg  anaconda-post.log  original-ks.cfg
[root@30dde7df25fb ~]# > Test.java
[root@30dde7df25fb ~]# ls
Test.java  anaconda-ks.cfg  anaconda-post.log  original-ks.cfg
[root@30dde7df25fb ~]# exit
exit
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
redis        latest    7614ae9453d1   9 months ago    113MB
mysql        latest    3218b38490ce   9 months ago    516MB
centos       latest    5d0da3dc9764   12 months ago   231MB
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost ~]# docker ps -qa
30dde7df25fb
[root@localhost ~]# docker cp 30dde7df25fb:/root/Test.java /root/
[root@localhost ~]# ls
anaconda-ks.cfg  dump.rdb  Test.java

标签:容器,run,root,nginx,mysql,Docker,数据,docker
From: https://www.cnblogs.com/liuzonglin/p/17724163.html

相关文章

  • 6-ES数据管理
    索引操作创建索引库PUT/索引名称{"settings":{"属性名":"属性值"}}settings:就是索引库设置,其中可以定义索引库的各种属性,比如分片数,副本数等。PUT/bntang_index{"settings":{}}判断索引是否存在HEAD/索引名称查看索引GET/索引名称批量......
  • Ubuntu 22.04 安装 Docker
    安装基础工具sudoapt-getinstallca-certificatescurlgnupglsb-release安装官方的GPGkeysudomkdir-p/etc/apt/keyringscurl-fsSLhttps://download.docker.com/linux/ubuntu/gpg|sudogpg--dearmor-o/etc/apt/keyrings/docker.gpg将Docker的库添加到apt资源......
  • Ubuntu(Ubuntu 22.04 操作系统) 安装 Docker
    Ubuntu(Ubuntu22.04操作系统)安装Docker首先安装一些工具:sudoapt-getinstallca-certificatescurlgnupglsb-release不过在Ubuntu22.04已经默认安装好了。接着安装官方的GPGkey:sudomkdir-p/etc/apt/keyringscurl-fsSLhttps://download.docker.com/linux/ubun......
  • 【Java 基础篇】Java ArrayList 简明教程:灵活管理数据集合
    在Java编程中,数组是一种常见的数据结构,用于存储一组元素。然而,数组有一些限制,例如大小固定,不支持动态增长等。为了克服这些限制,Java提供了一个灵活的数据结构——ArrayList。ArrayList是Java集合框架中的一部分,它允许我们创建可变大小的数组,方便地添加、删除、获取和修改元素。本篇......
  • 【Java 基础篇】Java 自动装箱与拆箱:优雅处理基本数据类型与包装类的转换
    在Java编程中,自动装箱(Autoboxing)和自动拆箱(Unboxing)是两个重要的概念。它们使得基本数据类型与其对应的包装类之间的转换更加方便,同时也提高了代码的可读性和可维护性。本篇博客将深入探讨自动装箱和拆箱的概念、用法以及为什么它们对Java程序员如此重要。什么是自动装箱和拆箱......
  • 【Java 基础篇】Java LinkedList 详解:数据结构的灵活伙伴
    在Java编程中,数据结构起着至关重要的作用。这些数据结构可以帮助我们组织和管理数据,使我们的代码更加高效和可维护。其中之一是LinkedList,它是一个灵活的数据结构,允许我们高效地进行插入和删除操作。本篇博客将深入探讨Java中的LinkedList,从基础概念到高级用法,为您呈现全面的......
  • docker跨平台构建镜像
    我们在开发环境构建的镜像在生产环境大多不可用,我们在开发中一般使用Windows或者MAC系统,部署多半是linux环境。那么这篇文章能帮到你。首先首先你需要有一个Dockerfile文件。举例:这里以一个python项目举例FROMpython:3.10-slimWORKDIR/appCOPYrequirements.tx......
  • 数据结构之 - 链表数据结构详解: 从基础到实现
    链表(LinkedList)是计算机科学中常用的数据结构之一,它具有灵活的内存分配和高效的插入、删除操作。本文将深入介绍链表的特性、基本类型、操作以及在实际应用中的使用场景。1.什么是链表?链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的引用(或指针)。与数......
  • 数据库报错
    报错信息:Expression#2ofSELECTlistisnotinGROUPBYclauseandcontainsnonaggregatedcolumn'hmdp.area.area_name'whichisnotfunctionallydependentoncolumnsinGROUPBYclause;thisisincompatiblewithsql_mode=only_full_group_by 中文......
  • Docker概念及操作
    1.镜像相关命令:查看本地镜像:dockerimages搜索镜像仓库:dockersearch<名称关键字>下载镜像:dockerpull<镜像名:tag版本>上传镜像:dockerpush <镜像名:tag版本>删除镜像:dockerrmi <镜像名:tag版本>打包本地镜像文件:dockersave-o<输出文件路径>导入本地......