Docker容器初体验

docker.png

1. What is Docker?

Docker-Build_Ship_and_Run_Any_App_Anywhere.png

Wikipedia 定义:
Docker is a software technology providing containers, promoted by the company Docker, Inc. Docker provides an additional layer of abstraction and automation of operating-system-level virtualization on Windows and Linux. (Docker 是提供容器的软件技术,在 Linux 上提供了操作系统级虚拟化的额外层次抽象和自动化。)

Docker is an open source project to pack, ship, and run any application as a lightweight container. (Docker 是一个开源项目,用于将任何应用程序作为轻型容器进行打包,运输和运行。)

官方定义:
Docker is the world’s leading software containerization platform. (Docker 是软件集装箱化/容器化平台)

Docker is the company driving the container movement and the only container platform provider to address every application across the hybrid cloud. (Docker 是解决跨混合云的应用程序的唯一容器平台提供商)

Docker 特性

  • agility-敏捷:13倍加速软件开发和部署,并立即响应客户需求
  • portability-可移植性:消除“在我这里可以正常运行啊!”问题,一次打包随处运行;通过内部和云环境获得独立性
  • security-安全:通过内置的安全功能和配置,在整个生命周期内提供更安全的应用程序
  • cost savings-节约成本:优化基础设施资源的使用和简化操作,节省50%总成本

MODERN APP PLATFORM - 现代APP平台

The Docker platform is the only container platform to build, secure and manage the widest array of applications from development to production both on premises and in the cloud. (Docker 平台是唯一的容器平台,用于构建、保护和管理应用程序,从开发到生产,在内部和云中)

Docker 平台特性

  • Simplicity-简单:Docker 为应用程序创建和编排提供强大的工具
  • Openness-透明度:采用开源技术和模块化设计,可以轻松集成到现有的环境中
  • Independence-独立:Docker 在开发人员和 IT 之间以及应用程序和基础设施之间建立了分离关键点,以解锁创新

Docker 平台设计理念

  • DEVS:Docker 使开发人员更自由,更具创造力,更快地运送更多的软件
  • OPS:通过跨所有容器化的应用程序和服务的通用控制平台获得可视性,管理和安全性
  • ECOSYSTEM-生态系统:Docker 是一个开放和可扩展的平台,可轻松集成到现有环境中,促进全球科技,商业合作伙伴的充满活力的生态系统

参考

2. 安装并运行 Docker

在 Mac 上安装 Docker,见 Install Docker for Mac

一、下载并安装 Docker.dmg
二、运行 Docker

docker-app-menu.png

Where to go next

  • Getting started provides an overview of Docker for Mac, basic Docker command examples, how to get help or give feedback, and links to all topics in the Docker for Mac guide.
  • Troubleshooting describes common problems, workarounds, how to run and submit diagnostics, and submit issues.
  • FAQs provides answers to frequently asked questions/为常见问题提供答案.
  • Release Notes lists component updates, new features, and improvements associated with Stable and Edge releases/罗列组件更新,新功能和改进.
  • Get Started with Docker provides a general Docker tutorial/提供一个通用的Docker教程.

3. 玩转 Docker

跟着 Get started with Docker 开始使用 Docker。

engine-components-flow.png

3.1 检查 Docker Engine/引擎, Compose/组装, and Machine/机器的版本

➜  ~ docker --version
Docker version 17.09.0-ce, build afdb6d4
➜  ~ docker-compose --version
docker-compose version 1.16.1, build 6d1ac21
➜  ~ docker-machine --version
docker-machine version 0.12.2, build 9371605

3.2 探讨应用和运行示例

3.2.1 运行一些Docker命令验证Docker是否按预期工作

➜  ~ docker version
......
# Docker daemon 未启动
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
➜  ~ docker version
# Docker 客户端
Client:
 Version:      17.09.0-ce
 API version:  1.32
 Go version:   go1.8.3
 Git commit:   afdb6d4
 Built:        Tue Sep 26 22:40:09 2017
 OS/Arch:      darwin/amd64

# Docker 服务端版本,API版本,Go版本
Server:
 Version:      17.09.0-ce
 API version:  1.32 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   afdb6d4
 Built:        Tue Sep 26 22:45:38 2017
 OS/Arch:      linux/amd64
 Experimental: true
➜  ~ docker ps
# 无容器运行中
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
➜  ~ docker run hello-world

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

To generate this message, Docker took the following steps/采取以下步骤:
 1. The Docker client contacted the Docker daemon. (Docker客户端联系Docker服务端守护进程)
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (Docker守护进程从Docker Hub拉取“hello-world”镜像)
 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. (Docker守护进程从该镜像创建一个新的容器,该容器运行可执行文件,生成当前正在读取的输出)
 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. (Docker守护进程将输出的流式内容传输到Docker客户端,Docker客户端将其发送到您的终端)

Share images, automate workflows, and more with a free Docker ID/通过免费的Docker ID共享镜像,自动化工作流程等:
 https://cloud.docker.com/

For more examples and ideas, visit/想了解更多示例和想法,请访问:
 https://docs.docker.com/engine/userguide/

3.2.2 启动容器化的Web服务器

➜  ~ docker run -d -p 80:80 --name webserver nginx
122424b8077b791b42b31898eef3b77aa054a994b663fc832d5e90de430ac65a
# 启动用户态代理时出错:80端口已使用
docker: Error response from daemon: driver failed programming external connectivity on endpoint webserver (0f305bfd15dcf2914f7bf2c815ed94412706f85e3a2d9d2e83ec7423d58a1726): Error starting userland proxy: Bind for 0.0.0.0:80: unexpected error (Failure EADDRINUSE).
➜  ~ docker run -d -p 80:80 --name webserver nginx
# 冲突:容器名称"/webserver"已使用,您必须删除(或重命名)该容器才能重用该名称
docker: Error response from daemon: Conflict. The container name "/webserver" is already in use by container "122424b8077b791b42b31898eef3b77aa054a994b663fc832d5e90de430ac65a". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
➜  ~ docker rm webserver
webserver

Nginx启动正常:Networking features in Docker for Mac

➜  ~ docker run -d -p 8080:80 --name webserver nginx
# 容器ID
61a674b351579ccc527f13f679ace017147789ae667dc5ff0caa275add1e898f

在Web浏览器中,转到 http://localhost:8080/ 打开主页。

3.2.3 查看容器详细信息

➜  ~ docker ps
# 容器ID,镜像名称,运行命令,创建时间,运行状态,端口映射,容器名称
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
61a674b35157        nginx               "nginx -g 'daemon ..."   About an hour ago   Up About an hour    0.0.0.0:8080->80/tcp   webserver

3.2.4 停止或移除容器或镜像

停止或启动容器

➜  ~ docker stop webserver
webserver
➜  ~ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
➜  ~ docker start webserver
webserver
➜  ~ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
61a674b35157        nginx               "nginx -g 'daemon ..."   About an hour ago   Up 1 second         0.0.0.0:8080->80/tcp   webserver
➜  ~ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS                  NAMES
61a674b35157        nginx               "nginx -g 'daemon ..."   About an hour ago   Up 8 seconds              0.0.0.0:8080->80/tcp   webserver
cecc48eb752e        hello-world         "/hello"                 2 hours ago         Exited (0) 2 hours ago                           pedantic_almeida

停止并移除运行中的容器

➜  ~ docker rm -f webserver
webserver

列出本地镜像

➜  ~ docker images
# 仓库,标签,镜像ID,创建时间,镜像大小
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              c59f17fe53b0        6 days ago          108MB
alpine              latest              37eec16f1872        8 days ago          3.97MB
hello-world         latest              05a3bd381fc2        7 weeks ago         1.84kB

首选项

包括 General,File sharing,Advanced,HTTP proxy settings,Docker Daemon


Preferences.png

添加TLS证书

安装bash完成

提供反馈并获得帮助

Docker Store

Docker store is a component of the next-generation Docker Hub, and the best place to find compliant, trusted commercial and free software distributed as Docker Images.

The Docker Store - Find Trusted and Enterprise Ready Containers, Plugins, and Docker Editions/查找可信和企业就绪的容器、插件和Docker版本

docker-store.png

Docker Cloud

Docker Cloud - Build, Ship and Run any App, Anywhere
The official cloud service for continuously delivering Docker applications.

  • Continuous integration (CI) for Docker/Docker持续集成
  • Fully-managed Docker Registry Service/完全托管的Docker注册服务
  • Provision & manage Swarms/配置和管理集群
docker-cloud.png

Where to go next

  • Try out the walkthrough/尝试演练 at Get Started.
  • Dig in deeper with Docker Labs example walkthroughs and source code/深入挖掘Docker Labs的示例演练和源代码.
  • For a summary of Docker command line interface (CLI) commands, see Docker CLI Reference Guide/有关Docker命令行界面(CLI)命令的摘要,见Docker命令行界面参考指南.
  • Check out the blog post/看看博客文章 Introducing Docker 1.13.0.

祝玩得开心!ˇˍˇ
云舒,2017.11.2,杭州

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

推荐阅读更多精彩内容