开发人员打开docker的方式

以前写过一篇mac下利用docker搭建开发环境的文,但那时是用的boot2docker作为客户端搭建的,现在docker原生支持mac了,方便了许多。
首先,我是不建议直接在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.列出已存在本地的镜像
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

 

现在是空的,一个镜像也没有
假如我要装个nginx环境。怎么办?先去搜索一下吧
2.搜索镜像
$ docker search nginx
NAME                      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                     Official build of Nginx.                        5470      [OK]
jwilder/nginx-proxy       Automated Nginx reverse proxy for docker c...   957                  [OK]
richarvey/nginx-php-fpm   Container running Nginx + PHP-FPM capable ...   353                  [OK]
million12/nginx-php       Nginx + PHP-FPM 5.5, 5.6, 7.0 (NG), CentOS...   75                   [OK]
webdevops/php-nginx       Nginx with PHP-FPM                              71                   [OK]
h3nrik/nginx-ldap         NGINX web server with LDAP/AD, SSL and pro...   36                   [OK]
bitnami/nginx             Bitnami nginx Docker Image                      23                   [OK]
evild/alpine-nginx        Minimalistic Docker image with Nginx            14                   [OK]
million12/nginx           Nginx: extensible, nicely tuned for better...   9                    [OK]
maxexcloo/nginx           Framework container with nginx installed.       7                    [OK]
webdevops/nginx           Nginx container                                 7                    [OK]
blacklabelops/nginx       Dockerized Nginx Reverse Proxy Server.          4                    [OK]
1science/nginx            Nginx Docker images that include Consul Te...   4                    [OK]
frekele/nginx             docker run --rm --name nginx -p 80:80 -p 4...   3                    [OK]
ixbox/nginx               Nginx on Alpine Linux.                          3                    [OK]
drupaldocker/nginx        NGINX for Drupal                                2                    [OK]
servivum/nginx            Nginx Docker Image with Useful Tools            2                    [OK]
xataz/nginx               Light nginx image                               2                    [OK]
dock0/nginx               Arch container running nginx                    2                    [OK]
tozd/nginx                Dockerized nginx.                               1                    [OK]
radial/nginx              Spoke container for Nginx, a high performa...   1                    [OK]
c4tech/nginx              Several nginx images for web applications.      0                    [OK]
unblibraries/nginx        Baseline non-PHP nginx container                0                    [OK]
watsco/nginx              nginx:1.11-alpine                               0                    [OK]
funkygibbon/nginx         nginx + openssl automated build, customisa...   0                    [OK]

 

搜出一大堆,下载第一个吧
3.下载镜像
$ docker pull nginx
等待完成,然后再用docker images命令列出本地镜像
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              cc1b61406712        5 weeks ago         182 MB

 

nginx镜像已下载到本地
4.运行镜像,也就是用镜像来实例化一个容器并运行(可以拿面向对象中的类和实例来作比)
$ docker run -d -p 80:80 --name webserver nginx
14230c3fe5ff5b15f0152c96ed68f765eda85449b0f35f5dc6c6432c8ac53f53

 

意思是:用nginx镜像,来运行一个容器,容器的名字叫webserver,-d 是后台运行,-p是绑定端口,在这里只绑定了80端口(即把本机的80端口和容器的80端口绑定,访问本机的80端口相当于访问容器的80端口)
成功生成容器并运行,查看一下运行的实例吧
5.查看运行实例
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
14230c3fe5ff        nginx               "nginx -g 'daemon ..."   57 seconds ago      Up 55 seconds       0.0.0.0:80->80/tcp, 443/tcp   webserver

 

从左到右分别是容器id,所使用的镜像,运行时的命令,创建时间,状态,绑定的端口,名字
容器已经运行起来
在浏览器上输入http://localhost/,会出现nginx 欢迎页面
6.关闭容器
docker stop webserver
7.其它的一些常用命令
列出所有的容器(包括运行中的,和已经停止的)
docker ps -a
启动一个容器
docker start webserver

 

删除容器
docker rm webserver

docker rm -f webserver (强制删除,如果容器正在运行,这条命令会先关闭容器,再删除之)

删除镜像(记住是镜像,不是容器)
docker mi nginx

 

这个是基础,下一篇打算写写可以更高效利用docker来开发

发表评论