docker的客户端非常简单,我们可以直接输入 docker 命令来查看到Docker客户端的所有命令选项
image.png
还可以通过命令 docker command —help 更深入的了解指定的Docker命令使用方法
docker run —help
image.png

容器使用

载入镜像
如果我们本地没有training/webapp镜像,可以使用 docker pull 命令来载入training/webapp镜像
docker pull training/webapp
image.png

启动容器

使用某一个镜像启动一个容器,
docker run -it -d ubuntu:15.10 /bin/echo “Hello world”
image.png
后台运行
docker run -itd —name ubuntu-test ubuntu /bin/bash
参数解析:
ubuntu:15.10:指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker就会从镜像仓库Docker Hub下载公共镜像
/bin/echo “Hello world”:在启动的容器里执行的命令
-:很多参数-t-i-d
-d:后台运行容器,并返回容器id
-i:以交互模式运行容器,通常和-t同时使用
-t:为容器重新分配一个伪输入终端,通常于-i同时使用 -it
-P:(大写)随机端口映射,容器内部端口随机映射到主机的端口
-p:(小写)指定端口映射,格式为 主机(宿主)端口:容器端口,例: -p 5000:5000
—name=”nginx-1”:为容器指定一个名称,
—dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
—dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h “mars”: 指定容器的hostname;
-e username=”ritchie”: 设置环境变量;
—env-file=[]: 从指定文件读入环境变量;
—cpuset=”0-2” or —cpuset=”0,1,2”: 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
—net=”bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
—link=[]: 添加链接到另一个容器;
—expose=[]: 开放一个端口或一组端口;
—volume , -v: 绑定一个卷
退出终端,运行 exit 命令 或者ctrl+D 来退出容器

查看容器

查看容器的命令 docker ps ,默认是列出运行的容器
docker ps -a
image.png
参数详解
-a:显示所有容器,包括未运行的
-f:根据条件过滤显示的内容
—format:指定返回值的模板文件
-l:显示最近创建的容器
-n:列出最近创建的n个容器
—no-trunc:不截断输出
-q:静默模式,只显示容器编号
-s:显示总的文件大小

启动容器

启动已经停止运行的容器 使用命令 docker start id/名称
docker start 93ae09749962 或者 docker start interesting_gates
image.png

停止/重启容器

停止已经启动的容器 使用命令 docker stop id/名称
docker stop 3bb04af8c278 或者 docker stop interesting_gates
image.png
重启已经启动的容器 使用命令 docker restart id/名称
docker restart 3bb04af8c278 或者 docker restart interesting_gates
image.png

进入容器

在使用-d参数时,容器启动后会进入后台,此时想要进入容器,可以通过以下指令进入
docker attach id
docker exec:(推荐使用这个,推出不会停止容器)
docker attach 1e560fca3906 进入容器 id为 1e560fca3906 的容器(注意推出容器,会关闭容器)
容器基本使用 - 图9
docker exec -it 243c32535da7 /bin/bash //进入 243c32535da7的容器,推出不会关闭容器
image.png

导入导出容器

导出本地某个容器,使用命令 docker export
docker export 1e560fca3906 > ubuntu.tar
这样将导出容器快照到本地文件
导入容器快照,使用命令 docker import
//将刚才导出的快照文件导入docker镜像,
cat docker/ubuntu.tar | docker import - test/ubuntu:v1
还可以通过url或者目录来导入
docker import http://example.com/exampleimage.tgz example/imagerepo
//查看镜像
docker images
容器基本使用 - 图11

删除容器

删除容器使用命令 docker rm id,删除容器必须是停止的状态
docker rm -f 1e560fca3906
参数详解
-f:强制删除运行中的容器
-l:移除容器间的网络关系,并不是删除容器
-v:删除于容器关联的卷
清理掉所有处于终止状态的容器
docker container prune

运行web应用

运行容器没什么特别的东西,尝试以下使用docker 构建一个web应用程序
在docker容器种运行一个python flask(一个框架)应用运行一个web应用
docker pull training/webapp
docker run -d -P training/webapp python app.py
image.png
-d后台运行,-P随机端口映射
使用docker ps 查看应用
image.png
可以看到一个web应用,多了端口信息 55000->5000
docker 开放了5000端口,(默认python Flask端口)映射到主机的55000端口上
我们可以使用浏览器,访问主机的55000端口,实现访问web应用
image.png
我们也可以通过 -P 参数来设置不一样的端口
docker run -d -p 5000:5000 training/webapp python app.py
image.png
通过浏览器访问web应用
image.png
查看网络端口的快捷方式
通过 docker ps 可以查看到容器的端口映射,docker还提供了一个其他的快捷方式 docker port 命令 来查看指定id或名称容器的某个确定端口映射到宿主机的端口号
docker port stoic_fermi
image.png
查看Web应用程序日志
使用命令 docker logs id/名称 可以查看容器内部的标准输出
docker logs -f stoic_fermi
image.png
-f:docker logs 像使用 tail -f 一样来输出容器内部的标准输出。
从上面,我们可以看到应用程序使用的是 5000 端口并且能够查看到应用程序的访问日志。

查看web应用容器进程

我们可以通过命令 docker top 来查看容器内部运行的进程
docker top wizardly_chandrasekhar
image.png
检查WEB运用程序
使用 docker inspect 来查看docker 的底层信息,它会返回一个json文件,记录着docker 容器的配置和状态信息
docker inspect stoic_fermi
image.png