当前位置: 首页 > news >正文

运行第一个Docker容器-Docker for Web Developers(1)

1. Docker介绍

  1. Docker由dotCloud公司发起的一个内部项目,后来Docker火了,dotCloud公司改名为Docker了;
  2. Docker使用了Go语言开发,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术;
  3. Docker vs VM如下图所示:
    Docker VS VM

2. Docker的安装

Docker现在区分Community Edition,简称:CE版本;Enterprise Edition,简称:EE。两个版本,一个免费,一个付费。所以我们安装的是的CE版本。安装步骤在官方完成有详细的的说明,这里略过。

我在DO上的服务器操作系统版本是:Ubuntu 14.04 LTS。安装官方文档,能顺利安装成功。

Docker CE for Ubuntu

3. Docker架构

Docker架构图

4. 运行第一个容器

运行容器可以通过两种方式:

4.1 通过Dockerfile构建一个镜像,上传到Docker Hub上,然后在host主机上pull这个镜像,运行一个容器

4.2 通过docker pull从Docker Registry上获取一个镜像,然后通过这个镜像运行容易。

本文主要说明第一种情况,流程如下图所示:
Run Docker Workflow

步骤1

本地机器上新建一个文件夹,创建一个Dockefile文件,创建一个dist目录。dist放置了一个简单的hml页面,页面加载了2个图片,也就是我们前端的代码。

Dockefile文件内容如下:

FROM nginx:1.11.5
ADD dist/ /usr/share/nginx/html

告诉Docker引擎下载Nginx 1.11.5版本的镜像,然后复制dist文件夹内容到
/usr/share/nginx/html目录中。

执行生成镜像命令:

docker build -t bage88/docker-demo:0.0.1 -f Dockerfile .

bage88/docker-demo:我再Docker Hub创建的repository的名称,必须一致,才能保证后面能正确将本地的镜像推动的Docker Hub仓库中。

Docker Hub仓库名称

0.0.1:镜像的版本号。

步骤2

将生成好的镜像推送到Docker Hub仓库中。命令如下:

docker push bage88/docker-demo:0.0.1

步骤3

需要从Dock Hub获取镜像,默认未修改仓库地址,默认都是从Docker Hub上获取镜像。现在我们来获取刚推送到Docker Hub上的镜像。命令如下:

docker pull bage88/docker-demo:0.0.1

步骤4

最后一步也是最简单的一步,根据镜像运行容易。

docker run -d -p 80:80  bage88/docker-demo:0.0.1

在浏览器中访问地址:http://138.68.40.38/,可以看到下面的界面,表面当前的容器运行成功了。

第一个容器运行结果

参考资料

  1. Docker —— 从入门到实践
  2. Docker架构详解
  3. Docker官网

转载于:https://www.cnblogs.com/liminjun88/p/run-first-docker-container.html

相关文章:

  • Linux 虚拟机--KVM安装和配置
  • 微软云Linux服务器 Mysql、tomcat远程连接错误解决办法
  • 认识htnl最基本的几个标签
  • ES6学习记录-let和var的区别
  • Java 集合类 List Set Map 哪些线程安全
  • 安装Python的机器学习包Sklearn 出错解决方法
  • 【干货】机器学习常见算法分类汇总
  • 《Selenium自动化测试指南》目录—导读
  • 一次耐人寻味的SQL优化:除了SQL改写,还要考虑什么?
  • 《HTML5 canvas开发详解(第2版)》——2.2 基本矩形
  • 《推荐系统:技术、评估及高效算法》一1.2 推荐系统的功能
  • 《jQuery Cookbook中文版》——1.11 删除DOM元素
  • 移动App性能测评与优化1.3 新问题的进一步挖掘
  • 《Python自然语言处理》——第1章 语言处理与Python 1.1 语言计算:文本和词汇...
  • 《Android 3D游戏开发技术宝典——OpenGL ES 2.0》——1.5节Android应用程序运行的机制...
  • Docker 笔记(2):Dockerfile
  • Git初体验
  • HTTP 简介
  • iOS 系统授权开发
  • java中具有继承关系的类及其对象初始化顺序
  • js如何打印object对象
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Mybatis初体验
  • node 版本过低
  • Python进阶细节
  • React-Native - 收藏集 - 掘金
  • Ruby 2.x 源代码分析:扩展 概述
  • 当SetTimeout遇到了字符串
  • 订阅Forge Viewer所有的事件
  • - 概述 - 《设计模式(极简c++版)》
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 坑!为什么View.startAnimation不起作用?
  • 什么是Javascript函数节流?
  • 数据结构java版之冒泡排序及优化
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (2)MFC+openGL单文档框架glFrame
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (solr系列:一)使用tomcat部署solr服务
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)关于pipe()的详细解析
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET成年了,然后呢?
  • .NET性能优化(文摘)
  • @WebServiceClient注解,wsdlLocation 可配置