Docker 包括三个基本概念:

  • 镜像(image):相当于一个root文件系统。
  • 容器(Container):镜像和容器的关系就像面向对象的类和实体的关系。镜像是静态的定义,容器是运行的实体。
  • 仓库(Repository):仓库可以看成一个代码控制中心,用来保存镜像。

Docker 使用

镜像使用

列出镜像列表

$ docker images  

同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本。我们使用 REPOSITORY:TAG 来定义不同的镜像。

例如,我们如果要使用版本为15.10的ubuntu系统镜像来运行容器时,命令如下:

$ docker run -t -i ubuntu:15.10 /bin/bash 
root@d77ccb2e5cca:/#
参数说明:

-i 交互式操作; -t: 终端; ubuntu:15.10: 镜像:版本; /bin/bash:命令。

获取一个新的镜像

$ docker pull ubuntu:13.10

查找镜像

$  docker search httpd

删除镜像

$ docker rmi hello-world

创建镜像(Dokerfile)

创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。

$ cat Dockerfile 
FROM    centos:6.7
MAINTAINER      Fisher "fisher@sudops.com"

RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D

每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是 大写 的。

第一条FROM,指定使用哪个镜像源

RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。

然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。

构建镜像

$ docker build -t runoob/centos:6.7 .

参数说明: -t :指定要创建的目标镜像名 . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

$ docker images  # 查看创建的镜像已经在列表中存在,我们可以使用新的镜像来创建容器。

设置镜像标签

$ docker tag <镜像 ID> runoob/centos:dev

docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)

容器使用

启动容器

$ docker run -it ubuntu /bin/bash
参数说明

-t: 在新容器内指定一个伪终端或终端; -i: 允许你对容器内的标准输入 (STDIN) 进行交互; ubuntu: ubuntu 镜像; /bin/bash:放在镜像名后的是命令。

退出终端,直接输入 exit:

root@ed09e4490c57:/# exit

启动已停止运行的容器

查看所有的容器

$ docker ps -a

使用 docker start 启动一个已停止的容器

$ docker start <容器 ID> 

后台运行

$ docker run -itd --name ubuntu-test ubuntu /bin/bash

:加了 -d 参数默认不会进入容器。

停止一个容器

$ docker stop <容器 ID>

重启

$ docker restart <容器 ID>

进入容器

attach 命令
$ docker attach <容器 ID> 

: 如果从这个容器退出,会导致容器的停止。

exec 命令
$ docker exec -it <容器 ID> /bin/bash

: 如果从这个容器退出,容器不会停止。

删除容器

$ docker rm -f <容器 ID>

容器连接

runoob@runoob:~$ docker run -d -p 5000:5000 training/webapp python app.py
33e4523d30aaf0258915c368e66e03b49535de0ef20317d3f639d40222ba6bc0

我们可以使用 -p-P 标识来指定容器端口绑定到主机端口。

参数说明

-p: 是容器内部端口绑定到指定的主机端口。 -P: 是容器内部端口随机映射到主机的高端口。

参考文献

runoob