docker之容器操作
创建启动容器
- 方式一:
docker create -it ubuntu:latest , 该命令创建的容器处于停止状态
1. -i 让容器的标准输入保持打开
2. -t让docker分配一个伪终端
docker start [CONTAINER...]
- 方式二
docker run -ti ubuntu /bin/bash,基于已有ubuntu镜像直接创建容器并启动容器,进入容器内
docker run创建容器时,docker在后台运行标准操作如下
1. 检测本地是否创建指定镜像,不存在就从公有仓库下载
2. 利用镜像创建并启动一个容器
3. 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
4. 从宿主主机配置的网络接口中桥接一个虚拟接口到容器中
5. 从地址池配置一个IP地址给容器
6. 执行用户指定的应用程序
7. ***执行完毕容器被终止
- 后台运行 -d参数: docker run -d ubuntu /bin/sh -c “while true; do echo hello world; sleep 1; done”
终止容器
- docker stop -t|–time[=10] container_id, 执行后首先会想容器发送SIGTERM信号,等待一段时间(默认10秒),再发送SIGKILL信号终止容器
- 容器内的应用程序终止,则容易也自动终止
- 进入了一个容器的终端,可以exit、ctrl+d来退出终端,所创建容器也立刻终止
- 重启: docker restart container_id
进入容器
- docker attach ,docker自带命令
- docker attach container_name
- docker attach container_id
- docker attach container_name
tips:
attach有时候不方便,当多个窗口同事attach到同一个容器的时候,所有窗口会同步显示,当某个窗口因命令阻塞,其他窗口也无法执行操作
- docker exec ,例如docker -ti container_id /bin/bash,进入容器并启动一个bash
- nsenter工具,略
删除容器
- docker rm
- -f 强行终止并删除一个运行中的容器, docker会发送SIGKILL信号给容器,终止其中的应用
- -l 删除容器的连接,但保留容器
- -v 删除容器挂载的数据卷
导出容器
- docker export CONTAINER, 是指导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态
docker export ca0af853fcdd >test_for_run.tar
导入容器
- docker import 将导出的文件导入,成为镜像
例如: cat test_for_run.tar | docker import - ubuntu:latest
tips
docker load和docker import区别
1. docker load命令导入进行存储文件到本地的镜像库,docker import 命令导入一个容器快照到本地镜像库
2. 容器快照文件将丢弃所以的历史记录和元素局信息(只保留容器当时的快照信息),也可以重新制定标签等元数据信息, 镜像存储文件将保存完整记录,体积较大
其它操作
容器相关
- docker ps打印出正在运行的容器
- docker ps -a打印出所有运行过的容器
- docker rm $(docker ps -a -q) 删除所有未运行 Docker 容器
- docker rm $(docker ps -qf status=exited) 根据格式删除所有镜像
- docker rm $(docker ps –all -q -f status=exited) 删除停止的容器
- docker ps -a | awk ‘{print $1}’ | xargs docker rm 批量删除容器
- docker stop $(docker ps -a -q) 停止所有的container,这样才能够删除其中的images
- docker events 打印容器实时的系统事件
- docker attach [OPTIONS] CONTAINER, 使用这个命令可以挂载正在后台运行的容器,在开发应用的过程中运用这个命令可以随时观察容器內进程的运行状况。开发者在开发应用的场景中,这个命令是一个非常有用的命令
- cp CONTAINER:PATH HOSTPATH , 使用cp可以把容器內的文件复制到Host主机上
- docker diff CONTAINER
- docker inspect CONTAINER|IMAGE, 查看容器运行时详细信息的命令。了解一个Image或者Container的完整构建信息就可以通过这个命令实现
- docker kill [OPTIONS] CONTAINER [CONTAINER…], 杀掉容器的进程
- docker port CONTAINER PRIVATE_PORT, 打印出Host主机端口与容器暴露出的端口的NAT映射关系
- docker pause CONTAINER
- docker top CONTAINER [ps OPTIONS] , 显示容器內运行的进程
镜像相关
- docker rmi -f $(docker images | grep “” | awk “{print \$3}”) 删除没有使用的镜像
- docker images | awk ‘{print $3}’ | xargs docker rmi 批量删除镜像
- docker images 查看当前有些什么images
- docker rmi (docker images -q | awk '/^<none>/ { print3 }’) 删除所有未打 tag 的镜像
- docker rmi $(docker images -q) 删除所有镜像
- docker build [OPTIONS] PATH | URL | - , 这个命令是从源码构建新Image的命令
- docker history [OPTIONS], IMAGE 打印指定Image中每一层Image命令行的历史记录
其它
- docker version , 显示Docker的版本号,API版本号,Git commit, Docker客户端和后台进程的Go版本号
- docker logs CONTAINER, 批量打印出容器中进程的运行日志
342

被折叠的 条评论
为什么被折叠?



