1、简介

  今年四月份公司逐步改用docker容器来部署应用,当时自己刚踏出学校大门,平时开发都是环境都是早已安装好,因此一直没怎么了解Docker这玩意。公司里各位开发大佬说这是个好东西,可以很方便的部署迁移一个应用,当时自己一脸懵逼。通过这几个月的学习与使用,自己也逐步了解了Docker,因此抽出空余时间来写一写docker的知识总结与大家分享。

Docker的官方简介:

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

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

  容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

我的个人理解就是:

  每一个Docker容器相当于一个完全封闭的(虚拟)盒子,默认状态下的盒子与盒子之间是不能够进行通讯,并且都寄存在宿主机上面。若要使盒子与盒子、盒子与宿主机之间进行通讯需要人为去设置,给他开辟一条通信通道。

  Doker的应用场景有很多,最常见的就是Web应用的自动化打包和发布、自动化测试和持续集成发布、方便部署分布式应用等,而我司的Web应用就是结合Docker进行自动化打包和发布。

  

2、Docker使用

  2.1、docker安装  

  docker支持Windows、MacOS、Linux等系统,安装过程我这里就不介绍了,在网上有很多资源。

  安装后进入命令行执行docker命令来判断docker是安装成功。

  看到有Options输出则表示安装成功。

  2.2、我们平时安装软件的第一步是做什么咧?

  每当我们安装软件的第一步是做什么呢?毫无疑问,那就是search查找安装包啦!

  那么docker中的查找"安装包"的命令是什么呢?

  很简单,那就是docker search 软件名;

docker search nginx;    // 查找nginx

  执行该命令后,将会出现一系列的搜索结果。

  2.3、找到软件后那就下载软件啦

  docker中与我们平常下载软件这一动作相对应的命令就是:docker pull 软件名;(但平时我们把这一动作叫做拉取镜像)

docker pull nginx;  // 拉取nginx的镜像

执行命令后将会开始拉取nginx镜像

拉取成功我们使用docker images;命令可以查看已经拉取的镜像列表。

docker images;    // 查看已拉取的镜像列表

  2.4、软件已经下载好了下一步又是做什么咧

  docker中于普通软件安装相对应的命令是docker run 软件名;(我们把这一动作称为:从该镜像中创建容器)

  在创建容器的时候,我们一般还会添加一些其他参数,以便更好的管理使用应用。

  在此之前我们需要先建立两个文件目录,www和nginx/conf.d,并在nginx中新建一个defalut.conf配置文件

mkdir www;
mkdir -p nginx/conf.d
vi nginx/conf.d/default.conf    // default.conf文件内容在下面
docker run -p 8080:80 -d -v $PWD/www:/usr/share/nginx/html -v $PWD/nginx/conf.d:/etc/nginx/conf.d --name mynginx nginx
# -p 指定绑定端口(端口映射,将容器中的80端口绑定到主机中的8080端口)
# -v 将主机中的当前www目录挂载到容器中的/usr/share/nginx/html目录中
# -d 让容器在后台运行
#defalut.conf文件
server {
listen default_server;
server_name _;
root /usr/share/nginx/html;
location / { index index.html index.htm index.php;
autoindex off;
}
location ~ \.php(.*)$ {
root /var/www/html/;
fastcgi_pass 172.17.0.2:;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
}

创建容器后我们可以通过docker ps查看正在运行的容器。

  2.5、检测运行的容器应用是否能够正常工作

  因为我们在创建容器的时候已经将当前目录下的www目录映射到容器中nginx的/usr/share/nginx/html工作根目录,因此我们在当前www目录下新增一个index.html文件

# 在www目录下新建index.html文件,并任意写一些字符串
vi index.html

  由于Windows系统中的docker是通过一个VM虚拟机为桥梁搭建的,我们在docker中创建容器时所映射出来的ip端口是指向虚拟机的,因此我们需要通过虚拟机的ip和端口进行访问容器。(注:Windows系统相对比较特殊需要借助VM实现,而MacOS和Linux则不需要,因此容器所关联的端口是宿主机127.0.0.1的)

查看该VM的ip:

在ip在运行docker的时候所展示出来的ip

在浏览器中访问192.168.99.100:8080

=

3、总结

  使用docker搭建一个小demo还比较简单的,只需要几个命令即可,但是我们还是需要好好了解镜像、容器、宿主机他们三者的关系,思考他们是如何通信,如何使用docker构建一个完整的应用环境等。

在这篇博客中主要涉及到的一些命令有:

docker search **
docker pull **
docker run -p 8080:80 -d -v $PWD/www:/usr/share/nginx/html -v $PWD/nginx/conf.d:/etc/nginx/conf.d --name mynginx nginx
docker ps

(以上是自己的一些见解,若有不足或者错误的地方请各位指出)

作者:那一叶随风   http://www.cnblogs.com/phpstudy2015-6/

原文地址:  https://www.cnblogs.com/phpstudy2015-6/p/9840610.html

声明:本博客文章为原创,只代表本人在工作学习中某一时间内总结的观点或结论。转载时请在文章页面明显位置给出原文链接

Docker之初识(一)的更多相关文章

  1. Docker大行其道—初识

    导读 随着分布式.云计算.大数据的火热爆发,大量的云计算集群出现,光凭计算机硬件配置的已经无法再次一较高下,虚拟化成为其中最核心的技术.虚拟化既可以通过硬件模拟,也可以通过操作系统层面去实现,近年来热 ...

  2. 41 【docker】初识

    常用的docker命令: docker ps #查看当前正在运行的容器 docker ps -a | grep <keyword> #查看所有的容器,运行的或者停止的 docker sto ...

  3. docker从初识到深入

    1:使用docker有哪些优势: 更快交付你的应用(Faster delivery of your applications) 让部署和测试更简单(Deploying and scaling more ...

  4. docker 概念初识

    1 docker 优势,一次创建或配置可以在任意时间.任意环境让应用正常的运行. 快速交付和部署,开发人员可以使用镜像快速构建一套标准的开发环境:开发完后测试和运维人员可以直接使用相同的环境来部署代码 ...

  5. 【Docker】初识与应用场景认知

    什么是Docker? Docker是一个容器化平台,它以容器的形式将您的应用程序及其所有依赖项打包在一起,以确保您的应用程序在任何环境中无缝运行. 什么是Docker容器? Docker容器包括应用程 ...

  6. Docker 学习应用篇之一: 初识Docker

    Docker 自从2013年以来就非常的火热,无论是从github上的代码活跃度,还是Redhat在RHE6.5中集成对Docker的支持,等等.第一次接触Docker,还是老师给我们介绍的. 1.初 ...

  7. Docker 第一篇--初识docker

    已经多年不写博客, 看完<晓松奇谈>最后一期猛然觉醒, 决定仔细梳理下自己这几年的知识脉络. 既然决定写, 那么首先就从最近2年热门的开源项目Docker开始.Docker 这两年在国内很 ...

  8. 初识Docker和Windows Server容器

    概览 伴随着Windows Server 2016 Technical Preview 3 (TP3)版本的发布,微软首次提供了Windows平台下地原生容器.它集成了Docker对Windows S ...

  9. docker-1 初识docker

    五分钟认识docker 什么是docker? 把他想象成一个用了一种新颖方式实现的超轻量虚拟机,在大概效果上也是正确的.当然在实现的原理和应用上还是和VM有巨大差别的,并且专业的叫法是应用容器(App ...

随机推荐

  1. Odoo:全球第一免费开源ERP权威性能测试报告完整版(绝对珍藏)

    Odoo平台简介 Odoo(以前叫OpenERP)是世界排名第一的开源ERP系统,最早由比利时一家公司开发,经过十几年发展,目前全世界Odoo的使用者超过2百万人,Odoo被翻译成几十种语言,Odoo ...

  2. 一起学Android之Dialog

    概述 对话框(Dialog)是一个小窗口,在Android系统开发中经常会用到,它提示用户做决定或者输入一些东西,对话框并不填充屏幕,是一个模态(Modal)窗口.Dialog类是所有对话框的基类,应 ...

  3. Java辅助类持续汇总~

    /** * 01 * 描述:List<String>集合去除重复数据 * [时间 2019年3月5日下午3:54:09 作者 陶攀峰] */ public static List<S ...

  4. Cocoa包管理器之Carthage详解及CocoaPods中心化+Carthage的二进制化

    上篇博客详细的聊了CocoaPods的相关内容,今天我们就来介绍另一个Cocoa的包管理器Carthage.在上家公司用Swift开发工程时,用的就是Carthage.Carthage诞生于14年11 ...

  5. 关于单元测试的思考--Asp.Net Core单元测试最佳实践

    在我们码字过程中,单元测试是必不可少的.但在从业过程中,很多开发者却对单元测试望而却步.有些时候并不是不想写,而是常常会碰到下面这些问题,让开发者放下了码字的脚步: 这个类初始数据太麻烦,你看:new ...

  6. shell打印 倒等腰三角形

    #!/bin/bash read -p "input the length: " n方法一:内循环中的一个for循环shell写法for i in `seq 1 $n`do    ...

  7. iFace Chain [ 爱妃链 ] 或将凭借人脸密钥技术成为安全领域最大的赢家

    前段时间iFace Chain [ 中文音译名称: 爱妃链 ] 安全专家揭密了区块链领域,数字资产存放于无信用钱包中的一些风险,并为区块链玩家解密如何安全保护资产私钥,我们再来回顾分析一下目前跑路钱包 ...

  8. SpringBoot 2.X集成Hive-jdbc 3.1.1

    最近公司有一个需求,需求的内容是根据用户页面选择的参数条件查询Hive,数量量大致是300万以内,要求3秒响应.使用的其它的技术就不要说了,先说说SpingBoot集成Hive-jdbc吧,网上虽然有 ...

  9. 由浅入深讲述MVVM

    相信首次听说MVVM的人,内心都是充满疑惑的!这是个嘛???能干嘛??? MVVM是Model-View-ViewModel的简写.它本质上就是MVC (Model-View- Controller) ...

  10. docker初体验,搭建自用的gitlab服务

    一.前言 git在如日中天的版本管理系统,现在如果不是工作在git版本管理系统下,几乎都不好意思给人打招呼.现在就有现成的互联网的git服务器提供给大家使用,例如号称程序的社交网络github. 正好 ...