随着docker现在越来越热门,自己也对docker的好奇心也越来越重,终于忍不住利用了一些时间把docker学习一遍。目前的资料不少,但是由于docker的发展较快,每个团队对docker的关注点也并不相同,大部分的文章还是不够完整和易懂,所以希望有这样一篇文章能让大家通过简单的阅读来客观全面的认识一下docker。
(提前申明一下,文章内容不会涉及较深入的使用,主要为了阐述docker的概念和入门的使用。并且我也是docker的初学者,并没有过丰富的使用经验,所以内容若有不妥,请大家指正,希望能在日后不断的完善。)
一下接触这么多东西肯定有一点点晕了吧,没关系,我们把这些串起来走一遍就会好了。
docker version
ruideMacBook-Pro:~ ruihuang$ docker version
Client:
Version: 1.12.1
API version: 1.24
Go version: go1.7.1
Git commit: 6f9534c
Built: Thu Sep 8 10:31:18 2016
OS/Arch: darwin/amd64
Server:
Version: 1.12.1
API version: 1.24
Go version: go1.6.3
Git commit: 23cf638
Built: Thu Aug 18 17:52:38 2016
OS/Arch: linux/amd64
docker images
ruideMacBook-Pro:~ ruihuang$ docker images
REPOSITORY TAG IMAGE ID CREATED
job1 latest de714ebe3a54 29 hours ago
ubuntu latest f753707788c5 3 weeks ago
busybox latest e02e811dd08f 4 weeks ago
可以看到我们拥有3个images,其中ubuntu大家都知道,busybox是一个linux下的大工具箱,它集成压缩了 Linux 的许多工具和命令,而job1则是我自己基于busybox创建的一个image,可以通过busybox的工具进行一些命令的执行,比如 echo 'hello world'。
docker ps
ruideMacBook-Pro:~ ruihuang$ docker ps
CONTAINER ID IMAGE COMMAND CREATED
2c08ddb62c77 ubuntu "/bin/bash" 28 hours ago
5aa853bdb033 ubuntu "/bin/bash" 28 hours ago
这里看到的都是正在运行的Container,如果要查看所有的Container就使用 docker ps -a
docker pull image-name
ruideMacBook-Pro:~ ruihuang$ docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
c04b14da8d14: Pull complete
Digest: sha256:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9
Status: Downloaded newer image for hello-world:latest
再看一下现在images,命令: docker images
ruideMacBook-Pro:~ ruihuang$ docker images
REPOSITORY TAG IMAGE ID CREATED
job1 latest de714ebe3a54 30 hours ago
ubuntu latest f753707788c5 3 weeks ago
busybox latest e02e811dd08f 4 weeks ago
hello-world latest c54a2cc56cbb 4 months ago
我们看到刚才我们从docker hub上面下载了一个docker官方已经制作好的叫做hello-world的image,下载完成后,就在本地可以查看到这个image了。
docker run image-name
ruideMacBook-Pro:~ ruihuang$ docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.
这个image运行后很简单,就是打印了这段话。告诉了我们,我们已经成功的让docker daemon从docker hub上拉了一个"hello-world"的image,并且通过这个image创建了一个container,并且通过daemon将输出的内容传回了docker client,也就是我们现在看到的这段话。
docker ps -a
ruideMacBook-Pro:~ ruihuang$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS
3d9b24449cb3 hello-world "/hello" 9 minutes ago Exited (0) 9 minutes ago
c08ddb62c77 ubuntu "/bin/bash" 28 hours ago Up 28 hours
首先看到,确实已经创建了docker container了,可见 docker run
的命令实际上是create 和 start的结合命令,基于hello-world的image创建并启动了container。container启动后执行了打印的程序,打印完上面我们看到的那句话,程序执行完成,container也跟着关闭了。从STATUS可以看出,在9分钟前hello-world的这个container已经exited了。
好了通过这个简单的演示,希望大家已经初步认识了docker是怎么运作的。下面我们再来聊docker的概念和他可以为我们带来什么吧。