容器识别方式有三种:名称,标识符id和截断id
1.容器名称:
docker run --name web nginx-latest
这里的参数name,就是我们所说的容器名称,名称的好处是容易理解,但是不利于做自动化。
现在有一个需求,创建多个nginx容器。如果你采用下面这种方法:
docker run -d --name webid nginx
docker run -d --name webid nginx
会报错:
报错原因是:容器名字重复
如果想创建多个nginx容器,就需要每次修改name,才不会报错。可以看到,使用容器名字来区分容器非常不利于自动化。这时候我们就可以通过容器标识符id来区分容器。
2.容器标识符id:
容器标识符的使用方式有两种,一个是id变量,一个是id文件。
容器id变量:
在容器启动(docker run)或者创建(docker create)的时候,会在屏幕上打印出容器标识符id。如果我们想后续使用这个id,只需要在创建容器时,把它赋值给一个shell变量:
CID=$(docker create nginx:latest)
然后可以打印出来
echo $CID
因为容器标识符id比较长,通常我们会使用它的后12位截取id来作为唯一标识。比如我们想获取最后创建的那个容器的截断ID,可以使用命令:
CID=$(docker ps --latest --quiet)
--latest展示最新创建的容器信息,--quiet展示id,如果加上参数--no-trunc就可以获得完整的id。
容器id文件:
在创建容器的时候,可以使用cidfile的参数指定一个文件来存储cid,更方便的提供cid的共享。
docker create --cidfile /containers/web/customer1/web.cid nginx
但是指定的目录也有可能冲突,可以指定一个已知目录作为父目录,进一步通过客户 ID 将这个已知目录划分成多个子目录来存放 web 容器。这将会产生诸如/containers/web/customer1/web.cid或/containers/web/customer8/web.cid的路径。