docker-image container 基本操做 -经常使用命令

基本概念:

  • container

容器。能够把每一个 container 看作是一个独立的主机。 container 的建立一般有一个 image 做为其模板。类比成虚拟机的话能够理解为 image 就是虚拟机的镜像,而 container 就是一个个正在运行的虚拟机。一个虚拟机镜像能够建立出多个运行的虚拟主机且相互独立。 注意:container 一旦建立若是没有用 rm 命令移除,将会一直存在。因此用完后记得删除哦。python

  • image

镜像。image 至关于 container 的模板,container 建立后里面有什么软件彻底取决于它使用什么 image 。image 能够经过 container 建立(至关于把此时 container 的状态保存成快照),也能够经过 Dockerfile (一个文本文件,里面使用 docker 规定的一些写法)来建立。其中经过 Dockerfile 建立的方法能让环境配置和代码一块儿被版本库一块儿管理。linux

  • registry

存放镜像的仓库。只要能链接到 registry 每一个人均可以很方便地经过 pull 命令从仓库中获取镜像。docker 默认使用的仓库是 docker hub,国内可使用 DaoCloud 来创建 Mirror 链接到 docker hub,进而加快获取 image 的速度。git

  • boot2docker

一个轻量级 linux 虚拟机,主要是为了让非 linux 系统也能用上 docker 。它实质上是一个 virtualbox 虚拟主机+一个能管理这个虚拟主机的命令行工具。因为这个虚拟主机的存在,在非 linux 系统上 container 须要获取一些物理系统资源(如 usb 设备)时不只须要配置 docker 命令,还须要配置 boot2docker 这个虚拟主机的资源配置。程序员

经常使用命令表

通用:github

操做 命令 示例
查看 docker 版本 docker version docker version
查看 docker 信息 docker info docker info
查看某命令 help 信息 docker help [command] docker help attach
查看 docker help 信息 docker --help docker --help
  • container 相关:
操做 命令 示例
建立 container docker create docker create chenhengjie123/xwalkdriver
建立并运行 container docker run docker run chenhengjie123/xwalkdriver /bin/bash
建立并运行 container 后进入其 bash 控制台 docker run -t -i image /bin/bash docker run -t -i ubuntu /bin/bash
建立并运行 container 并让其在后台运行,并端口映射 docker run -p [port in container]:[port in physical system] -d [image] [command] docker run -p 5000:5000 -d training/webapp python app.py
查看正在运行的全部 container 信息 docker ps docker ps
查看最后建立的 container docker ps -l docker ps -l
查看全部 container ,包括正在运行和已经关闭的 docker ps -a docker ps -a
输出指定 container 的 stdout 信息(用来看 log ,效果和 tail -f 相似,会实时输出。) docker logs -f [container] docker logs -f nostalgic_morse
获取 container 指定端口映射关系 docker port [container] [port] docker port nostalgic_morse 5000
查看 container 进程列表 docker top [container] docker top nostalgic_morse
查看 container 详细信息 docker inspect [container] docker inspect nostalgic_morse
中止 continer docker stop [container] docker stop nostalgic_morse
强制中止 container docker kill [container] docker kill nostalgic_morse
启动一个已经中止的 container docker start [container] docker start nostalgic_morse
重启 container (若 container 处于关闭状态,则直接启动) docker restart [container] docker restart nostalgic_morse
删除 container docker rm [container] docker rm nostalgic_morse

命令中须要指定 container 时,既可以使用其名称,也可以使用其 id 。web

  • image 相关:
操做 命令 示例
从 container 建立 image docker commit [container] [imageName] docker commit nostalgic_morse ouruser/sinatra:v2
从 Dockerfile 建立 image docker build -t [imageName] [pathToFolder] docker build ouruser/sinatra:v3 .
查看本地全部 image docker images docker images
在 registry 中搜索镜像 docker search [query] docker search ubuntu
从 registry 中获取镜像 (若无指定 tag 名称,则默认使用 latest 这个 tag) docker pull [imageName] docker pull ubuntu:14.04, docker pull training/webapp
给 image 打 tag docker tag [imageId] [imageName] docker tag 5db5f8471261 ouruser/sinatra:devel
把本地 image 上传到 registry 中 (此时会把全部 tag 都上传上去) docker push [imageName] docker push ouruser/sinatra
删除本地 image docker rmi [image] docker rmi training/sinatra

注意:image 中没有指定 tag 名称的话默认使用 latest 这个 tag 。然而 latest 的含义和 VCS 中的 head 不同,不是表明最新一个镜像,仅仅是表明 tag 名称为 latest 的镜像。若不存在 tag 名称为 latest 的镜像则会报错。docker

总结

docker 虽然是一个虚拟化技术,但使用上却更像是在管理系统软件或者代码。里面的一些 pstoprm 命令让使用 Linux 命令的人感到十分亲切(虽然它们的语义有点不同。。。),startstoprestart 让你感受像是在控制 service ,而 pushpullcommittag 又让你以为像是在使用 git 。所以程序员会感到很亲切且容易上手。ubuntu

同时因为可使用 Dockerfile 进行 image 的构建,且 docker hub 支持从 github 等地方自动根据 Dockerfile 进行构建,因此 docker 把运行环境也集成到 CI 中了。windows

美中不足的是因为 docker 目前仅支持 linux 上的容器技术,所以它要在非 Linux 系统下运行必须加多一个虚拟机层。这会形成一些在 Linux 上运行不会出现的问题(ip 地址、硬件资源、文件映射等),同时因为基于 linux ,一些 windows 的程序会水土不服,泛用性比虚拟机差一些。bash

但带来的好处是占用的系统资源低不少。一个只能开数个虚拟机的电脑通常能开数十个 container ,且 container 的启动时间通常在数秒内,比虚拟机快得多。另外,因为 docker 的 image 除了一些特殊的基础镜像外基本都是增量镜像,所以重复部分不会耗费额外的资源,因此几个看起来有数 g 的 image 若是里面使用的基础镜像有重复部分(大部分状况下都会有部分重复),那么它们实际占用空间将会小得多。

相关文章
相关标签/搜索