docker 容器

docker 容器就是程序真正跑起来的地方,容器里面就是以镜像为模板,然后跑起一个或者一组应用。

容器运行

docker run → create → start → running → process exit → stopped → docker rm → deleted

  • 1、docker run 从镜像里面创建一个容器,并开始运行;

  • 2、根据镜像的内容来启动应用程序, 进行支持;

  • 3、如果程序退出了,没有程序在前台运行,容器就退出执行了,处于 stooped 状态;

  • 4、如果我们不需要再执行这个容器了,我们可以执行 docker rm 删除容器,释放磁盘空间,容器里面的东西都会被删除。

创建新容器

docker create 和 docker run 都可以创建新的容器,只是 docker create 创建的容器并不是直接运行,而是直接处于 stopped 状态,需要手动去启动起来。这两命令的语法是一致的。

docker run 执行过程:

  1. 检查本地是否存在指定的镜像,不存在就从公有仓库下载

  2. 利用镜像创建并启动一个容器

  3. 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层

  4. 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去

  5. 从地址池配置一个 ip 地址给容器

  6. 执行用户指定的应用程序

  7. 执行完毕后容器被终止

docker run 常用创建参数

-d: 后台运行容器,并返回容器ID;

-i: 以交互模式运行容器,通常与 -t 同时使用;

-p: 端口映射,格式为:主机(宿主)端口:容器端口

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

--name="opcailinux1": 为容器指定一个名称;

--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

-h "opcailinux1": 指定容器的hostname;

-e username="opcai": 设置环境变量;

--env-file=[]: 从指定文件读入环境变量;

--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;

-m :设置容器使用内存最大值(单位:bytes);

--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

--link=[]: 添加链接到另一个容器;

--expose=[]: 开放一个端口或一组端口;

例子

1、创建一个有名字的容器

docker  run -itd   --name=opcailinux  centos:latest

2、映射随机端口

docker run -itd  --name=opcailinux1  -P    nginx:latest

3、手动映射端口

docker  run  -itd --name=opcailinux2  -p   81:80  nginx:latest

4、挂载数据目录到容器里面

docker  run -itd --name=opcailinux3   -v /data/docker/nginx:/data   nginx:latest

查看容器

docker ps   #查看正在运行或者暂停的容器

docker ps -a   #查看所有的容器(包括停止的)

docker  ps   -l   #查看最后一个创建的容器信息

docker ps  -a -s  #统计所有容器的大小

进入容器操作

docker exec -it   [容器ID]   /bin/bash

这里的/bin/bash 是容器里面的/bin/bash,就是启动一个 bash shell,提供操作,有些镜像没有使用 bash,就需要运行其他终端,一般都有/bin/sh 这个软链接来链接到默认的 shell 程序。

容器状态控制

1、启动 stopped 的容器

docker  start    [容器ID]

2、重启容器

docker  restart    [容器ID]

3、停止容器

docker  stop     [容器ID]

4、暂停容器(暂停只容器进程暂停,分配的资源没有回收,stop 就回收了)

docker pause  [容器ID]

5、暂停恢复容器

docker unpause  [容器ID]

6、查看容器标准输出日志(有时候,容器异常退出的时候,需要看下输出,来排查问题)

docker  logs  [容器ID]

容器导入导出

docker 提供 export、import 命令来导出容器快照,和导入快照成为镜像

1、导出容器快照

docker  export     [容器ID]     >  opcailinux1.tar

2、导入快照文件成为镜像

docker import   opcailinux1.tar   opcailinux:v1.0

容器清理

容器如果在运行或者暂停中,默认是不允许删除的,需要加 -f 参数

docker  rm [容器ID]

强制删除

docker  rm -f   [容器ID]

清理所有处于终止状态的容器

docker rm $(docker ps -a -q)