9.2 Docker的镜像和容器
Docker的镜像类似虚拟机的快照,创建Docker镜像有几种方式,多数是在一个现有镜像基础上创建新镜像,也可以从头构建一个镜像。镜像是一个只读模板,用来运行Docker容器。
容器负责应用程序的运行,包括操作系统、用户添加的文件以及元数据。
Docker官方提供了很多镜像,Docker中的pull命令是用来获取镜像的,执行下面的命令,就会从官方仓库里获取Ubuntu 14.04版本的系统:
root@liu-ubuntu:~# docker pull ubuntu:14.04
14.04: Pulling from library/ubuntu
28bfaceaff9b: Pull complete
ac540055f2f8: Pull complete
2965585ef8b8: Pull complete
2416bb9f3ad2: Pull complete
93b55a6a6807: Pull complete
Digest: sha256:885bb6705b01d99544ddb98cbe4e4555d1efe1d052cef90832e72a0688ac6b37
Status: Downloaded newer image for ubuntu:14.04
images命令用来查看本机Docker中存在哪些镜像,运行 docker images
就会看到刚才获取的Ubuntu14.04系统:
root@liu-ubuntu:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 14.04 578c3e61a98c 2 weeks ago 223 MB
现在,把这个镜像运行起来,运行起来的镜像就叫做容器了,容器是可读写的,这样就可以在容器里进行软件配置,部署应用,run
命令就是将镜像运行起来的,运行:
docker run -it ubuntu:14.04
终端交互的用户名变掉了,说明进入到了容器的内部,效果如下:
root@liu-ubuntu:~# docker run -it ubuntu:14.04
root@43981d58800d:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
root@43981d58800d:/# cat /etc/issue
Ubuntu 14.04.5 LTS \n \l
现在我们所做的任何操作都是针对于目前容器而言的,不会影响到原来的系统。例如,我们在里面安装下nginx服务器,运行如下命令:
apt-get update
apt-get install -y nginx
完成后执行nginx -v
就会发现我们已经将nginx安装成功:
root@43981d58800d:/# nginx -v
nginx version: nginx/1.4.6 (Ubuntu)