Docker误区+技巧+转换关系

Docker误区+技巧+转换关系

 

1. 误区:容器重启或者机器重启会丢失容器内的数据

根据https://docs.docker.com/faq/上的问答和本人的实践,在docker容器内创建文件和安装软件,做下面的操作都不会丢失数据和软件:
A. exit
sudo docker start b430d6f4ff00

B. sudo docker stop b430d6f4ff00
sudo docker start b430d6f4ff00

C. reboot host

https://docs.docker.com/faq/
Do I lose my data when the container exits?
Not at all! Any data that your application writes to disk gets preserved in its container until you explicitly delete the container. The file system for the container persists even after the container halts.

 

2. 如何进入或者退出docker容器?以及如何在主机上对正在运行的容器执行命令?

除了之前介绍的用nsenter:http://blog.csdn.net/yangzhenping/article/details/42297205

还可以使用attach选项:
sudo docker run --name ubuntu_bash -i -t ubuntu:latest /bin/bash
sudo docker ps -l
sudo docker attach b430d6f4ff00

如何退出容器而不停止容器?
组合键:Ctrl+P+Q

另外,如果想对容器执行命令,可以使用exec选项:
$ sudo docker exec -d ubuntu_bash touch /tmp/execWorks
容器中以后台进程运行touch /tmp/execWorks命令(就是在/tmp目录下创建一个新的文件execWorks)

 

另外有人想直接用ssh去连接上容器的想法,虽然可以,但是有很多弊端,而且docker已经提供了容器内执行的命令,没有必要再折腾每一个容器为sshd服务器
具体为什么不使用,可以看下这篇文章:http://jpetazzo.github.io/2014/06/23/docker-ssh-considered-evil/

 

3. 关于几个容器和镜像以及文件的转化关系:

参考:http://tuhrig.de/difference-between-save-and-export-in-docker/

 

容器转成镜像:
sudo docker commit <CONTAINER ID> imagename01

容器转成文件:
sudo docker export <CONTAINER ID> > /home/export.tar

镜像转成文件:
sudo docker save imagename01 > /home/save.tar
注:一般情况下,save.tar比export.tar大一点点而已,export比较小,因为它丢失了历史和数据元metadata

文件转成镜像:
cat /home/export.tar | sudo docker import - imagename02:latest

save.tar文件转成镜像:
docker load < /home/save.tar

查看转成的镜像:sudo docker images

注意:这里一个镜像经过n次转化之后,可以用sudo docker images --tree查看历史,用docker tag <LAYER ID> <IMAGE NAME>你可以回到某个层(只针对save命令可以回到某个层!)

时间: 2024-08-31 00:39:43

Docker误区+技巧+转换关系的相关文章

Java开发人员需要注意的五大Docker误区

本文讲的是Java开发人员需要注意的五大Docker误区,[编者的话]Docker现在很火,容器技术看上不无所不能,但这实际上是一种误解,不要被炒作出来的泡沫迷住双眼,本文抛去炒作,理性地从Java程序员的角度,列举出Docker目前的五大误区,帮助你更好地理解Docker的优势和问题. 抛去那些媒体和厂商们的炒作,我们如何才能更好更理性的使用Docker? Docker最近备受关注,原因显而易见.如何成功交付代码一直困扰着大家.传统的容器技术在众多需求和模板中乱成一团.而Docker可以简单且

Docker 实用技巧总结_docker

我有机会建立一个以Docker为基础的微服务架构在我现在的工作中,很多人都会分享他们使用Docker的心得,我想我也不会例外.因此我总结了一些,可能你会在日常使用Docker的时候会用到. 1. 一台主机部署多个Docker实例 如果你想运行多个Docker 容器在一台主机上,如果要设置不同的TLS设置,网络设置,日志设置和存储驱动程序特定的容器,这是特别有用的.例如,我们目前正在运行一个标准设立两个Docker守护进程.一运行consul提供DNS解析,并作为群集存储为其他Docker 容器.

『0015』 - Solidity Types - 动态字节数组(Dynamically-sized byte array)、固定大小字节数组(Fixed-size byte arrays)、string之间的转换关系

孔壹学院:国内区块链职业教育领先品牌 作者:黎跃春,区块链.高可用架构工程师 微信:liyc1215 QQ群:348924182 博客:http://liyuechun.org 固定大小字节数组(Fixed-size byte arrays)之间的转换 固定大小字节我们可以通过bytes0 ~ bytes32来进行声明,固定大小字节数组的长度不可变,内容不可修改.接下来我们通过下面的代码看看固定大小字节之间的转换关系. pragma solidity ^0.4.4; contract C { b

Java程序员需要注意的五大Docker误区

Docker是很有意思的技术,有一些真实有效的使用场景.作为一个新兴技术,还需要大量时间来解决缺失的功能和已知的bug.但是,现在这个领域的确有很多的炒作.不过记住哦,炒作可不是成功~ 网+线下沙龙 | 移动APP模式创新:给你一个做APP的理由>> Docker现在很火,容器技术看上不无所不能,但这实际上是一种误解,不要被炒作出来的泡沫迷住双眼,本文抛去炒作,理性地从Java程序员的角度,列举出Docker目前的五大误区,帮助你更好地理解Docker的优势和问题. 抛去那些媒体和厂商们的炒作

Docker 调试技巧

『重用』容器名 但我们在编写/调试Dockerfile的时候我们经常会重复之前的command,比如这种docker run --name jstorm-zookeeper zookeeper:3.4,然后就容器名就冲突了. 1 2 3 4 $ docker run --name jstorm-zookeeper zookeeper:3.4 ... $ docker run --name jstorm-zookeeper zookeeper:3.4 docker: Error response

Ubuntu上Grafana 监控 Docker的技巧

它提供了丰富多样.灵活的图形选项.此外,针对数据源,它支持许多不同的存储后端.每个数据源都有针对特定数据源的特性和功能所定制的查询编辑器.Grafana 提供了对下述数据源的正式支持:Graphite.InfluxDB.OpenTSDB. Prometheus.Elasticsearch 和 Cloudwatch. 每个数据源的查询语言和能力显然是不同的,你可以将来自多个数据源的数据混合到一个单一的仪表盘上,但每个面板被绑定到属于一个特定组织的特定数据源上.它支持验证登录和基于角色的访问控制方案

java全角、半角字符的关系以及转换详解_java

如果搞明白了Java中全角字符和半角字符之间的关系 那他们之间的转换根本就不是个事. 全角字符与半角字符的关系 可以通过下面的程序看看Java中所有字符以及对应编码的值 复制代码 代码如下:     public static void main(String[] args) {        for (int i = Character.MIN_VALUE; i <= Character.MAX_VALUE; ++i) {            System.out.println(i + &qu

详解PHP的Laravel框架中Eloquent对象关系映射使用_php技巧

零.什么是 EloquentEloquent 是 Laravel 的 'ORM',即 'Object Relational Mapping',对象关系映射.ORM 的出现是为了帮我们把对数据库的操作变得更加地方便. Eloquent 让一个 'Model类' 对应一张数据库表,并且在底层封装了很多 'function',可以让 Model 类非常方便地调用. 来看一段如下代码: <?php class Article extends \Eloquent { protected $fillable

进制转换基础_相关技巧

基本知识 十进制 基数为10,逢10进1.在十进制中,一共使用10个不同的数字符号,这些符号处于不同位置时,其权值各不相同. 二进制 基数为2,逢2进1.在二进制中,使用0和1两种符号. 八进制 基数为8,逢8进1.八进制使用8种不同的符号,它们与二进制的转换关系为: 0:000 1:001 2:010 3:011 4:100 5:101 6:110 7:111 十六进制 基数为16,逢16进1.十六进制使用16种不同的符号,它们与二进制的转换关系为: 0:0000 1:0001 2:0010