开发人员打开docker的方式

bodl7757 8年前
   <p>首先,我是不建议直接在macOS系统中直接搭建各种开发环境的,一来会把软件装多了会把mac系统扰乱。会出现各种莫名其妙的环境问题。二来如果遇到环境要升级的问题也会很乱,三来macOS系统基本上也是一年升级一次,也会使各种搭好的环境出现问题。</p>    <p>一个解决办法是用VirtualBox来装虚拟机来解决,以前我也是这么干的,但虚拟机很重,想重新搭个环境要花比较长的时间,比如突然想下ubuntu16.10系统搭个开发环境。先下载系统,安装系统进虚拟机,然后再启动系统装环境。</p>    <p>现在有了docker一切问题都得到解决了欧耶。</p>    <p>就像船和集装箱一样。只要符合标准的集装箱,不用处理都可以直接往轮船上搬。而docker就是轮船这样的一种角色。一个装容器的容器,只是符合它的标准的容器都可以往上面装。</p>    <p>如果你想装个python环境,直接放个已经装好python环境的容器去运行起来,就是一个现成的python环境;</p>    <p>如果你想装一个nginx来运行web,直接放个已经装好nginx环境的容器。就是一个nginx环境了。</p>    <p>如果你现在用的是python2.7的环境,突然要用到python3,也可以直接装个python3的环境就是了,还避免了环境干扰。而且用完即删。</p>    <p>docker的发明最大的意义就是用于运维,但对于一个开发人员,也同样需要。</p>    <h2>一.mac上装docker</h2>    <p>到这里去 下载安装 即可</p>    <p>安装完成后运行,在右上角有一个小鲸鱼图标,docker就正常启动了,可以在终端里使用docker命令。</p>    <h2>二.列出本地镜像</h2>    <p>1.列出已存在本地的镜像</p>    <pre>  $ dockerimages  REPOSITORY          TAG                 IMAGEID            CREATED             SIZE  </pre>    <p>现在是空的,一个镜像也没有</p>    <p>假如我要装个nginx环境。怎么办?先去搜索一下吧</p>    <p>2.搜索镜像</p>    <pre>  $ dockersearchnginx  NAME                      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED  nginx                     OfficialbuildofNginx.                        5470      [OK]  jwilder/nginx-proxy       AutomatedNginxreverseproxyfor docker c...   957                  [OK]  richarvey/nginx-php-fpm   ContainerrunningNginx + PHP-FPMcapable ...   353                  [OK]  million12/nginx-php       Nginx + PHP-FPM 5.5, 5.6, 7.0 (NG), CentOS...   75                   [OK]  webdevops/php-nginx       NginxwithPHP-FPM                              71                   [OK]  h3nrik/nginx-ldap         NGINXwebserverwithLDAP/AD, SSLand pro...   36                   [OK]  bitnami/nginx             BitnaminginxDockerImage                      23                   [OK]  evild/alpine-nginx        MinimalisticDockerimagewithNginx            14                   [OK]  million12/nginx           Nginx: extensible, nicelytunedfor better...   9                    [OK]  maxexcloo/nginx           Frameworkcontainerwithnginxinstalled.       7                    [OK]  webdevops/nginx           Nginxcontainer                                 7                    [OK]  blacklabelops/nginx       DockerizedNginxReverseProxyServer.          4                    [OK]  1science/nginx            NginxDockerimagesthatincludeConsulTe...   4                    [OK]  frekele/nginx             dockerrun --rm --namenginx -p 80:80 -p 4...   3                    [OK]  ixbox/nginx               NginxonAlpineLinux.                          3                    [OK]  drupaldocker/nginx        NGINXfor Drupal                                2                    [OK]  servivum/nginx            NginxDockerImagewithUsefulTools            2                    [OK]  xataz/nginx               Lightnginximage                               2                    [OK]  dock0/nginx               Archcontainerrunningnginx                    2                    [OK]  tozd/nginx                Dockerizednginx.                               1                    [OK]  radial/nginx              Spokecontainerfor Nginx, a highperforma...   1                    [OK]  c4tech/nginx              Severalnginximagesfor webapplications.      0                    [OK]  unblibraries/nginx        Baselinenon-PHPnginxcontainer                0                    [OK]  watsco/nginx              nginx:1.11-alpine                               0                    [OK]  funkygibbon/nginx         nginx + opensslautomatedbuild, customisa...   0                    [OK]  </pre>    <p>搜出一大堆,下载第一个吧</p>    <p>3.下载镜像</p>    <p>$ docker pull nginx</p>    <p>等待完成,然后再用docker images命令列出本地镜像</p>    <pre>  $ dockerimages  REPOSITORY          TAG                 IMAGEID            CREATED             SIZE  nginx               latest              cc1b61406712        5 weeksago         182 MB  </pre>    <p>nginx镜像已下载到本地</p>    <p>4.运行镜像,也就是用镜像来实例化一个容器并运行(可以拿面向对象中的类和实例来作比)</p>    <pre>  $ dockerrun -d -p 80:80 --namewebservernginx  14230c3fe5ff5b15f0152c96ed68f765eda85449b0f35f5dc6c6432c8ac53f53  </pre>    <p>意思是:用nginx镜像,来运行一个容器,容器的名字叫webserver,-d 是后台运行,-p是绑定端口,在这里只绑定了80端口(即把本机的80端口和容器的80端口绑定,访问本机的80端口相当于访问容器的80端口)</p>    <p>成功生成容器并运行,查看一下运行的实例吧</p>    <p>5.查看运行实例</p>    <pre>  $ dockerps  CONTAINERID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES  14230c3fe5ff        nginx               "nginx -g 'daemon ..."   57 secondsago      Up 55 seconds       0.0.0.0:80->80/tcp, 443/tcp   webserver  </pre>    <p>从左到右分别是容器id,所使用的镜像,运行时的命令,创建时间,状态,绑定的端口,名字</p>    <p>容器已经运行起来</p>    <p>在浏览器上输入 <a href="/misc/goto?guid=4959500470929990660" rel="nofollow,noindex">http://localhost/</a> ,会出现nginx 欢迎页面</p>    <p>6.关闭容器</p>    <pre>  dockerstopwebserver  </pre>    <p>7.其它的一些常用命令</p>    <p>列出所有的容器(包括运行中的,和已经停止的)</p>    <p>docker ps -a</p>    <p>启动一个容器</p>    <pre>  dockerstartwebserver  </pre>    <p>删除容器</p>    <pre>  dockerrmwebserver  </pre>    <p>docker rm -f webserver (强制删除,如果容器正在运行,这条命令会先关闭容器,再删除之)</p>    <p>删除镜像(记住是镜像,不是容器)</p>    <pre>  dockerminginx  </pre>    <p>这个是基础,下一篇打算写写可以更高效利用docker来开发</p>    <p> </p>    <p>来自:http://www.dohooe.com/2017/03/07/464.html</p>    <p> </p>