Cleanup Docker Volumes

For Docker 1.9 and up

docker volume rm $(docker volume ls -qf dangling=true)

Reference:

chadoe/docker-cleanup-volumes

阿里云Ubuntu安装Docker环境

环境

Docker要求Ubuntu操作系统为64位,并且Lunix内核版本至少是3.10。

安装Docker

更新包管理器,并安装相关程序

$ sudo apt-get update

$ sudo apt-get install linux-image-generic-lts-trusty

$ sudo reboot

从阿里云的镜像安装Docker

$ su root

$ curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -

验证Dock......

Docker共享目录的读写权限问题

问题

在创建容器时,将数据文件所在的目录作为共享目录单独加载进来是一种很常见的做法。这样做的好处是当容器被销毁时,共享目录并不会受影响。

不过该方法也会带来一个问题,那就是当容器和宿主机用户的UID不一致,而且容器内用户的读写权限又高于宿主机的用户时,宿主机的用户是无法修改容器在该目录写入的文件的。

解决方案

Docker项目上有关于该问题的讨论。根据讨论的结果来看,目前尚没有一个比较好的解决方法。

以下是一个相对可行的临时方案。想法是在创建镜像的时候,我们就以宿主机用户的UID和权限创建容器内的用户。这样在创建和使用容器的时候,容器和宿主机的用户就能够保持一致,从而规避权限冲突的......

在不同设备间传递Docker镜像

在国内build Docker镜像是一件痛苦的事情。

不过,如果恰好有一位同事已经在本地build好了一个镜像,那么我们可以通过以下方式将镜像存储成一个文件,再拷贝到自己的电脑里面,从而避免再次build的麻烦。

将Docker镜像保存为一个文件

docker save -o <save image to path> <image name>

通过cp或scp命令将镜像文件拷贝至本地

导入Docker镜像文件

docker load -i <path to image tar file>

Docker镜像常用操作

什么是Docker镜像Docker镜像的结构

Docker镜像是由文件系统叠加而成。

最底端是一个引导文件系统,即bootfs,类似典型的Linux/Unix的引导文件系统;

第二层是root文件系统rootfs,它位于引导文件系统之上;rootfs可以是一种或多种操作系统;

Docker将这样的文件系统称为镜像。

镜像分层框架(image-layering framework)

一个镜像可以放到另外一个镜像的顶部。每个只读镜像层都是只读的,并且以后永远不会变化。

层次结构如下图:

Docker容器常用操作

确保Docker已经准备就绪$ docker info

启动容器$ docker run --name sad_wozniak -i -t ubuntu /bin/bash

--name指定创建容器的名称,不指定的话Docker会随机设定一个名称;

-i标志保证容器中的STDIN是开启的;

-t告诉Docker要为创建的容器分配一个伪tty终端;

这两个参数保证创建的容器是能够与用户进行交互的,而不是一个运行在后台服务的容器。

ubuntu是镜像的名称,ubuntu镜像是一个常备镜像,由Docker公司提供,保存在Docker Hub Registry上;

/bin/ba......