Docker是作为新一代运维必会的工具。它是容器云时代的产物。
容器云是基于微服务框架产生的,微服务的部署离不开环境的搭建。每次产品上线,环境的搭建总是最头疼的事情。
港口中的集装箱就是容器云中的容器最好的比喻,不管你是汽车、飞机、大炮等,各种各样的货物都被封装在集装箱中,只要是集装箱,港口就能接收。
产品就好像货物,每种货物需要的环境不同,你比如海鲜,需要冷冻。汽车需要架子摆放,需要避震装置。化学物品需要隔离装置等等。这种环境的搭建都被封装在集装箱之中(我们这里就是docker)。
下面就来启动一个Docker所需要的步骤和其中涉及到的讲述命令。
安装
这里只演示mac下安装,mac下安装很简单,去官网找到它的下载地址。
启动
启动一个docker需要镜像。
- 镜像
Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。说白了就是一个文件系统。 - 仓库
最常使用的 Registry 公开服务是官方的 Docker Hub,这也是默认的 Registry,并拥有大量的高质量的官方镜像。除此以外,还有 CoreOS 的 Quay.io,CoreOS 相关的镜像存储在这里;Google 的 Google Container Registry,Kubernetes 的镜像使用的就是这个服务。
要启动一个Docker首先就要看看本地有哪些镜像
docker images
找出你想要启动的镜像,比如nginx
docker -d -p 80:80 --name webserver nginx
- -d 将这个docker放在后台作为守护进程。
- -p <宿主机要映射的端口(也可以是ip:端口)>:<docker要暴露的端口>
- --name docker的名字,有时候打id太烦了可以用这个。
之后你就可以的打开网址:127.0.0.1去查看nginx的欢迎test页面了。
如果你想要换一个欢迎页面,就要进入这个docker
docker exec -it <容器名或者ID> bash //bash是指使用bash命令行
echo '<h1>hello Docker</h1>' > /usr/share/nginx/html/index.html
然后你在打开127.0.0.1,欢迎界面就变了。
保存镜像
一个docker相当于一个虚拟机,你可以对这个虚拟机装很多服务和环境,装好之后你希望下棋启动的时候继续用这个虚拟机而不是去重新新建一个,所以你需要将这个镜像保存,下次启动。
其实,把docker当成git来理解其实是很好的。因为相同的他们都有仓库,都可以将修改过的镜像/代码提交。并且可以回退。所以,有一种很简单但却不推荐使用的方法
docker commit
--author <作者名>
--message <相当于git的commit -m>
[容器名、ID]
[仓库名:TAG]
这样就可以保存了,下次再启动的时候找到你保存的镜像,就可以了。但是这种方法的缺陷就在于
我们修改了容器的文件,也就是改动了容器的存储层。我们可以通过 docker diff 命令看到具体的改动.
要知道,当我们运行一个容器的时候(如果不使用卷的话),我们做的任何文件修改都会被记录于容器存储层里。而 Docker 提供了一个 docker commit 命令,可以将容器的存储层保存下来成为镜像。换句话说,就是在原有镜像的基础上,再叠加上容器的存储层,并构成新的镜像。以后我们运行这个新镜像的时候,就会拥有原有容器最后的文件变化。
所以真正的使用方法不会去使用这个命令,而是用dockerfile代替。