使用docker run命令已经创建一个docker容器,我们先来解释一下刚才那条命令:
docker run −t −i docker.cn/docker/centos:centos6 /bin/bash
docker run:将镜像实例化成一个容器,有点像java中的new。
docker run的两个参数:
-i参数: 是以交互模式启动容器
-t参数: 分配一个tty终端
后面还跟了一条命令 /bin/bash,指要在容器中运行的命令
其实docker容器中运行的进程实际上就是宿主机上的进程。docker实际上使用了命名空间(namespace)来对进程进行隔离,使不同namespace的进程彼此不可见,同时使用cgroup来对彼此隔离的进程的资源进行限制,docker的容器(container)其实就是一个进程的容器,而并不是一个全虚拟化的操作系统,所以他不会有什么init进程。docker将进程、进程所需要的操作系统、运行环境称为容器。所以它比传统的基于hypervisor的虚拟机拥有更高的效率,并使用更低的资源。它实际上是一个内核级别的虚拟化技术,容器还是在使用宿主机的内核。
.什么是镜像仓库
很简单:它就是一个存储和共享镜像文件的地方。
docker pull : 从镜像仓库中拉取或者更新指定镜像
因为国情的原因,国内下载 Docker HUB 官方的相关镜像比较慢,可以使用 docker.cn 镜像,镜像保持和官方一致,关键是速度块,推荐使用。
docker基础用法:
Search images
$ sudo docker search ubuntu
Pull images
$ sudo docker pull ubuntu # 获取 ubuntu 官方镜像
$ sudo docker images # 查看当前镜像列表
Running an interactive shell
$ sudo docker run -it ubuntu:14.04 /bin/bash
- docker run - 运行一个容器
- -t - 分配一个(伪)tty (link is external)
- -i - 交互模式 (so we can interact with it)
- ubuntu:14.04 - 使用 ubuntu 基础镜像 14.04
- /bin/bash - 运行命令 bash shell
注: ubuntu 会有多个版本,通过指定 tag 来启动特定的版本 [image]:[tag]
退出交互模式:
ctrl+d
$ sudo docker ps # 查看当前运行的容器, ps -a 列出当前系统所有的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6c9129e9df10 ubuntu:14.04 /bin/bash 6 minutes ago Up 6 minutes cranky_babbage
为镜像添加tag:
下面是tag一个id为0e5574283393的本地镜像到“fedora”存储库,tag名称version1.0:
docker tag 0e5574283393 fedora/httpd:version1.0
或者docker tag 0e5574283393 version1.0