Docker入门级介绍:Docker的简介、Docker的安装及常用的镜像命令和容器命令

     程序员在项目部署的时候,经常会出现这种状况:运维人员说项目有问题,运行不起来;然后你就理直气壮的说,项目没一点问题,你来看看我本地,运行的十分良好......结果主要问题被搁置,讨论起无关紧要的责任问题。不过就这个结果,开发人员没错,运维人员也没错,错就错在没有打包起一套项目的运行环境,因为项目到生产环境中运行,不但要有代码,还要有基础运行环境,依赖的包,依赖的其他应用等,这时就要给大家隆重介绍打包神器--Docker,让离开了本地就水土不服的项目,到任何地方都得大写的服!

Docker的定义是:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

看了它的定义,有人就会恍然大悟的说:哦,我还以为多神奇,原来就是个虚拟机呗!这样理解是正确的吗?我们先来看看官方给出的 Docker 容器和传统虚拟机的对比图:

显然恍然大悟的人只是恍然了,大悟的并不是很对,从上图可以很直观的看出来,虚拟机是首先要在宿主机上安装一个能运行虚拟机的软件,然后在软件上面创建虚拟机,再分配内存、分配磁盘、安装 Linux 操作系统等等一系列的操作,传统虚拟机技术是虚拟出一套硬件后,在其上面运行一个完整的操作系统,然后在该系统上面再运行所需要的应用程序;而 Docker 容器内的应用程序是直接运行于宿主的内核,容器没有自己的内核,更加不会对硬件进行虚拟。因此 Docker 容器比传统的虚拟机更为轻便!但是 Docker 容器技术也是参考虚拟机一步一步的迭代优化过来的!

Docker 是一个 Client-Server 的结构!这点可以参考MySQL的设计,先看看官网给出的架构图:

1、Docker 客户端:用户与 Docker 服务交互的窗口,用来进行命令操作;

2、Docker 服务:Docker 后台运行的服务,Docker Deamon 监听着客户端的请求,并且管理着 Docker 的镜像、容器、网络、磁盘等对象。

3、仓库:远程下载常用的镜像,也可以 Push 包到远程仓库(如Redis、Nginx 等镜像)

讲到了这里,又出现了一对比较容易搞混的名词:容器和镜像。

Docker 镜像是一个只读模板,可以用来创建 Docker 容器。镜像是一种轻量级的、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件。它包含运行某个软件所需要的所有的内容,包括代码、运行时、库、环境变量、配置文件等。Docker 的容器是用镜像创建的运行实例,Docker 可以利用容器独立运行一个或一组应用。我们可以使用客户端或者 API 控制容器的启动、开始、停止、删除。每个容器之间是相互隔离的。就像我们在应用开发时,镜像就是我们创建的类,而容器是我们要在业务中用到这个类,要对这个类进行实例化。

我们先用一些简单的命令来初窥一下Docker。

1、docker version:查看 Docker 客户端和服务的版本。

2、docker info:查看 Docker 的基本信息,如有多少容器、多少镜像等。

3、docker --help:查看 Docker 的帮助信息,这个命令可以查看所有 Docker 支持的命令

4、docker images:查看本地主机上所有的镜像。

以上是我们对Docker做了简单介绍,有了一个犹抱琵琶半遮面的认识,现在就揭开这半面黑纱,从Docker的安装到常用的一些操作命令,我们一步步的去熟悉它!

我的电脑是Mac,可以通过brew来安装docker,命令是:brew cask install docker,这个安装会比较耗时,如果是其他的系统,官方也提供了相对的安装及使用教程:

下面就是我用Mac的brew工具来进行安装:

中间还有一次断开了,不过耗时一个多小时,还是安装完成了,最后我的终端显示了一杯啤酒,这就是成功安装,小酒喝起来。打开应用,可以看到有Docker的图标:

点击这个图标,就可以启动docker服务了!这是在终端输入docker -v来验证一下:

成功启动,下面来介绍一些常用的Docker命令:镜像命令和容器命令。

镜像命令:

1、docker images:查看本地主机上所有的镜像

现在我本地主机还没有相关镜像,我先去仓库里拉取几个,以便后续的演示!

还可以通过docker images 应用名 指定某个具体的镜像查看对应信息:

2、docker rmi:删除本地的镜像,加上 -f 参数进行强制删除

3、docker search:根据镜像名称搜索远程仓库中的镜像

4、docker pull:从远程拉取镜像,可以指定版本号,如果不指定版本号,将会下载最新版本的应用;

指定版本号命令是:docker pull tomcat:版本号

容器命令:

相关的镜像命令我们已经介绍过了,那么再来介绍一下容器命令就完美了!

1、docker run [OPTIONS] IMAGE [COMMAND] [ARG...]:基于指定的镜像运行一个容器,如果本地有指定的镜像则使用本地镜像,如果没有则从远程拉取对应的镜像然后启动!

常用参数如下:

-d:启动容器,并且后台运行

-i:以交互模式运行容器,通常与 -t 同时使用

-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用

-P:随机端口映射,容器内部端口随机映射到主机的端口。

-p:指定端口映射,格式为:宿主机端口:容器端口。

-v:建立宿主机与容器目录的同步。

--name="自定义名称":为容器指定一个名称,不指定会产生随机的名字)

我们来运行刚拉取的tomcat镜像,命令如下:

tomcat运行起来了,docker容器的端口8080映射到宿主机的端口8090,这时访问宿主机的8090端口,就是访问docker中8080端口对应的服务:

这个熟悉的界面又展现到我们眼前了!由于启动的时候加上了-t 的参数,所以容器启动后就进入到了容器的内部的命令窗口,打印了很多 Tomcat 启动的日志。

2、docker ps:该命令查看正在运行的容器的信息,这里能看到容器的唯一 id,启动时间等等,docker ps -a 可以查看运行中与停止的所有容器

3、docker attach [OPTIONS] CONTAINER:运行这个命令会进入容器内部

4、docker exec [OPTIONS] CONTAINER:这个命令与 attach 一样都可以再次进入后台运行的容器,但是该命令可以不进入容器而在运行的容器中执行命令!比 attach 更加强大!

5、docker stop、docker kill、docker restart:这三个命令分别用来停止容器、强制停止容器和重启容器

6、docker rm:使用这个命令就可以删除某个容器,因为通过 Stop 和 Kill 停止的容器还存在于 Docker 中,而使用 rm 命令操作后的容器将不再存在!

关于Docker的安装,镜像相关命令以及容器相关的命令就介绍到这里,自己动手试一下吧!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章