今年四月份公司逐步改用docker容器来部署应用,当时本身刚踏出学校大门,平时开发都是环境都是早已安装好,所以一直没怎么了解Docker这玩意。公司里各位开发大佬说这是个好东西,能够很方便的部署迁移一个应用,当时本身一脸懵逼。经过这几个月的学习与使用,本身也逐步了解了Docker,所以抽出空余时间来写一写docker的知识总结与你们分享。php
Docker的官方简介:html
Docker 是一个开源的应用容器引擎,基于 Go 语言 并听从Apache2.0协议开源。nginx
Docker 可让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,而后发布到任何流行的 Linux 机器上,也能够实现虚拟化。docker
容器是彻底使用沙箱机制,相互之间不会有任何接口(相似 iPhone 的 app),更重要的是容器性能开销极低。浏览器
个人我的理解就是:app
每个Docker容器至关于一个彻底封闭的(虚拟)盒子,默认状态下的盒子与盒子之间是不可以进行通信,而且都寄存在宿主机上面。若要使盒子与盒子、盒子与宿主机之间进行通信须要人为去设置,给他开辟一条通讯通道。分布式
Doker的应用场景有不少,最多见的就是Web应用的自动化打包和发布、自动化测试和持续集成发布、方便部署分布式应用等,而我司的Web应用就是结合Docker进行自动化打包和发布。性能
docker支持Windows、MacOS、Linux等系统,安装过程我这里就不介绍了,在网上有不少资源。学习
安装后进入命令行执行docker命令来判断docker是安装成功。测试
看到有Options输出则表示安装成功。
每当咱们安装软件的第一步是作什么呢?毫无疑问,那就是search查找安装包啦!
那么docker中的查找"安装包"的命令是什么呢?
很简单,那就是docker search 软件名;
docker search nginx; // 查找nginx
执行该命令后,将会出现一系列的搜索结果。
docker中与咱们日常下载软件这一动做相对应的命令就是:docker pull 软件名;(但平时咱们把这一动做叫作拉取镜像)
docker pull nginx; // 拉取nginx的镜像
执行命令后将会开始拉取nginx镜像
拉取成功咱们使用docker images;命令能够查看已经拉取的镜像列表。
docker images; // 查看已拉取的镜像列表
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 80 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:9000; 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查看正在运行的容器。
由于咱们在建立容器的时候已经将当前目录下的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
=
使用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/
原文地址: http://www.javashuo.com/article/p-pwrckkgt-ex.html
声明:本博客文章为原创,只表明本人在工做学习中某一时间内总结的观点或结论。转载时请在文章页面明显位置给出原文连接