上一章是了解了怎么创建一个容器,现在我们来把它做成我们自己的库,类似git那样的

首先查看下自己的库有哪些

1
2
3
4
5
➜  ~ docker ps -a
CONTAINER ID        IMAGE                   COMMAND             CREATED             STATUS                      PORTS               NAMES
4cd577624dd2        ubuntu                  "/bin/bash"         2 days ago          Exited (127) 16 hours ago                       little_cat
80ac1b1ba419        ubuntu                  "/bin/bash"         2 days ago          Exited (0) 2 days ago                           determined_bhaskara
ce5104ceef1f        ubuntu                  "/bin/bash"         4 days ago          Exited (0) 4 days ago                           small_hugle

我们上次创建并操作的容器就是名字是little_cat 而且它的容器id为4cd577624dd2 正是我们需要的

接下来就是在docker官网上注册一个账号,过程也很简单,填个账户,邮箱,密码 邮箱再验证一下就好

本地我们登陆一下

1
➜  ~ docker ps -a

输入有效的账户信息就行,他会在 $HOME/.docker/config.json 文件中生成一条 auth 信息

登陆成功后,我们把指定的容器做成我们自己的库

1
➜  ~ docket commit 4cd577624dd2 gaofeifiy/ubuntu-base

这条命令的作用就是把 containerId 为 4cd577624dd2 (也就是 little_cat) 提交给 gaofeifiy/ubuntu-base 这个库, 注意,这里commit的时候要用到id而不是容器的name,我自己试的时候就出现提交为none的情况,也许以后的版本会补上

这个有什么作用呢? 我们查看一下images

1
2
3
4
5
➜  ~ docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
gaofeifiy/ubuntu-base   latest              6f8cfa1871b0        40 minutes ago      227 MB
ubuntu                  16.04               f49eec89601e        4 weeks ago         129.5 MB
ubuntu                  latest              f49eec89601e        4 weeks ago         129.5 MB

我们最早的 little_cat 已经在本地被做成一个基础的images了

直接用它创建一个容器

1
2
3
4
5
6
➜  ~ docker run -t -i --name big_cat gaofeifiy/ubuntu-base /bin/bash


➜  ~ docker ps -a
CONTAINER ID        IMAGE                   COMMAND             CREATED             STATUS                      PORTS               NAMES
10ea9940c6d2        gaofeifiy/ubuntu-base   "/bin/bash"         48 seconds ago      Exited (0) 39 seconds ago                       big_cat

我们用刚才新建的image为基础创建了 big_cat 这个容器

要删除的话也是很简单,这里有两个命令 docker rmdocker rmi

1
2
docker rm 10ea9940c6d2 这是用来删除容器(CONTAINER)的
docker rmi 6f8cfa1871b0 这是用来删除镜像的(IMAGE) 的

有一点需要注意的就是如果要删除的image是有container在使用的话需要先把container给删除再删除image