-------------------------------------------------------------------------------------
Docker容器的使用
什么是容器?
容器就相当于是一个全封闭式的虚拟机,采用的时沙箱机制, 容器之间不会有任何接口提供数据交互, 如同iPhone的沙箱机制。我们写的Django或者Flask的应用的相关代码,可以打包存储到容器里面, 然后发布到任何Linux机器上, 也可以实现虚拟化。
查看Docker的所有命令
docker
显示Docker下能使用的所有命令选项
docker command --help
显示command的详细用法, 例如 docker stats --help
运行容器命令行
docker run -i -t ubuntu:15.10 /bin/bash
-i: 允许你对容器内的标准输入 (STDIN) 进行交互。
-t: 在新容器内开启一个伪终端/终端
docker run -d ubuntu:15.10 /bin/sh -c 'while true; do echo hello world; sleep 1; done'
创建一个以进程方式运行的容器, 会生成一串很长的唯一hash
docker ps
打印内容参数:
CONTAINER ID: 容器ID
NAMES: 自动分配的容器名称
这两者通常用来作为该容器的标识符, 用以作为容器执行docker命令的依据, 如:
id为aaabbbccc, 则可以利用docker logs aaabbbccc来打印容器内的打印信息, NAMES类似。
停止容器
docker stop CONTAINER ID/NAMES
停止容器, 参数为容器id或者名字
运行web应用
docker pull training/webapp # 载入镜像, 什么是镜像可以去了解另一篇文章
docker run -d -P training/webapp python app.py
-d: 让容器在后台运行
-P: 将容器内部使用的网络端口映射到我们使用的主机上
pull: 载入镜像, 如果本地没有, 会去公共镜像下载
在使用-P后,我们使用docker ps查看会发现多了PORTS项, 里面就是端口映射的信息,长这样: 0.0.0.0:32769->5000/tcp,即容器段的5000端口映射到了主机端口32769上面, 如果在本地运行我们就可以通过127.0.0.1:32769访问容器5000端口的信息
我们也可以直接通过-p来指定映射端口:
docker run -d -p 5000:5000 training/webapp python app.py #5000映射到5000端口
-p 指定端口映射, 原端口:指定端口
我们还可以快速查看该容器的端口映射:
docker port CONTAINER ID/NAMES,这样就能直接显示端口映射的内容
查看Web应用程序日志
docker logs -f container-id/names
-f: 使docker logs像tail -f一样输出容器内部的标准输出
查看Web应用程序容器的进程
docker top container-id/names
显示容器内部正在运行的进程, 同终端top命令
检查Web应用程序
docker inspect container-id/names
返回一个json文件, 显示docker的底层信息
停止/启动(重启)应用容器
docker stop/start container-id/names
docker ps -l
查询最后一次创建的容器
移除Web应用容器
docker rm container-id/names
必须先停止,才能移除, 否则会报错