docker的image与container存放在什么路径下

如何深刻理解Docker镜像大小对已经运行的容器挂载目录?

Dockerfile 中 ADD 和 COPY 命令不能使用路径,只能使用相对路径。这点在文档中说的比较清楚 如果不是非要把文件 build 到 image里,可以通过 run container 的时候通过 -v 参数将 host 文件或目录加载/共享到 container 里。

查看docker安装路径 查看docker运行的容器查看docker安装路径 查看docker运行的容器


查看docker安装路径 查看docker运行的容器


查看docker安装路径 查看docker运行的容器


怎么修改docker images的存储目录

Ubuntu/Debian: edit your /etc/default/docker file with the -g option: DOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4 -g /mnt"

Fedora/Centos: edit /etc/sysconfig/docker, and add the -g option in the other_args variable: ex. other_args="-g /var/lib/testdir". If there's more than one option, make sure you enclose them in " ". After a restart, (serv docker restart) Docker should use the new directory.

1) Stop d第二种方式使用连接ocker: serv docker stop. Verify no docker process is running ps faux

2) Double check docker really isn't running. Take a look at the current docker directory: ls /var/lib/docker/

2b) Make a backup - tar -zcC /var/lib docker > /mnt/pd0/var_lib_docker-backup-$(date +%s).tar.gz

3) Move the /var/lib/docker direc然后停止容器ctl stop dockertory to your new partition: mv /var/lib/docker /mnt/pd0/docker

4) Make a symlink: ln -s /mnt/pd0/docker /var/lib/docker

6) Start docker back up serv docker start

Docker(5)——数据管理

docker 容器的文件系统在宿主机上存在的方式很复杂,这会带来下面几个问题:

为了能够 保存(持久化) 数据以及 共享 容器间的数据,docker 引入了数据卷(volume) 机制。数据卷是存在于一个或多个容器中的特定文件或文件夹,它可以绕过默认的联合文件系统,以正常的文件或者目录的形式存在于宿主机上。

其生存周期于容器的生存周期。

容器中主要有 两种 管理数据方式: 数据卷(Data Volumes) , 数据卷容器(Data Volume Containers) 。

数据卷是一个可供容器使用的特殊目录,它绕过文件系统,可以提供很多有用的特性:

数据卷的使用类似 linux 下对目录或文件进行 mount 作,目前Docker提供了 三种 不同的方式将数据从宿主机挂载到容器中,分别是

其中 volume 、 bind mount 比较常用, tmpfs mount 基本不会用在使用 volume 作为数据卷挂载到容器时,直接用 volume 名称代替宿主机路径名就行:.

volumes作为Docker管理宿主机文件系统的一部分 ,默认位于 /var/lib/docker/volumes 目录中,不是宿主机已有数据,而是新建的。

docker 专门提供了 volume 子命令来作数据卷:

先创建一个名称为 hello 的数据卷并通过 ls 命令进行查看:

然后可以使用 inspect 命令看看数据卷hello的详细信息

该数据卷使用的 Driver 为默认的 local ,表示数据卷使用宿主机的本地存储;

所有Container的数据都保存在了这个目录下边,由于没有在创建时指定卷,所以Docker帮我们默认创建许多匿名卷。

使用 -v 选项也可以指定挂载一个本地的已有目录到容器中去作为数据卷:

docker run -it –-name robot1 -v /var/data:/opt/mydata ros/kinetic /bin/bash

上面的命令挂载主机的 /var/data 目录到容器的 /opt/mydata 目录。

这个功能在测试的时候特别方便,比如用户可以放置一些程序或数据到本地目录中,然后在容器中使用。另外,本地目录的路径必须是路径,如果目录不存在,Docker 会自动创建。

Docker 挂载数据卷的默认权限是可读写 rw ,用户也可以通过 ro 标记指定为只读:docker添加挂载目录:先在docker容器里创建目录/import

docker run -it –-name robot1 -v /var/data:/opt/mydata:ro ros/kinetic /bin/bash

加了 :ro 之后,容器内挂载的数据卷内的数据就变成只读的了。

除了把数据卷中的数据存储在宿主机,docker 还允许我们通过指定 volume driver 的方式把数据卷中的数据存储在其它的地方,比如 Azrue Storge 或 AWS 。

通过 vieux/sshfs 驱动把数据卷的存储在云主机上,docker 默认是不安装 vieux/sshfs 插件的,我们可以通过下面的命令进行安装:

docker plugin install --grant-all-permissions vieux/sshfs

然后通过 vieux/sshfs 驱动创建数据卷,并指定远程主机的登录用户名、密码和数据存放目录:

在启动容器时指定挂载这个数据卷:

在容器中 /world 目录下作的文件都存储在远程主机的 /home/nick/sshvolume 目录中。进入容器 testcon 然后在 /world 目录中创建一个文件,然后打开远程主机的 /home/nick/sshvolume 目录进行查看,新建的文件会出现在那里。

当使用 bind mounts 将主机上的目录挂载到容器中时,目录由其在主机上的完整或相对路径引用。

bind mount 和 volume 其实都是利用宿主机的文件系统,不同之处在于volume是docker自身管理的目录中的子目录,所以不存在权限引发的挂载的问题,并且目录路径是docker自身管理的,所以也不需要在不同的上指定不同的路径,不需要关心路径

bind mounts 可以挂载在宿主机系统的任意位置 ,但 bind mount 在不同的宿主机系统是不可移植的,比如Windows和Linux的目录结构是不一样的, bind mount 所指向的 host 目录也不能一样。这也是为什么 bind mount 不能出现在Dockerfile中的原因,因为这样Dockerfile就不可移植了。

如果使用 Bind mounts 挂载 宿主机目录 到 容器内非空目录 ,那么 此容器中的非空目录中的文件会被隐藏 ,容器访问这个目录时能够访问到的文件均来自于宿主机目录。这也是Bind mounts模式和Volumes模式的行为上的不同。

挂载存储在宿主机系统的内存中,而不会写入宿主机的文件系统;

这张图说明 bind mount 和 volume 其实都是利用宿主机的文件系统, Bind mounts 模式是将宿主机上的任意文件或文件夹挂载到容器,而 Volumes 本质上是将Docker的一块区域(默认是 /var/lib/docker/volumes 下的文件夹)挂载到容器。所以 volume 不存在权限引发的挂载的问题,并且目录路径是docker自身管理的,所以也不需要在不同的上指定不同的路径,不需要关心路径。

相对于 bind mount , volume 是Docker Engine在自己的“地盘”分配了一个路径作为挂载点,自己地盘的权限肯定是安排的明明白白。所以,以上挂载宿主机路径的问题都解决了。

docker run -d -v test_vol:/var/data some_image

这样就将数据卷 test_vol 挂载到了容器内的 /var/data 目录下。

命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器

可以利用数据卷容器对其中的数据卷进行备份、恢复,以实现数据的迁移。

备份

使用下面的命令来备份 mydata 数据卷容器内的数据卷:

sudo docker run --volumes-from mydata -v $(pwd):/backup –-name worker ubuntu tar cvf /backup/backup.tar /data

在 worker 容器启动后,使用了 tar cvf /backup/backup.tar /data 命令来将 /data 下内容备份为容器内的 /backup/backup.tar,即宿主主机的当前目录下的backup.tar。

如果要恢复数据到一个容器,可以按照下面的作。首先创建一个带有数据卷的容器 mydata2:

sudo docker run -v /data –-name mydata2 ubuntu /bin/bash

然后创建另一个新的容器,挂载 mydata2 的数据卷,并使用 tar 解压缩备份文件到所挂载的容器卷中:

sudo docker run --volumes-from mydata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar

如果用户需要在容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。数据卷容器其实就是一个普通的容器,专门用它提供数据卷供其他容器挂载。下面简单介绍其使用方法。

首先要创建一个数据卷容器 mydata,并在其中创建一个数据卷挂载到 /data 目录。

sudo docker run -it -v /data –-name mydata ubuntu

然后在其他容器中使用 --volumes-from 来挂载 mydata 容器中的数据卷。例如创建两个容器 mycon1 和 mycon2,并从 mydata 容器挂载数据卷:

sudo docker run -it --volumes-from mydata –-name mycon1 ubuntu

sudo docker run -it --volumes-from mydata –-name mycon2 ubuntu

此时容器 mycon1 和 mycon2 都挂载同一个数据卷到相同的目录 /data。三个容器任何一个在该目录下写入数据其他容器都能看到。

可以多次使用 --volumes-from 参数来从多个容器挂载多个数据卷。还可以从其他已经挂载了容器的容器来挂载数据卷。并且使用 --volumes-from 参数所挂载数据卷的容器自身并不需要保持在运行状态。

但删除挂载了数据卷的容器时,数据卷并不会被自动删除。如果要删除一个数据卷,必须在删除一个还挂载着它的容器时显式的使用 docker rm -v 命令来指定同时删除关联的容器。

手动修改mount挂载的json文件,狂神的那个视频里面也有写。

如何让docker启动elasticsearch5 配置文件路径

5) Take a peek at the directory structure to make sure it looks like it did before the mv: ls /var/lib/docker/ (note the trailing slash to resolve the symlink)1.关闭docker

docker上安装mysql,mysql日志存在什么位置

可以看到我当前的名叫mynginx容器只打开了80端理解docker的分层镜像实现 base 镜像共享(DockerFile)口

首先要看你是自己装的还是docker pull的成品,不过不管怎么样,mysql的配置文件名称是不变的,最简单的方法是使用在容器里使用find / -name +文件名称 查找。

docker添加挂载目录或者添加端口

注意:确保指定的远程主机上的挂载点 /home/nick/sshvolume 目录是存在的,否则在启动容器时会报错。

2.sudo su切换到root身份,cd /var/lib/docker/containers/容器id/,进入对应容器目录

在给mynginx容器添加上这条命令:

3.vi hostconfig.json,修改如下,将容器目录/import绑定到主机/data目录:

4.vi config.v2.json,修改如下,添加MountPoints:

5.启动docker

docker ecec -it 容器id /bin/bash进入ls -l /就可以看见import目录

添加端口在这个文件hostconfig.json

首先输入

来设置重启docker之后自动启动该容器。设置完成后再修改hostconfig.json文件中的"PortBindings"就行。

然后进入到该容器的hostconfig.json文件中,增加一个8000的端口

保存后退出

输入docker ps -a查看

发现已经增加了8000端口

若想要增加容器端口,则需要把config.v2.json中的ExedPorts也加上你想添加的端口号

Docker容器日志路径及如何收集

再次启动docker容器ctl start docker

Docker容器运行后,如何进入容器进行作呢看起初我是用SSH。如果恢复只启动一个容器,用SSH还能应付,只需要将容器的22端口映射到本机的一个端口即可。当我启动了五个容器后,每个容器默认是没有配置SSH 的,安装配置SSHD,映射容器SSH端口,...

fabric中的docker有什么用

1.安装Docker在开始前,我们首先得确保在Linux主机中已经安装了Docker。这里,我运行的是CentOS7主机,我们将运行yum管理器和下面的命令来安装Docker。#yuminstalldocker#ctlrestartdocker.serv2.创建Dockerfile现在

docker是一个用Go语言实现的开源项目,可以让我们方便的创建和使用容器,docker将程序以及程序所有的依赖都打包到docker container,这样你的程序可以在任何环境都会有一致的表现,这里程序运行的依赖也就是容器就好比集装箱,容器所处的作系统环境就好比货船这个命令首先利用 Ubuntu 镜像创建了一个容器 worker。又使用 --volumes-from mydata 参数来让 worker 容器挂载 mydata 容器的数据卷。接下来使用 -v $(pwd):/backup 参数来挂载本地的当前目录到 worker 容器的 /backup 目录。或港口,程序的表现只和集装箱有关系(容器),和集装箱放在哪个货船或者哪个港口(作系统)没有关系。

docker 怎么配置nginx 文件路径

doMountpoint 是 volumes 的挂载点,默认是本机 /var/lib/docker/volumes 下的一个目录。cker

c7) restart your containersommit

docker

commit

是往版本控制系统里提交一次变更。使用这种方式制作镜像,本质上是运行一个基础镜像,然后在基础镜像上进行软件安装和修改。

docker映射网络路径

端口映射主要原理是利用host机的ip地址和端口来访问容器ip和端口,类似我们的家用路由器开启的端口映射,能够将运营(注意,命令中没有指定数据卷的信息,也就是说新容器中挂载数据卷的目录和源容器中是一样的。)商分配的公网IP+端口映射成为路由器下方的IP+端口。

在端口映射种方式更改docker的配置文件之前先把容器整体架构图放上。