拉开大变革序幕(上):在浪潮之巅观望Docker

Docker says: an open platform to build, ship, and run any app, anywhere

这里写图片描述


Docker Service Overview

(as far as I study)

  • CaaS/PaaS/lightweight IaaS

    • developer oriented
    • connect code manage and cloud machine, to build, deploy and manage
  • Use as VM

    • Tencent ten thousand machines
    • rebuild in-house system
    • promote DevOps
    • provide CI/CD
  • Software Architecture

    • help microservice
    • baozoumanhua.com

Hello Docker, hello SDUer

现在正是云计算‘容器化’的潮流。Docker越来越成为云计算和分布式系统的宠儿和基石。

我们可以从 Docker Hub 或其他registry,如 DockerPool阿里云Docker镜像库, pull下已有的镜像,也可以自己写Dockerfile文件,自己创建镜像。有了镜像,就可以去RUN它。下面依次介绍了RUN一个镜像(docker run),自己创建镜像(Dockerfile语法docker build)。在介绍它的最基本用法之后,开始初步深入它的原理和内核技术,不求理解,只求一个印象 :-)。深入部分会越来越细致,不断完善。之后也会增加Docker Runtime metrics的介绍和命令,这样对Performance的分析也会有帮助。

感谢大家一起帮助博主完善这篇blog。


照个相

先粗略介绍docker常用的几个基本命令:

run

运行容器,如果镜像不存在则先下载

pull

从镜像库上下载容器镜像

start/stop

启动/停止一个container

rm

删除容器

rmi

删除容器镜像

commit

将容器中的修改提交至镜像中

logs

显示容器运行的控制台输出

build

从 Dockerfile 构建一个镜像

inspect

显示容器运行参数

images

显示当前宿主机上的所有镜像


docker run 洒洒水

$ sudo docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]

docker run命令有两个参数,一个是镜像名,一个是要在镜像中运行的命令。
正确的命令:

$ docker run learn/tutorial echo "hello word"
  • -d:containter将会运行在后台模式
  • –name:给container命名,对于一个container来说有个name会非常方便,因为你可以当你需要link其它容器时或者其他类似需要区分其它容器时,使用容器名称会简化操作
  • –link:连接两个container之间的通信,通过端口。

–link (name or id): alias

$ docker run -d -P --name web --link db:db training/webapp python app.py

上面命令连接了web和db两个container,注意link的参数 db:db,前一个db是容器名,后一个db是alias。

如果一个名为web的container被连接到db container上, –link db:webdb,那么Docker就会在web这个container中创建环境变量 WEBDB_NAME=/web/webdb。其中<alias>_NAME = WEBDB_NAME。

  • -P:container会开放部分端口到host,只要对方可以连接到host,就可以连接到container内部。当使用-P时,docker会查找一个未被占用的端口绑定到container。你可以使用docker port来查找这个随机绑定端口
docker run --name mongo_001 -d -P mongo
  • -p:指定要映射的端口,并且,在一个指定端口上只可以绑定一个容器。支持的格式有 ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort

映射所有接口地址

使用 hostPort:containerPort 格式本地的 5000 端口映射到容器的 5000 端口,可以执行

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

此时默认会绑定本地所有接口上的所有地址。

映射到指定地址的指定端口

可以使用 ip:hostPort:containerPort 格式指定映射使用一个特定地址,比如 localhost 地址
127.0.0.1

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

映射到指定地址的任意端口

使用 ip::containerPort 绑定 localhost 的任意端口到容器的 5000 端口,本地主机会自动分配一个端口。

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

还可以使用 udp 标记来指定 udp 端口

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

查看映射端口配置

使用 docker port 来查看当前映射的端口配置,也可以查看到绑定的地址

$ docker port nostalgic_morse 5000
127.0.0.1:49155.

再看这个例子:

sudo docker run –i –t –v /opt/ubuntutmp:/opt/ubuntutmp ubuntu:14.04 /bin/bash

创建基于Ubuntu 14.04镜像的容器,并挂载主机/opt/ubuntutmp,目录作为容器的数据卷<

评论 37
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值