(说在前面,对于文章中有什么不妥的地方还请指出错误,以免误导后来者)
什么是 Docker
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。 该段介绍引自 Docker中文
一些应用场景:腾讯云服务器转移至阿里云服务器,这往往需要重新部署和安装很多东西,例如:Nginx,MongoDB(MySQL),Nodejs等等。如果使用了 Docker 的话,则可以通过容器打包应用,在新的服务器上启动需要的容器即可。轻松实现服务器的转移。
如果概念还是比较模糊,可以看看知乎的解释:如何通俗解释Docker是什么?
容器,镜像,仓库
举个栗子:假如我有一抽屉的的系统光盘,里面有 WinXp,Win7,Win8,Win10,CentOS6.5,Centos7 等等,每个光盘装有一个系统,还有一台装有 Win10 系统的 PC 机。那么在这个栗子当中,其中的比喻关系如下:
镜像 --> 某个系统盘
仓库 --> 一抽屉的系统盘
容器 --> PC 机(物理硬件)
每个容器内运行一个应用,不同的容器相互隔离,容器之间也可以建立通信机制。容器的创建和停止都是非常迅速的,所需要的资源也远远低于虚拟机。
Centos7 安装 Docker
我的环境是腾讯云中的 CentOS7 服务器。
yum install docker
Docker RPM 包已经包含在 CentOS-Extra 仓库中,所以我们可以直接使用 yum 安装
启动 Docker:
service docker start
Docker 基础命令##
docker version
查看 docker 的版本信息
docker images
查看当前的镜像信息
docker ps
查看当前运行中的容器
docker ps -a
查看所有的容器
<h3>镜像的增删改查:</h1>
增
docker pull hello-world
从Docker hub的Registry下载一个名为 hello-world 的镜像
docker run hello-world
在容器中跑名为 hello-world 的镜像
删
docker rmi hello-world
在本地中删除一个名为 hello-world 的镜像
docker rmi 123456
在本地中删除一个 id 为 123456 的镜像
改
其实这也算是新建镜像了
docker commit -m "describe new image" -a "author message" containerId newImageName
-m 镜像描述
-a 作者信息
containerId 容器 Id
newImageName 新的镜像名称
查
docker search image_name
例如:docker search mysql
搜索远程仓库中的共享镜像,默认为 Docker Hub。以上代码为搜索 mysql 的镜像。
实例演示:启动一个 Nginx 服务
1. docker search nginx
2. docker pull nginx
3. docker images
4. docker run -p 8080:80 -d nginx
- 从仓库中搜索一下 Nginx ,查看相关信息(可选)
- 从仓库中下载 Nginx 镜像
- 查看本地的 Nginx 镜像(可选)
- 启动 Nginx 镜像,命令代码中的参数解释如下:
-p 8080:80 --> 指定端口号,8080 为本机端口号,80 为容器端口号
启动之后可以通过 http://ip_address:8080 就可以访问到刚刚启动的 Nginx
我这边是云端服务器,所以这边抹掉了我的 ip 地址,如果你是本机访问,可直接访问 http:localhost:8080 。简单几行代码就运行了 Nginx 是不是很方便?
参考文章:
大白话Docker入门(一)
Docker 使用指南 (一)—— 基本操作