Docker从哪儿下载?
由于我们访问Docker
官网一般情况下会非常慢,所以我们不得不把目光投向国内的镜像站,还好,DaoCloud
为我们扫清了一系列障碍,点击前往。
你只需要以下步骤:
注册一个
DaoCloud
账号进入下载页面,根据自己的系统下载合适的镜像包
安装完成后配置Docker加速器
打开命令行,执行
docker version
,观察Docker
是否安装成功
入门锦囊
名词解释
-
Image
Image
是一堆文件的集合体,从用户角度来看,它是一个镜像包,它的特征是只读的,它是别人(或者我们自己)构建好的一个环境,在Docker
世界里,我们会经常寻找第三方包,来支持我们的工作,如nginx
,centos
,我们不修改它,我们基于它实例出的container
进行工作。
-
container
Image
是只读的,我们是不可能也没必要去修改Image
的,我们要做的就是实例化Image
,即称为container
,我们所做的修改都是基于container
的,如图所示,container
其实就是Image
的一份拷贝,但是多了一部分可读写的区域,我们就是对这部分进行加工处理的,container
其实也是一系列文件,真正支持我们交互的是Running container
,它多出了一个进程,此进程提供我们与container
读写区域沟通的途径,我们才得以有机会运行Docker。
container
经过我们的处理就像在git
仓库里修改了文件一样,将修改后的container
打快照固化为Image
,这便是Docker
生态的流动源泉。起初,我们可能只是一个壳子,人们陆陆续续为其增添功能,并且固化,经过一系列的串行作业后,这个壳子镜像凝结了前人的智慧,傲娇地展示在我们面前。
命令解释
-
docker run [Image Name]
检查本地是否有Image Name
如果没有的话,则从远端仓库下载
加载
Image
并且实例化container
(实际上执行了docker create
&&docker start
)
-
docker ps
默认显示当前正在运行的
container
加上
-a
可以显示创建过的所有的container
小提示:按住Ctrl + C 可以中断当前前台进程(占用着你的Shell,让你无法继续进行操作的那个进程)
Hello World 1
输入
docker run hello-world
,命令行会打印以下信息
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
535020c3e8ad: Pull complete
af340544ed62: Pull complete
Digest: sha256:a68868bfe696c00866942e8f5ca39e3e31b79c1e50feaee4ce5e28df2f051d5c
Status: Downloaded newer image for hello-world:latest
Hello from Docker.
执行docker ps -a
,将会显示一个列表,显示错乱往往是因为你的命令行工具太窄了,你可以试着全屏显示。我们启动过的所有的container
将会在这里显示。
为什么不能直接执行
docker ps
?hello-world这个Image在创建好container
以后,打印信息,然后自动stop
这个container
,所以它已经不在正在运行的container
列表里了。
Hello World 2
输入
docker run centos /bin/echo 'hello world'
,这一步我们不仅仅启动了一个container
,还传输了一个命令进去执行了。
docker run centos /bin/echo 'Hello world'
Hello world
输入
docker run -it centos
可以启动一个交互性的centos
,如同你正在远程ssh
连接服务器。
神器容器在哪里?
目前为止,我们大约执行了3次docker run
命令,不过目前看来,我们还是回到了自己的shell
进程上,那么刚才执行的那些容器在哪里呢?我们试着再次输入docker ps -a
,仔细观察打印出的数据,我们曾经启动过的容器都在这儿,虽然它们都不处于运行状态,观察最右边的NAMES
字段,Docker
会为每一个容器起一个名字,小猫小狗随机取,如果我们想自己起名的话,请在执行run
命令时加上--name [you_define_name]
参数试试看。
我们当然也可以再次唤醒我们的容器们,执行docker start [container_name]
即可。
我们试着再次启动一个容器。
# 新建一个名为 小明 的容器
docker run -it --name xiaoming centos
# Ctrl + c 退出交互进程
docker stop xiaoming
# 查看最近创建的一个容器 -l -> latest 我们将会看到小明被打印了
docker ps -l
# 我们再次重启小明,但是发现回不到命令行交互模式了
docker start xiaoming
有时候,我们可能会有想进入容器内部,就像一直很熟悉的ssh
连接一样,但是在Docker
里,要尽量规避这种想法,我们可以通过docker exec
去实现这种需求,详情见扩展阅读。
扩展阅读
-
了解原理后,图解
Docker
的运行命令,非常值得一看!!!
-
作为一名正经前端,当然也要对
Docker
尝尝鲜,在DaoCloud
官网上发现了一篇非常不错的文章,大家可以据此了解Docker
。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。