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,目录作为容器的数据卷<