• Docker之初识(一)


    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
    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查看正在运行的容器。

      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

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

  • 相关阅读:
    背水一战 Windows 10 (26)
    背水一战 Windows 10 (25)
    背水一战 Windows 10 (24)
    背水一战 Windows 10 (23)
    背水一战 Windows 10 (22)
    背水一战 Windows 10 (21)
    背水一战 Windows 10 (20)
    背水一战 Windows 10 (19)
    背水一战 Windows 10 (18)
    背水一战 Windows 10 (17)
  • 原文地址:https://www.cnblogs.com/phpstudy2015-6/p/9840610.html
Copyright © 2020-2023  润新知