首页 > 其他分享 >深入理解Docker中Container

深入理解Docker中Container

时间:2022-11-30 14:39:22浏览次数:51  
标签:container centos -- image vim 深入 Container Docker docker


Container与Image的关系

既然container是由image运行起来的,那么是否可以理解为container和image有某种关系?

深入理解Docker中Container_vim

其实可以理解为container只是基于image之后的layer而已,也就是可以通过docker run image创建出一个container出来。

container到image

既然container是基于image之上的,想想是否能够由一个container反推出image呢?
肯定是可以的,比如通过docker run运行起一个container出来,这时候对container对一些修改,然后再生成一个新的image,这时候image的由来就不仅仅只能通过Dockerfile了。

操作步骤

(1)拉取一个centos image

docker pull centos

(2)根据centos镜像创建出一个container

docker run -d -it --name my-centos centos
(3)进入my-centos容器中

docker exec -it my-centos bash

(4)输入vim命令

bash: vim: command not found

(5)我们要做的是

对该container进行修改,也就是安装一下vim命令,然后将其生成一个新的centos

(6)在centos的container中安装vim

yum install -y vim

(7)退出容器,将其生成一个新的centos,名称为"vim-centos-image"

docker commit my-centos vim-centos-image

(8)查看镜像列表,并且基于"vim-centos-image"创建新的容器

docker run -d -it --name my-vim-centos vim-centos-image

(9)进入到my-vim-centos容器中,检查vim命令是否存在

docker exec -it my-vim-centos bash

vim

通过docker commit命令基于一个container重新生成一个image,但是一般得到image的
方式不建议这么做

container资源限制

如果不对container的资源做限制,它就会无限制地使用物理机的资源,这样显然是不合适的。

查看资源情况 :docker stats

内存限制

--memory Memory limit
如果不设置 --memory-swap,其大小和memory一样
docker run -d --memory 100M --name tomcat1 tomcat

CPU限制

--cpu-shares 权重
docker run -d --cpu-shares 10 --name tomcat2 tomcat

图形化资源监控

​https://github.com/weaveworks/scope​

sudo curl -L git.io/scope -o /usr/local/bin/scope
sudo chmod a+x /usr/local/bin/scope
scope launch 192.168.101.6

深入理解Docker中Container_docker_02

深入理解Docker中Container_vim_03

# 停止scope
scope stop
# 同时监控两台机器,在两台机器中分别执行如下命令
scope launch ip1 ip2

container常见操作

(1)根据镜像创建容器

docker run -d --name -p 9090:8080 my-tomcat tomcat

(2)查看运行中的container

docker ps

(3)查看所有的container[包含退出的]

docker ps -a

(4)删除container

docker rm containerid
docker rm -f $(docker ps -a) 删除所有container

(5)进入到一个container中

docker exec -it container bash

(6)根据container生成image

docker commit containerName imageName

(7)查看某个container的日志

docker logs container

(8)查看容器资源使用情况

docker stats

(9)查看容器详情信息

docker inspect container

(10)停止/启动容器

docker stop/start container

底层技术支持

Container是一种轻量级的虚拟化技术,不用模拟硬件创建虚拟机。
Docker是基于Linux Kernel的Namespace、CGroups、UnionFileSystem等技术封装成的一种自定义容器格式,从而提供一套虚拟运行环境。

Namespace:用来做隔离的,比如pid[进程]、net[网络]、mnt[挂载点]等

CGroups: Controller Groups用来做资源限制,比如内存和CPU等

Union file systems:用来做image和container分层

 

 

标签:container,centos,--,image,vim,深入,Container,Docker,docker
From: https://blog.51cto.com/u_14906615/5899421

相关文章

  • Docker的深入理解
    深入探讨Image 说白了,image就是由一层一层的layer组成的。官方image​​https://github.com/docker-library​​例如tomcat的地址​​https://github.com/docker-library/t......
  • 【转】深入理解Major GC, Full GC, CMS
    ​ 很多人都分不清MajorGC,FullGC的概念,事实上我查了下资料,也没有查到非常精确的MajorGC和FullGC的概念定义。分不清这两个概念可能就会对这个问题疑惑:FullGC会引起M......
  • CodeDay#5 启动报名| 带你深入探索支付宝终端动态化实践
    #01____CodeDay2021年首站:广州见时隔一年,mPaaSCodeDay回来了。在过去的一年中,我们通过与众多终端开发者在能力对接、需求沟通中发现,愈来愈多的研发团队面临业务需求爆......
  • tomcat源码分析-http请求在Container中的执行路线
     在CoyoteAdapter的service方法中,主要干了2件事:  1.org.apache.coyote.Request->org.apache.catalina.connector.RequestextendsHttpServletRequest     ......
  • 【Java技术指南】「实战盲区」深入透析Java8的Stream的原理及实战指南
    Java最有影响力的功能要说到Java8的技术体系中,最让人难以忘怀的功能,那非Lambda和Stream莫属了。两者结合操作,达成天作之合,有点势不可挡。它主要用于补充集合类,它的强大,相信......
  • 【Docker】清理磁盘占用
    查看磁盘空间占用#/var/lib/docker#du-sh*发现overlay2目录占用空间特别大深入查看发现是Logs占用空间转移备份并删除即可......
  • 【Docker】基本使用
    服务启动dockersystemctlstartdocker重启dockersystemctlrestartdocker停止dockersystemctlstopdocker.sockesystemctlstopdocker如果linux重启......
  • 关于docker技术的学习
    一、docker的介绍1、什么是dockerDocker是一种轻量虚拟化的容器技术,提供类似虚拟机的隔离功能。Docker容器将软件以及它运行安装所需的一切文件(代码、运行时、系统......
  • C#中的进程检测退出事件和座位状态改变事件深入浅出谈谈EventHandler的使用
    关于进程之前我在启动我的师生对讲的exe的时候,都是直接调用Process类的静态函数Process.Start(System.StringAppPath,System.StringArguments)来直接启动一个exe,这样当......
  • docker中安装db2
    1.查看可安装的db2版本dockersearchdb2express-c2.下载db2镜像dockerpullibmoms/db2express-c 3.安装镜像dockerrun-it --namedb2-p50000:50000-eDB2IN......