前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么是Docker?Docker的快速入门教程

什么是Docker?Docker的快速入门教程

作者头像
沈唁
发布2018-08-08 09:22:44
4650
发布2018-08-08 09:22:44
举报
文章被收录于专栏:沈唁志沈唁志

Docker 从2013年发布至今, 许多人并不清楚 Docker 到底是什么,要解决什么问题,好处又在哪里?

虚拟化技术

在说 Docker 之前先说一下虚拟化技术, 因为 Docker 的容器化技术是虚拟化的一种体现形式,因此我们要学习容器化技术之前,需要先了解一下什么是虚拟化技术

所谓的虚拟化其实就是一种资源管理技术,是将计算机的各种实体资源进行虚拟化

虚拟化技术种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化(vip)、桌面虚拟化、服务虚拟化、虚拟机等等

目的就是:提高我们计算机的使用率

在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件对资源充分利用

虚拟化常用架构的有:全虚拟化架构、OS层虚拟化架构、硬件层虚拟化

Docker

Docker是什么?

Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从Apache2.0协议开源

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化

总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样

Docker的用途

通过该技术可以快速搭建环境,比如本地测试他人的软件、持续集成的时候提供单元测试和构建的环境,也可以提供弹性的云服务以及组建微服务架构

Docker 的安装

Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。企业版包含了一些收费服务,个人开发者一般用不到,下面的介绍都针对社区版

Docker CE 的具体安装请参考官方文档:Docker文档

正好使用云加社区给的优惠券,买了1H3M的服务器,我演示使用便利脚本进行安装,命令如下:

代码语言:javascript
复制
sudo wget -qO- https://get.docker.com/ | sh

不建议在生产环境中使用这个脚本

安装完成后,运行下面的命令,验证是否安装成功

代码语言:javascript
复制
$ docker -v
# 或者
$ docker version
# 或者
$ docker info

看到版本号就表示安装成功咯

Docker 需要用户具有 sudo 权限,为了避免每次命令都输入sudo,可以把用户加入 Docker 用户组(官方文档

代码语言:javascript
复制
$ sudo usermod -aG docker $USER #你的用户名

image 文件

image文件其实就是镜像文件,不然每次image的以为是图片?

Docker 把应用程序及其依赖,打包在 image 文件里面只有通过这个文件,才能生成 Docker 容器

image 文件可以看作是容器的模板,Docker 根据 image 文件生成容器的实例,同一个 image 文件,可以生成多个同时运行的容器实例

image 是二进制文件,实际开发中,一个 image 文件往往通过继承另一个 image 文件,加上一些个性化设置而生成,举例来说,你可以在 Ubuntu 的 image 基础上,往里面加入 Apache 服务器,形成你的 image

Docker的使用

Docker 的使用其实很简单,就是获取镜像(docker pull),通过镜像创建带环境的系统(docker run

常用命令:

代码语言:javascript
复制
docker  pull    获取镜像(image)
docker  images  列出镜像(image)
docker  rmi     删除镜像(image)
docker  container ls 列出本机正在运行的容器
docker container kill containerID/NAMES 停止运行的容器
docker  stop    containerID/NAMES 停止运行的容器
docker  run     运行container (container在docker中可以理解为装好环境的系统)
   --name                   自定义容器名称
   -d                       容器后台运行
   -p 当前系统端口:容器端口   端口映射(容器内部端口映射外部)
   -v 当前系统目录:容器目录   目录映射
docker  ps      列出本机正在运行的容器
开启和容器交互终端(进入容器)
docker  exec  -i -t  通过docker ps查看的name名  /bin/bash
docker container rm containerID/NAMES 删除容器文件
Docker实例

下面,我们通过安装一个 Apache 来感受一下 Docker

镜像市场中搜索找到Apache,使用以下命令进行安装

代码语言:javascript
复制
$ docker pull httpd:2.4.33

然后获取镜像并查看

通过镜像(image)创建带有环境的系统(container

代码语言:javascript
复制
#使用镜像httpd:2.4.33以后台模式启动一个容器,并将容器的80端口映射到当前系统的8080端口
$ docker run -p 8080:80 -d httpd:2.4.33

然后我们通过IP+端口号进行访问,就可以看到 Apache 的 It works!

我们在通过命令进入 Docker 容器中更改It works!

代码语言:javascript
复制
$ docker exec -i -t NAMES /bin/bash

创建一个html文件,写个Hello,World

重启一下服务器,重启后发现容器自动销毁造成数据丢失

所以我们要解决这个问题,就要在创建容器时将项目代码映射到当前系统的指定目录

代码语言:javascript
复制
$ sudo mkdir -p /www
$ sudo vi /www/index.html
$ docker run -p 8080:80 -v /www:/usr/local/apache2/htdocs -d httpd:2.4.33

就这样,简单的 Docker 入门就完成了

有时间的话再写一篇文章说明一下如何打包自己的Docker容器

沈唁志|一个PHPer的成长之路! 原创文章采用CC BY-NC-SA 4.0协议进行许可,转载请注明:转载自:什么是Docker?Docker的快速入门教程

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 虚拟化技术
  • Docker
    • Docker是什么?
      • Docker的用途
        • Docker 的安装
          • Docker的使用
            • Docker实例
            相关产品与服务
            容器镜像服务
            容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档