初步学习Docker

Docker是一个开源的应用容器引擎,基于Go语言,并遵从Apache2.0协议开源。

Docker可以让开发者打包他们的应用到一个轻量级的,可移植的容器中,然后发布到任何流行的linux机器上也可实现虚拟化。

使用Docker容器可以快速的构建和部署新应用程序。Docker容器将软件及其依赖关系整合到一个标准化的软件开发单元中,包括运行时

容器是完全使用沙箱机制,项目之间不会有任何接口,更重要的是容器性能开销极低。

Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。

应用场景

web应用的自动化打包和发布。

自动化测试和持续集成,发布。

在服务型环境中部署和调整数据库或其他的后台应用。

Docker的优点

简化程序

Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的linux机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的开发成果放入Docker中进行管理。方便快捷。

避免选择恐惧症

Docker镜像:Docker镜像包含了运行环境和配置,所以Docker可以简化部署多种应用实例工作。比如web应用,后台应用,数据库应用。

节省开支

云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

Docker 架构

Docker使用客户端-服务器(C/S)架构模式,使用远程API来管理和创建Docker容器。

Docker容器通过Docker镜像来创建。

容器与镜像的关系类似于面向对象编程中对象与类。

Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。

输出Hello world

runoob@runoob:~$ docker run ubuntu:15.10 /bin/echo "Hello world"

Hello world

以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。

docker ps 查看所有容器

docker logs +CONTAINER ID:容器ID

实例 docker logs 2b1b7a428627

或docker logs +NAMES:自动分配的容器名称

实例 docker logs amazing_cori

Docker容器使用

Docker客户端

docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。

可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。

我们将在docker容器中运行一个 Python Flask 应用来运行一个web应用。

新建一个Docker镜像

docker pull training/webapp  # 载入镜像

docker run -d -P training/webapp python app.py

参数说明

-d:让容器在后台运行

-p:将容器内部使用的网络端口映射到我们使用的主机上。

查看网络端口

docker port +CONTAINER ID:容器ID

docker port +NAME 容器name

查看WEB应用程序容器的进程

我们还可以使用 docker top 来查看容器内部运行的进程

docker top wizardly_chandrasekhar

检查 WEB 应用程序

使用 docker inspect 来查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。

docker inspect wizardly_chandrasekhar

停止 WEB 应用容器

docker stop wizardly_chandrasekhar

重启WEB应用容器

已经停止的容器,我们可以使用命令docker start来启动。

docker start wizardly_chandrasekhar

docker ps -l 查询最后一次创建的容器。

移除WEB应用容器

docker rm wizardly_chandrasekhar(容器name或ID)

*删除时,容器必须是停止状态 否则会报ERROR。

Docker镜像使用

当运行容器时,使用的镜像如果在本地中不存在,docker就会自动从docker镜像仓库中下载,默认是从Docker Hub公共镜像源下载

列出镜像列表

我们可以使用Docker image来列出本地主机上的镜像。

各个选项说明:

REPOSITORY:表示镜像的仓库源

TAG:镜像的标签,版本

IMAGE ID:镜像ID

CREATED:镜像创建时间

SIZE:镜像大小

获取一个新的镜像

当我们在本地主机上使用一个不存在的镜像时Docker就会自动下载这个镜像,如果我们想预先下载这个镜像,我们可以使用docker pull命令来下载它

搜索镜像

docker search httpd

更新镜像

当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

从已经创建的容器中更新镜像,并且提交这个镜像。

使用Dockerfile指令来创建一个新的镜像

cat Dockerfile

每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。

第一条FROM,指定使用哪个镜像源

RUN指令告诉docker在镜像内执行命令,安装了什么。

然后,我们使用DockerFile文件,通过docker build命令来构建一个镜像

docker build -t runoob/centos:6.7 .

参数说明

-t:指定要创建的目标镜像名

.:DockerFile文件所在目录,可以指定DockerFile的绝对路径

设置镜像标签

docker tag 镜像id runnoob/centos:dev

Docker容器连接

网络端口映射

创建一个python应用的容器。

docker run -d -P training/webapp python app.py

-P:是容器内部端口随机映射到主机的高端口。

-p:是容器内部端口绑定到指定的主机端口。

绑定到指定主机端口

docker run -d -p 5000:5000 training/webapp python app.py

指定容器绑定的网络地址,比如绑定 127.0.0.1。

docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py

默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上 /udp。

docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py

docker port 命令可以让我们快捷地查看端口的绑定情况

docker port adoring_stonebraker 5000

Docker容器连接

端口映射并不是唯一把 docker 连接到另一个容器的方法。

docker 有一个连接系统允许将多个容器连接在一起,共享连接信息。

docker 连接会创建一个父子关系,其中父容器可以看到子容器的信息。

容器命名

当我们创建一个容器的时候,docker 会自动对它进行命名。另外,我们也可以使用 --name 标识来命名容器,例如:

docker run -d -P --name runoob training/webapp python app.py

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

推荐阅读更多精彩内容