开发人员打开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>