容器和宿主机之间共享数据 在容器中创建数据, 宿主机可以共享. 在宿主机创建数据, 容器可以共享到. 4. 容器停止退出后, 主机修改的数据依然共享 5. 我们可以通过运行容器查看挂载目录 docker run -it 5a8ecf996d8d ? 进来直接就可以看到挂载目录. 那么在容器和宿主机创建的目录, 都可以被共享 比如: 我们在/dataVolumeContainer1中创建一个文件 ? 5. 容器数据卷 2.1. 什么是容器数据卷? 命名的容器挂载数据卷,其他的容器通过挂载这个父容器实现数据共享, 挂载数据卷的容器, 称之为数据卷容器. 2.2. 启动容器 4. 查看挂载卷. 5. 容器间共享数据卷 --volumes-from
现在公司用docker,有时候需要从容器中拷贝文件出来。 2.复制id对应容器的id,并执行 docker exec -it [容器id] /bin/bash 进入容器 3.假设我要复制的是common.log文件,那么我进入容器后就用find ./ -name “common.log”命令找到那个文件所在目录,假设查找结果是 . /mwbase/applogs/rtlog/OLS/common.log,执行exit退出docker容器 4.退出容器后,我希望复制到宿主机的/home/rhlog目录下重命名为yyy.log,那么最后的命令就是 执行结果可以看到/home/rhlog目录拷贝得到了yyy.log,这样文件就拷贝出来辣。
删除原有容器,重新创建新的容器 优点 简单粗暴,在测试环境用的更多 缺点 如果是数据库、服务器相关的容器,创建新的容器,又得重新配置相关东西了 2. 修改容器配置文件(重点) 暂停Docker服务 systemctl stop docker 进入Docker容器配置文件目录下 cd /var/lib/docker/containers/ls 进入某个容器的配置文件目录下 输入 / ,搜索映射的目录(webapps) 也可以找到 MountPoints 若需要重新指定主机上的映射目录,则改绿圈的两个地方 若需要重新指定容器上的映射目录,则改蓝圈的两个地方 MountPoints 节点,其实是一个 json 结构的数据,下图 ? 重新启动Docker服务 systemctl restart docker 启动容器 docker start 容器ID或者名字 进入到目录查看是否映射修改成功 cd /usr/local/tomcat
在上一章节中我们了解到 Bootstrap 需要一个容器元素来包裹网站的内容。 我们可以使用以下两个容器类: .container 类用于固定宽度并支持响应式布局的容器。 100% 宽度 .container-fluid 类用于创建一个全屏幕尺寸的容器,容器始终跨越整个屏幕宽度(width 始终为 100%): Bootstrap5 .container-fluid 实例 比如 .pt-5 就是用于填充顶部内边距: Bootstrap5 实例
容器的边框和颜色 Bootstrap 也提供了一些边框(border )和颜色(bg-dark、bg-primary等)类用于设置容器的样式: Bootstrap5 实例 <div class="container p-<em>5</em> my-<em>5</em> bg-primary text-whiteTKE 原生节点容器默认的数据目录有哪些? ,如 /mnt/paas, 默认不会 bind mount 上述容器目录,但不设置【高级设置】中的容器目录为挂载路径时, 仅作为普通数据盘使用场景。 case3: 如果挂载数据盘路径为其他路径时,如 /mnt/paas, 并设置【高级设置】中的容器目录为挂载路径时, 这种情况下仅将 containerd 默认的数据目录/var/lib/containerd 如何自定义其他挂载路径时也 bind mount 到默认容器数据目录? 购买挂载数据盘为 /mnt/paas: 2. 使用【高级设置】前置自定义脚本 bind mount 数据目录到默认的容器目录,如下:前置脚本内容如下:#!
有一项重要的参数 -v 目录挂载,就是让容器内部目录和宿主主机目录关联起来,这样就可以直接操作宿主主机目录而不用再操作具体容器了 比如在2中,我们要发布一个war包,是通过 sudo docker tomcat:v1 -p 不解释 --name 不解释 -v /home/xiaochangwei/test:/usr/local/tomcat/webapps 就是将宿主主机目录和容器目录建立映射关系 ,冒号前为宿主主机目录,冒号后为容器对应目录 执行上面的命令启动,这次启动就和上一篇文章中的启动日志有点差异了:差异就在容器启动时,tomcat加载了我们映射的宿主主机目录中的war包 xiaochangwei war包,容器也应该自动部署,下面验证下 为了方便,我直接复制了demo.war xiaochangwei@ubuntu:~/test$ ls -l total 14184 drwxr-x--- 5 root ,有发布需求的时候,直接将war包拷贝到宿主主机目录即可,容器叫什么名字,对应的容器的发布路径在哪里就与发布者无关了 下一篇文章我将讲解和jekins集成,让代码编译好后自动部署到docker中 2015
Zdir是一款使用PHP开发的目录列表程序,无需数据库,安装简单,使用方便。现已支持Docker方式部署,欢迎使用。 需一定运维基础) 安装Docker 请先确保您已经安装Docker,若还没有安装可参考:Linux安装Docker与Docker常用命令 Docker部署Zdir 输入下面的命令创建用户和用户组,并设置目录权限 #创建用户和用户组 groupadd www useradd -M -g www www -s /sbin/nologin #设置目录权限 chown -R www:www /data/wwwroot/ zdir 复制下面的命令在Docker容器中运行Zdir docker run --name="zdir" \ -d -p 1080:80 --restart=always \ -v
linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。 要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限。并且,所创建的文件夹(目录)不能与其父目录(即父文件夹)中的文件名重名,即同一个目录下不能有同名的(区分大小写)。 此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录; -v, --verbose 每次创建新目录都显示信息 --help 显示此帮助信息并退出 ]# mkdir -vp test5/test5-1 mkdir: 已创建目录 “test5” mkdir: 已创建目录 “test5/test5-1” [root@localhost test]# 实例五 “scf” mkdir: 已创建目录 “scf/lib” mkdir: 已创建目录 “scf/bin” mkdir: 已创建目录 “scf/doc” mkdir: 已创建目录 “scf/doc/info
~]# ls install.log linux.log 5.rm命令 rm命令用于删除文件或目录,英文全称为“remove”,语法格式为“rm [参数] 文件 名称”。 dd命令是一个比较重要而且比较有特色的命令,它能够让用户按照指定大小和个数的数据块来复制文件的内容。当然,如果愿意的话,还可以在复制过程中转换其中的数据。 因为这个文件不会占用系统存储空间,但却可以提供无穷无尽的数据,因此常常使用它作为dd命令的输入文件,来生成一个指定大小的文件。dd命令的参数及其作用如表2-20所示。 5.简述Linux系统中5种进程的名称及含义。 答:在Linux系统中,有下面5种进程名称。 R(运行):进程正在运行或在运行队列中等待。 答:这4项重要的信息分别是网卡名称、IP地址、网卡物理地址以及RX/TX的收发流量数据大小。
腾讯云默认kubelet工作目录在/var/lib/kubelet使用的是系统盘,系统盘一般不够大也不方便扩容,所以需要修改kubelet工作目录。 hostname-override=192.168.8.9" EVICTION_HARD="--eviction-hard=nodefs.available<10%,nodefs.inodesFree<5% , registry-proxy-xkmk5, exporter-node-cluster-monitoring-t5jj7, cattle-node-agent-j8wcn, ccs-log-collector-x57f8 tke.10 [root@VM_8_9_centos ~]# ls /data/ docker kubelet lost+found 修改配置 修改kubelet配置文件第一行添加kubelet 目录参数 Ready <none> 181d v1.12.4-tke.3 192.168.8.9 Ready <none> 89d v1.12.4-tke.10 新建kubelet目录在
no 不以后台服务的形式运行 timeout 1800 将超时时间限定为半小时,默认是不限的 logfile "/data/redis6379.log" 指定日志的路径 databases 50 将数据库设为 50个 dir /data/ 指定存储目录 dbfilename dump6379.rdb 指定数据文件名 appendfilename "appendonly6379.aof" 指定append文件名 Note: 为什么普通情况下使用redis都是开启后台服务模式,而这里要使用前台模式呢,那是因为,容器化后,必须终结于一个前台进程,否则容器就直接退出了,这涉及容器交互模式运行和后台运行的一些特性 myredis -d 后台模式运行 -v /tmp/x:/data 将本地的 /tmp/x 目录挂载到容器中的 /data 目录 redis 使用redis镜像 redis-server /data/ redis6379.conf 使用指定的配置初始化并启动redis服务 ---- 查看日志 因为本地目录挂载到了容器中,那么日志根据映射就直接记录到了本地 [root@h104 x]# pwd /tmp
,指定了目录映射(-v) 如果容器运行之后发现目录映射需要改怎么办? /local/tomcat/webapps:/usr/local/tomcat/webapps tomcat:7 重新指定需要映射的目录 优点 简单粗暴,在测试环境用的更多 缺点 如果是数据库、服务器相关的容器 输入 ,搜索映射的目录(webapps) / 也可以找到 MountPoints 若需要重新指定主机上的映射目录,则改绿圈的两个地方 若需要重新指定容器上的映射目录,则改蓝圈的两个地方 MountPoints 节点 其实是一个 json 结构的数据,下图 ? 优点 无需停止 Docker 服务,不影响其他正在运行的容器 旧容器有的配置和数据,新容器也会有,不会造成数据或配置丢失,对新旧容器都没有任何影响 缺点 需要生成新的镜像和容器,管理镜像和容器的时间成本会上升
,IOC 容器底层就是对象工厂 Spring 提供 IOC 容器实现两种方式:(两个接口) (1)BeanFactory:IOC 容器基本实现,是 Spring 内部的接口,不提供开发人员进行使用 *加载配置文件的时候不回去创建对象 "> 3.1.14 外部属性文件 直接配置数据库信息 配置德鲁伊连接池 引入德鲁伊连接池依赖 jar 包 <! 创建外部属性文件,properties 格式文件,写数据库信息 把外部 properties 属性文件引入到 spring 配置文件中 *引入 context 名称空间 <? --开启组件扫描 1 如果扫描多个包,多个包使用逗号隔开 2 扫描包上层目录 --> <context:component-scan base-package --开启组件扫描 1 如果扫描多个包,多个包使用逗号隔开 2 扫描包上层目录 --> <context:component-scan base-package="com.gbx.spring<em>5</em>
h104 blog2]# docker images | grep rails test-rails-app-blog latest b5b7ed8d740e afdddae9b2bf 47 hours ago 833.7 MB [root@h104 blog2]# 现在我们可以使用生成的 test-rails-app-blog 来创建容器 ---- 创建 Rails 容器 [root@h104 ~]# docker run --name blog-rails-app -p 8080:3000 -d test-rails-app-blog
1.问题背景 用户在tke的集群中创建工作负载并把某一个对应的/data目录挂载到cos桶的根目录,在镜像构建的时候有把/data目录设置权限为755,但是运行容器后成功挂载/data/目录到cos桶的根目录 ,但是发现用非root账号确无法访问/data下面的文件,这边镜像的启动用户是非root用户,查看容器内/data目录权限变成了700,为什么这边设置的目录权限是755,挂载到COS后就变成了700权限呢 -oallow_other这个参数,想填写多个参数空格分隔,cos提供的参数配置选项可以参考https://cloud.tencent.com/document/product/436/6883#.E5. 进入容器中查看/etc/nginx/conf.d的目录不再是700,创建一个test文件,也挂载到了cos桶中 image.png image.png 上传一个文件到cos桶看容器中是否可以访问 上传一个 1.txt文件到cos桶,从容器中看文件权限是777,可以进行正常访问 image.png image.png
Docker配置mysql以及宿主机容器目录挂载 在之前的docker 挂载中主要说明了创建数据卷并挂载的方式。现在我们做一种创建普通目录并进行挂载的方式。 基于mysql镜像的拉取并进行配置。 将来我们在我们主机连接远程服务器,我们的远程服务器的注解地址加上这个端口就是我们这个mysql容器的访问链接。 -v 这里后面我们就是做了一个宿主目录和容器目录的挂载映射。 包括了配置,日志记录,数据存储等等。 -e 这里后面首先做了一个mysql密码的设定 -d 后面 代表的是后台运行 后面的mysql:8.0.29就是说明了运行的容器和版本。 failed programming external connectivity on endpoint mysql (fb957f020c1833f804f2612b60c4ef60162dbbb5c888c29488bd1b02bbaab8f9 from stu2 where name = "李自成"; -- 条件查询 select * from stu2 where not (name ="李自成"); 然后测试后我们去看我们之前挂载的目录文件有没有新的数据出现
文章目录 一、应用数据目录 /data/data/package.name/files 二、自带 so 动态库 /data/data/package.name/lib 三、数据库文件 /data/data /package.name/databases 四、缓存文件 /data/data/package.name/cache 一、应用数据目录 /data/data/package.name/files - --- /data/data/package.name/files 目录是应用的数据目录 , 一般存放应用运行相关文件 , 如更新文件 , 存档文件 , 资源文件等 ; drwxrwx--x 20 u0 /data/data/package.name/databases ---- /data/data/package.name/databases 文件是数据库文件目录 , 该目录下的文件是 sqlite3 数据库文件 ; sqlite3 是 Android 内部自带的轻量级的关系型数据库 ; /data/data/com.qidian.QDReader/databases 目录下的文件如下 :
运行容器 docker run --name my-nginx -d -p 8088:80 --rm nginx:1.15 -d:在后台运行 -p :容器的80端口映射到 宿主机的 8088 - -rm:容器停止运行后,自动删除容器文件 --name:容器的名字为 my-nginx ? 新建static-pages目录,结构如下: static-pages -- index.html -- Dockerfile index.html
五种数据容器 1.list(列表) 2.tuple(元组) 3.str(字符串) 4.set(集合) 5.dict(字典) 一.list(列表) 定义空列表可以使用[] 列表中的元素的是有上限的,只是比较大基本上都可以满足日常使用 统计元组中的元素数量 tuple = [1,2,3,1,2,3] msg = len(tuple) print(f"当前的tuple元素数量为 - {msg}") str(字符串) 字符串其实也是一个个元素组成的一个数据容器 1,2,3,1,2,3] msg = len(str) print(f"字符串str元素数量为 - {msg}") # 9.isdigit() - 判断字符转是否为纯数字 msg.isdigit() 数据容器的切片 [key]}") # 9.len(dict) - 取出字典的元素数量 dict = {1:"a",2:"b",3:"c"} print(f"dict中的元素数量为 - {len(dict)}") 数据容器的通用操作 max() – 取出数据容器中的最大元素 min() – 取出数据容器中的最小元素 sorted() – 对容器进行排序默认从小到大,排序的结果为列表,如果需要从大到小则改为sorted(,reverse
Kotlin作为一门全新的语言,肯定还是要有自己的容器类,不然哪天Java跟Kotlin划清界限,那麻烦就大了。 Kotlin也拥有三类基本的容器,分别是集合Set、队列List、映射Map,每种容器又分作只读与可变两种类型这是为了判断该容器能否进行增删改等变更操作。 Kotlin数组 Kotlin集合 Kotlin数组 数组是一种初始化时指定容器大小,不可以动态调整其大小的容器。元素按顺序存储在一串连续的内存段上。 <String>() - 必须指定元素类型 可变 listOf<T>() 相同元素类型的集合 val array = listOf<Int>(1, 2, 3) - 必须指定元素类型 - 必须指定初始化数据元素 不可变的List类型集合的初始化使用:listOf函数 可变的List类型集合的初始化使用:mutableListOf函数 Set集合 1、容器内部的元素不按顺序排列,因此无法按照下标进行访问; 2、容器内部的元素存在唯一性