Docker误区+技巧+转换关系

简介: Docker误区+技巧+转换关系 1. 误区:容器重启或者机器重启会丢失容器内的数据根据https://docs.docker.com/faq/上的问答和本人的实践,在docker容器内创建文件和安装软件,做下面的操作都不会丢失数据和软件:A.

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命令可以回到某个层!)

目录
相关文章
|
存储 开发工具 git
业内docker技巧和最佳实践的想法
业内docker技巧和最佳实践的想法   最佳实践问题   这里有一些技巧,可能符合或可能不符合最佳实践,回复评论将不胜感激。•保持映像小:使用--no-install-recommends选项的apt-get,安装真正的依赖性,而不是大的元数据包(如的texlive-full)。
1053 0
|
3天前
|
存储 监控 安全
【专栏】Docker Compose:轻松实现容器编排的利器
【4月更文挑战第27天】Docker Compose是款轻量级容器编排工具,通过YAML文件统一管理多容器应用。本文分三部分深入讨论其核心概念(服务、网络、卷和配置)、使用方法及最佳实践。从快速入门到高级特性,包括环境隔离、CI/CD集成、资源管理和安全措施。通过案例分析展示如何构建多服务应用,助力高效容器编排与管理。
|
3天前
|
存储 Kubernetes C++
【专栏】Kubernetes VS Docker Swarm:哪个容器编排工具更适合你?
【4月更文挑战第27天】对比Kubernetes和Docker Swarm:K8s在可扩展性和自动化方面出色,有强大社区支持;Swarm以简易用著称,适合初学者。选择取决于项目需求、团队技能和预期收益。高度复杂项目推荐Kubernetes,快速上手小项目则选Docker Swarm。了解两者特点,助力选取合适容器编排工具。
|
3天前
|
Cloud Native Linux 开发者
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
|
1天前
|
存储 虚拟化 数据中心
|
1天前
|
运维 Prometheus 监控
构建高效稳定的Docker容器监控体系
【4月更文挑战第29天】在微服务架构日益普及的当下,Docker作为轻量级容器的代表,被广泛应用于服务部署与管理。然而,随之而来的是复杂化的服务监控问题。本文旨在探讨如何构建一个高效且稳定的Docker容器监控体系,确保服务的高可用性。我们将从监控工具的选择、关键监控指标的确定,以及告警机制的设计等方面进行详细阐述,并提供一系列优化实践,以期为运维人员提供参考和指导。
|
2天前
|
Java Maven Docker
基于docker容器化部署微服务
基于docker容器化部署微服务
5 0
|
2天前
|
网络协议 Java Docker
使用docker编排容器(下)
使用docker编排容器(下)
8 0
|
2天前
|
Java 应用服务中间件 nginx
使用docker编排容器(上)
使用docker编排容器
7 0
|
2天前
|
Prometheus 监控 Cloud Native
构建高效的Docker容器监控体系
【4月更文挑战第28天】 在微服务架构和容器化部署日益普及的今天,对容器进行有效的性能监控成为确保系统稳定性的关键。本文将深入探讨如何构建一个高效的Docker容器监控体系,覆盖从监控指标的选择、数据采集、存储到可视化展示的全流程。我们将分析现有监控工具的优势与局限,并提出一种综合使用Prometheus、Grafana和自定义监控脚本的解决方案,旨在为运维人员提供实时、准确的容器监控数据,帮助快速定位并解决潜在问题。
14 1