docker容器操作
容器是镜像的一个运行实例,和镜像不同的地方是镜像只是一个只读文件而容器则是一个可写文件。容器独立运行中一个或者一组它们所需要的运行环境。其中,包括了文件系统,shell环境等
本篇文章涉及知识点:创建容器、启动容器、终止容器、进入容器内操作、删除容器和通过导入导出容器并且实现容器的迁移等
一:创建容器
1,新建容器:docker create -t 镜像名:标签(-t 为docker分配一个伪终端并绑定在容器标准输入上。 -i 让容器的标准输入保持打开(交互模式)。 --name 给容器起名字)
举例:docker create -it centos:latest 创建一个centos的容器。可以通过docker ps -a 查看
docker create --name mycentos -it centos 创建一个名字为mycentos的容器
2,启动容器:docker start 容器名字
3,新建一个容器并且启动
命令格式:docker run -it 镜像名:标签 /bin/bash (允许用户进行交互操作)
举例:docker run -it centos:latest /bin/bash
docker run -it centos:latest /bin/bash "hello world" (创检容器并输入一个hello world)
扩展:利用docker run 来创建容器时,docker在后台运行的标准操作包括
(1)检查本地是否存在指定镜像,如果没有自动会从共有仓库下载
(2)利用镜像创建并启动一个容器
(3)分配一个文件系统,并在只读镜像层的外面挂载一层可读可写层
(4)从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中
(5)从网桥的地址池配置一个IP地址给容器
(6)执行用户指定的应用程序
(7)执行完毕后容器被终止
(8)在交互模式下,用户可以通过所创建的终端来输入命令进行操作
(9)容器的核心是所执行的应用程序,所需要的资源都是应用程序运行需要的。
(10)退出exit或者ctrl+d ,如果想要退出容器而不结束容器进程,可以输入ctrl-q +ctrl -p即可
4,容器启动后会返回一个唯一的ID,我们可以通过docker ps命令来查看容器信息
(1)docker run -d 运行一个新的容器,我们可以通过-d 来让它作为一个后台运行
(2)启动一个容器:docker start 容器名或者容器ID
(3)停止一个容器:docker stop 容器名
(4)重启一个容器:docker restart 容器名
(5)查看容器详细信息:docker inspect 容器名(若要查看某一项可以通过-f 来指定)
举例: docker inspect -f '{{.NetworkSettings.IPAddress}}' 容器ID
5,进入容器操作
使用-d参数后,容器启动后会自动进入到后台,某些时候我们需要进入到容器操作,有多种方式,这里介绍docker attach 和 docker exec -it
(1)使用docker attach允许我们进入到后台进程
(2)--sig-proxy=false 不允许容器转发信号。
注意:使用attach命令有时候不太方便。比如,当多个窗口同时attach到同一个容器时,所有窗口都会同步显示。当某个窗口因为命令阻塞时,其他窗口也就无法执行操作了。
(3)docker exec -it 容器ID或者容器名 /bin/bash 直接进入到容器当中
6,容器导入和导出
(1)导出容器:docker export 容器ID > 导出文件
举例: docker export d17f898a49e > centos7.tar
docker export -o centos7.tar d17f898a49e
(2)导入容器:docker import 或者docker load
区别:docker import会丢弃所有历史记录和原数据信息,仅仅只保留容器当中状态。类似于虚拟机快照。而docker load (镜像存储文件,将保存完整的记录,不过体积也比较大)导入容器快照时,还可以重新指定标签等原数据信息
举例:docker import centos7.tar centos 运行完可以使用docker images查看
docker load --input centos.tar 或者docker load < centos7.tar
7,删除容器
(1)docker rm 删除一个容器,删除容器之前需要先停止其运行状态。强制删除可以使用-f
举例: docker rm centos7(命令格式:docker rm 容器ID或者容器名字)
(2)批量删除多个容器
举例:docker rm $(docker ps -qa)可以批量删除容器,运行完可以使用docker ps -a查看
原文地址:https://www.cnblogs.com/mayaohui/p/11439856.html
- GO语言高并发学习心得体会例
- Go 语言实现的网络连接池:Pool
- go语言操作redis连接池的方法
- WebVR如此近 - three.js的WebVR示例程序解析
- 【Dev Club分享】基于RxJava的一种MVP实现
- Android 动态链接库加载原理及 HotFix 方案介绍
- 如果裸写一个goroutine pool
- 【Dev Club 分享】微信 iOS SQLite 源码优化实践
- 移动客户端中高效使用 SQLite
- 【Dev Club 分享】微信热补丁 Tinker 的实践演进之路
- Android 进程保活招式大全
- 【Dev Club 分享】H5 视频直播那些事
- Android Patch 方案与持续交付
- Linux系统下MongoDB的简单安装与基本操作
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 制作Linux嵌入式系统开机LOGO(图片)
- R语言奇淫巧技之pdftools包
- 14个Spring MVC超实用技巧!
- 想要成为前端Star 吗?一首歌时间将React / Vue 应用Docker 化
- 初识Pandas
- 【教程】从零制作文件系统到jz2440,使其支持telnet , ftp 和tftp
- Mybatis源码学习第六天(核心流程分析)之Executor分析
- EasyPoi导出Excel
- 盘点 15 个好用的 API 接口管理神器
- JVM学习第二天(垃圾回收器和内存分配策略)大章
- JVM学习第一天(虚拟机的前世今生与与Java的内存区域)
- Android进阶:Binder那么弱怎么面大厂?
- Mybatis源码学习第七天(PageHelper分析)
- 【小程序】728- 小程序如何生成海报分享朋友圈
- Mybatis源码学习第七天(插件源码分析)