開發人員打開docker的方式
首先,我是不建議直接在macOS系統中直接搭建各種開發環境的,一來會把軟件裝多了會把mac系統擾亂。會出現各種莫名其妙的環境問題。二來如果遇到環境要升級的問題也會很亂,三來macOS系統基本上也是一年升級一次,也會使各種搭好的環境出現問題。
一個解決辦法是用VirtualBox來裝虛擬機來解決,以前我也是這么干的,但虛擬機很重,想重新搭個環境要花比較長的時間,比如突然想下ubuntu16.10系統搭個開發環境。先下載系統,安裝系統進虛擬機,然后再啟動系統裝環境。
現在有了docker一切問題都得到解決了歐耶。
就像船和集裝箱一樣。只要符合標準的集裝箱,不用處理都可以直接往輪船上搬。而docker就是輪船這樣的一種角色。一個裝容器的容器,只是符合它的標準的容器都可以往上面裝。
如果你想裝個python環境,直接放個已經裝好python環境的容器去運行起來,就是一個現成的python環境;
如果你想裝一個nginx來運行web,直接放個已經裝好nginx環境的容器。就是一個nginx環境了。
如果你現在用的是python2.7的環境,突然要用到python3,也可以直接裝個python3的環境就是了,還避免了環境干擾。而且用完即刪。
docker的發明最大的意義就是用于運維,但對于一個開發人員,也同樣需要。
一.mac上裝docker
到這里去 下載安裝 即可
安裝完成后運行,在右上角有一個小鯨魚圖標,docker就正常啟動了,可以在終端里使用docker命令。
二.列出本地鏡像
1.列出已存在本地的鏡像
$ dockerimages REPOSITORY TAG IMAGEID CREATED SIZE
現在是空的,一個鏡像也沒有
假如我要裝個nginx環境。怎么辦?先去搜索一下吧
2.搜索鏡像
$ 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]
搜出一大堆,下載第一個吧
3.下載鏡像
$ docker pull nginx
等待完成,然后再用docker images命令列出本地鏡像
$ dockerimages REPOSITORY TAG IMAGEID CREATED SIZE nginx latest cc1b61406712 5 weeksago 182 MB
nginx鏡像已下載到本地
4.運行鏡像,也就是用鏡像來實例化一個容器并運行(可以拿面向對象中的類和實例來作比)
$ dockerrun -d -p 80:80 --namewebservernginx 14230c3fe5ff5b15f0152c96ed68f765eda85449b0f35f5dc6c6432c8ac53f53
意思是:用nginx鏡像,來運行一個容器,容器的名字叫webserver,-d 是后臺運行,-p是綁定端口,在這里只綁定了80端口(即把本機的80端口和容器的80端口綁定,訪問本機的80端口相當于訪問容器的80端口)
成功生成容器并運行,查看一下運行的實例吧
5.查看運行實例
$ 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
從左到右分別是容器id,所使用的鏡像,運行時的命令,創建時間,狀態,綁定的端口,名字
容器已經運行起來
在瀏覽器上輸入 http://localhost/ ,會出現nginx 歡迎頁面
6.關閉容器
dockerstopwebserver
7.其它的一些常用命令
列出所有的容器(包括運行中的,和已經停止的)
docker ps -a
啟動一個容器
dockerstartwebserver
刪除容器
dockerrmwebserver
docker rm -f webserver (強制刪除,如果容器正在運行,這條命令會先關閉容器,再刪除之)
刪除鏡像(記住是鏡像,不是容器)
dockerminginx
這個是基礎,下一篇打算寫寫可以更高效利用docker來開發
來自:http://www.dohooe.com/2017/03/07/464.html