Docker——MacOS上安装运行docker

近几年来,Docker越来越流行,使用场景也越来越广泛。为了能尽快跟上时代步伐、学习并应用到实际工作中,我也开始了Docker之旅。

Docker版本

Docker共有两种版本:

  • 社区版(Community Edition,简称CE)
    • stable更新渠道:提供可靠的功能,每季度一次;
    • edge/beta更新渠道:新功能版本,每个月一次;
  • 企业版(Enterprise Edition,简称EE)
    • 企业基础版;
    • 企业标准版;
    • 企业高级版;

Docker社区版适用于开发者和小型团队,而企业版是为企业开发和IT团队设计。所以,它们对各种功能的支持程度也有所差异。我的学习阶段自然要使用社区版。

支持的平台

Docker CE和EE均支持运行在多种平台、云服务器和本机环境上。

我使用的是Mac,选取的版本是CE for Mac的stable版本:
https://download.docker.com/mac/stable/Docker.dmg

安装和运行Docker for Mac

  1. Docker.dmg下载完成后,双击进行安装。
  2. 安装完成后,在“应用”文件夹中双击Docker即可运行。
  3. Docker运行后,其图标会出现Mac的状态栏里。

Docker for Mac安装包包含了Docker Engine、 Docker命令行客户端, Docker Compose、Docker Machine和Kitematic,使用如下命令查看其版本号:

$ docker --version
Docker version 17.12.0-ce, build c97c6d6
$ docker-compose --version
docker-compose version 1.18.0, build 8dd22a9
$ docker-machine --version
docker-machine version 0.13.0, build 9ba6da9

运行应用

  1. 打开终端,通过运行简易的Docker镜像hello-world来测试安装包是否可以运行。
$ docker run hello-world

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
ca4f61b1923c: Pull complete
Digest: sha256:ca0eeb6fb05351dfc8759c20733c91def84cb8007aa89a5bf606bc8b315b9fc7
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
...

再次运行上面命令时,则会显示:

Hello from Docker!
This message shows that your installation appears to be working correctly.
...

由上可知,先尝试从本地启动,如果不存在,则从Docker Hub上拉取最新版本。

另外,这里的hello-world并不是随意输入的,它是Docker的一个简易镜像,如果随意输入一个名词,则返回如下:

$ docker run hello-everyone
Unable to find image 'hello-everyone:latest' locally
docker: Error response from daemon: pull access denied for hello-everyone, repository does not exist or may require 'docker login'.
See 'docker run --help'.

  1. 运行一个Docker的web服务器。和hello-world镜像一样,如果本地不存在,则会从Docker Hub上拉取。
$ docker run -d -p 80:80 --name webserver nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
2a72cbf407d6: Pull complete
eccc107d7abd: Pull complete
76aa3935d77c: Pull complete
Digest: sha256:f6e250eaa36af608af9ed1e4751f063f0ca0f5310b1a5d3ad9583047256f37f6
Status: Downloaded newer image for nginx:latest
7944bbef2c428b1a53c0a77e270e0820bb2e7903c7c8d3fc1bd95b48f4be27fe

再一次运行这条命令,则会报错,原因是命名为webserver的服务器已经在使用中,所以可以重新指定一个新名称:

$ docker run -d -p 80:80 --name webserver nginx
docker: Error response from daemon: Conflict. The container name "/webserver" is already in use by container "7944bbef2c428b1a53c0a77e270e0820bb2e7903c7c8d3fc1bd95b48f4be27fe". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.

$ docker run -d -p 80:80 --name webserver_new nginx
e57fcb026c02be91929072c4aaa33a6f0420faad8a97f7d8b64f867e59a86772
  1. 在浏览器里运行http://localhost/,页面显示如下内容:
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.
  1. 在web服务器运行过程中,可以使用命令docker container lsdocker ps,查看容器内的详细情况:
$ docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
6cc824a7e65b        nginx               "nginx -g 'daemon of…"   24 seconds ago      Up 31 seconds       0.0.0.0:80->80/tcp   webserver

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
6cc824a7e65b        nginx               "nginx -g 'daemon of…"   32 seconds ago      Up 39 seconds       0.0.0.0:80->80/tcp   webserver
  1. 在删除容器之前需要停止容器,否则会报错:
$ docker container rm webserver
Error response from daemon: You cannot remove a running container 6cc824a7e65b0918d9fb78cfd6b54bd95c004e38a98080a30bec1b4fd7cba511. Stop the container before attempting removal or force remove
$ docker container stop webserver
webserver

再次查看,之前运行的web服务器已不显示了:

$ docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

如同linux的ls -a命令,docker container ls -a能够列出所有的容器:

$ docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
6cc824a7e65b        nginx               "nginx -g 'daemon of…"   4 minutes ago       Exited (0) 8 seconds ago                        webserver
da856b22da04        hello-world         "/hello"                 15 minutes ago      Exited (0) 15 minutes ago                       practical_varahamihira
317006e2577e        hello-world         "/hello"                 2 hours ago         Exited (0) 2 hours ago                          modest_mclean
72b715c6514b        hello-world         "/hello"                 7 weeks ago         Exited (0) 7 weeks ago                          compassionate_benz

删除webserver容器,使用命令:

$ docker container rm webserver
webserver

再次查看所有容器,原先的webserver容器已经不存在了:

$ docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
da856b22da04        hello-world         "/hello"            15 minutes ago      Exited (0) 16 minutes ago                       practical_varahamihira
317006e2577e        hello-world         "/hello"            2 hours ago         Exited (0) 2 hours ago                          modest_mclean
72b715c6514b        hello-world         "/hello"            7 weeks ago         Exited (0) 7 weeks ago                          compassionate_benz
$ docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              73acd1f0cfad        4 days ago          109MB
hello-world         latest              f2a91732366c        3 months ago        1.85kB
$ docker image rm nginx
Untagged: nginx:latest
Untagged: nginx@sha256:f6e250eaa36af608af9ed1e4751f063f0ca0f5310b1a5d3ad9583047256f37f6
Deleted: sha256:73acd1f0cfadf6f56d30351ac633056a4fb50d455fd95b229f564ff0a7adecda
Deleted: sha256:660d894d7e1779b260ce69426dced9f1750deb8a6505f052f61a9876991e73e6
Deleted: sha256:97e86b3c85516c6f3c848ee0df11bebe95154a567046225f1cd3a690fd22687e
Deleted: sha256:3358360aedad76edf49d0022818228d959d20a4cccc55d01c32f8b62e226e2c2

再次查看镜像:

$ docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              f2a91732366c        3 months ago        1.85kB

相关链接

https://docs.docker.com/docker-for-mac/install/
https://download.docker.com/mac/stable/Docker.dmg
https://docs.docker.com/docker-for-mac/
https://hub.docker.com/_/hello-world/

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容

  • 以下原文转载于(https://docs.docker.com/docker-for-mac/)(想找中文版的最新...
    Veekend阅读 7,548评论 0 17
  • 《Docker从入门到实践》阅读笔记 原书地址: https://yeasy.gitbooks.io/docker...
    GuoYuebo阅读 11,359评论 1 39
  • Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 15,514评论 15 147
  • 学会了承认,我错了。 每个人都渴望被关注。 财富与自由的关系。你想做的事情,大部分要花钱,所以有钱后更容易自由。 ...
    4d8ef48cfd78阅读 188评论 0 0
  • 社会是一个网,我们每个人是织网的绳子,或许会和某些人打结,但你绝对不会只和一个人打结。 人脉这个词,从我上高中时起...
    安静的疯女子M阅读 260评论 0 0