一、新建并启动
如果本地没有该镜像,会从公有仓库下载
启动一个bash终端,允许用户进行交互
docker run -t -i ubuntu:14.04 /bin/bash
-t:让Docker分配一个为终端并绑定到容器的标准输出上
-i:让容器的标准输入保持打开
二、启动已终止容器
docker start
docker restart 重启容器
三、后台运行
docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done":
-d: 让Docker在后台运行而不是直接把执行命令的结果直接输出在宿主机上,会返回一个id
注意:容器是否会长久运行,是和docker run指定的命令有关,和 -d 参数无关
docker ps 查看docker进程
docker logs [container ID or NAMES] : 获取容器的输出信息
四、终止容器
docker stop [container ID or NAMES]
终止状态的容器使用 docker ps -a 查看
五、进入容器
使用-d参数时容器会进入后台,这时候需要进入容器
1:docker attach [container ID or NAMES]
当多个窗口同时 attach 到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作了。
2:docker nsenter
安装 nsenter 工具
下载包:wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz; tar xzvf util-linux-2.24.tar.gz
cd /util-linux-2.24
编译安装:./configure --without-ncurses && make nsenter
复制命令:sudo cp nsenter /usr/local/bin
连接到容器,需要找到容器的第一个进程的PID,可以通过以下命令获取
PID=$(docker inspect --format "{{.State.Pid}}" gallant_bohr)
设置环境变量PID
docker inspect --format "{{.State.Pid}}" [container ID or NAMES] 获取容器的PID
使用 nsenter --target $PID --mount --uts --ipc --net --pid 进入容器
六、导出和导入容器
导出:docker export [container ID or NAMES] > /tmp/ubuntu.tar
将容器快照文件导入为镜像文件
导入:cat /tmp/ubuntu.tar | docker import - test/ubtun:v1.0
*注:用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态) ,而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。
七、删除容器:
删除一个处于终止状态的容器
docker rm [container ID or NAMES]
如果删除一个运行中的容器 使用 -f 参数
删除全部的容器:docker rm $(docker ps -a -q) 运行中的不会删除
八、创建数据卷
-v:
新建 /opt/nginx3 目录如果没有回自动创建
docker run -t -i --name web11 -v /opt/nginx3 centos:latest
挂在主机目录 /opt/nginx/ 到容器中, ro为设置为只读
docker run -t -i --name web13 -v /opt/nginx/:/opt/nginx2:ro centos:latest
查看容器的信息:
docker inspect [container ID or NAMES]
删除容器的时候不会删除数据卷,需要使用 docker rm -v 删除
九、数据卷容器
如果你有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器。数据卷容器,其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的
新建一个容器 dbdata 作为数据卷容器
docker run -d -v /dbdata --name dbdata centos:latest
新建 db01 容器 使用 --volumes-from 从 dbdata容器中挂载数据卷
docker run -d --volumes-from dbdata --name db01 centos:latest