開發人員打開docker的方式

bodl7757 7年前發布 | 26K 次閱讀 Docker Nginx 程序員

首先,我是不建議直接在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

 

 本文由用戶 bodl7757 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!