上次部署了环境,我们试试从命令获取镜像,只要是Linux,就可以用Linux相关的镜像?
docker pull ubuntu:16.04
运行这个Ubuntu里面的bash玩玩.
docker run -it --rm ubuntu:16.04 bash
神奇呢,果然变成Ubuntu了.
解释下命令:
-it
:这是两个参数,一个是-i
:交互式操作,一个是-t
终端.我们这里打算进入bash
执行一些命令并查看返回结果,因此我们需要交互式终端.--rm
:这个参数是说容器退出后随之将其删除.默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动docker rm
.我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用--rm
可以避免浪费空间.ubuntu:16.04
:这是指用ubuntu:16.04
镜像为基础来启动容器.bash
:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是bash
.
当然,上节我们才装了个管理工具,管理工具也是可以装镜像的.尝试部署一个Web服务.绑定在公网的1080和10443端口看看.太简单了,连命令都不用打.
竟然这么快就好了.
除了从图形控制台看之外,还可以在命令看镜像...
这里看到的空间,是实际消耗,在Docker Hub看到的是压缩大小.还可以用下面命令查看数据卷等占用.
docker system df
也许用一段时间之后,这里数据就变了.
把现在的Nginx镜像关闭,用docker rm或者控制台都可以.然后用命令启动一个nginx,这次我就要80端口了.
docker run --name webserver <span class="hljs-_">-d</span> -p 80:80 nginx
用下面命令进入容器.
docker <span class="hljs-built_in">exec</span> -it webserver bash
简单地改变了主页内容.
确实改变了.
实际上,修改的这些文件,是独立于容器的包的,他在储存层.用过git都知道diff这玩意.我们不妨也diff下这个docker.
竟然多了这么多文件.当然,docker也是可以commit保存内容的.
docker commit --author <span class="hljs-string">"TaterLi <admin@lijingquan.net>"</span> --message <span class="hljs-string">"modified index html"</span> webserver helloweb:v1
再用docker image ls看看有什么Image.
哈,我们可以启动我们的Image,映射到81端口.
docker run --name web2 -d -p 81:80 helloweb:v1
目标完成(PS,玩着玩着,突然被墙,又换了一个IP...):
但是,我们commit了很多我们不需要的东西啊.