【Docker系列】4-Docker image和container实战操作大全

2023-05-16

专栏目录

专栏目录

  1. 【Docker系列】1-virtual box配置Linux虚拟机
  2. 【Docker系列】2-Docker入门,容器化剖析
  3. 【Docker系列】3-Centos7 Docker安装手册
  4. 【Docker系列】4-Docker image和container实战操作大全
  5. 【Docker系列】5-Dockerfile镜像制作指南
  6. 【Docker系列】6-Docker Hub和Registry实战
  7. 【Docker系列】7-Docker 数据持久化和网络模式

Docker image和container实战操作大全

深入探讨Image

07

说白了,image就是由一层一层的layer组成的。

Image常见操作

(1)查看本地image列表
docker images  
docker image ls
(2)	获取远端镜像
docker pull
(3)	删除镜像[注意此镜像如果正在使用,或者有关联的镜像,则需要先处理完] 
docker image rm imageid
docker rmi -f imageid 强制删除镜像
docker rmi -f $(docker image ls)     删除所有镜像
(4)运行镜像
docker run image
(5)	发布镜像
docker push

官方Image

https://github.com/docker-library

官方镜像制作的Dockerfile

https://github.com/docker-library/official-images/tree/master/library

深入探讨Container

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

image-20210607164857728

理解 :其实可以理解为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 container-name newImage-name
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

结论 :可以通过docker commit命令基于一个container重新生成一个image,但是一般得到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 39.100.39.63
# 停止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
(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分层

所有文章都是以专栏系列编写,建议系统性学习,更容易成为架构师!
博主每天早晚坚持写博客给与读者价值提升,为了让更多人受益,请多多关照,如果觉得文章质量有帮助到你,请关注我的博客,收藏此文,持续提升,奥利给!
另外我不打算靠运营方式拿到博客专家的认证,纯纯的科技与狠活来征服读者,就看读者的感恩之心了,祝你好运连连。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Docker系列】4-Docker image和container实战操作大全 的相关文章

  • NSPredicate谓词搜索使用小记

    iOS中的搜索正常情况下用NSPredicate都足以解决问题 比如我们有一个原数组 dataArraty NSPredicate predicate 61 NSPredicate predicateWithFormat 64 span c
  • extern和volatile的用法

    extern 的用法 extern的用法的对象主要是变量和函数 用extern声明外部变量 什么是外部变量 外部变量是指在文件或者函数外部定义的全局变量 外部变量仅定义一次并且在所有的函数之外 在一个文件内使用外部变量 作用域 xff1a
  • 抽象数据类型定义(ADT)

    一 抽象数据类型定义 xff08 ADT xff09 作用 xff1a 抽象数据类型可以使我们更容易描述现实世界 例 xff1a 用线性表描述学生成绩表 xff0c 用树或图描述遗传关系 定义 xff1a 一个数学模型以及定义在该模型上的一
  • Keil串口仿真调试

    用到的软件 Keil开发软件 虚拟串口软件 串口调试小助手 软件介绍 1 虚拟串口软件 对于笔记本电脑来说 xff0c 没有自带串口使用虚拟串口软件可以模拟真实的串口 程序可以利用虚拟串口与其他串口交换数据 Virtual Serial P
  • Qt学习之路【5】:静态Qt库下SQLite数据库无法加载驱动(QSQLITE driver not loaded)

    使用的Qt库 Qt4 8 6 交叉编译工具链 xff1a arm linux gcc 4 3 6 这个问题纠结了好久 刚开始我使用的是Qt的动态库 xff0c 没有出现这个问题 现在使用的是Qt的静态库出现了这个问题 xff1a QSqlD
  • 【群晖nas】阿里域名DDNS 配置外网访问(华硕AC68U路由端口映射)

    拓扑图 友情提示 xff1a 其实 xff0c 华硕的路由是提供了免费域名的 具体步骤 确保路由器的WAN口IP为公网地址 在 路由器管理 系统设置 界面 xff0c 允许 从互联网设置RT AC88U 步骤1 高级设置 系统管理 系统设置
  • 使用"conn / as sysdba"登录时报出"insufficient privileges"错的问题

    1 xff09 conn as sysdba 的认证方式 oracle数据库的三种登录验证方式 xff1a 操作系统身份认证 密码文件认证 数据库认证 而conn as sysdba是属于操作系统认证 原理 xff1a 电脑开机时登录的用户
  • 数码管消影问题总结

    1 消影方法1 先送段选数据后送位选数据时 xff0c 需要在中间加入一条语句P0 61 0xff 作用是消影 现在来分析一下是怎样 产生影的 xff1f 当dula 61 0后锁住了P0口的数据 xff0c 即P0口仍然保持着上次的段选数
  • 【linux学习】ubuntu下挂载window共享文件

    ubuntu下挂载window共享文件实现文件共享 第一步 xff1a 将要共享的window文件夹共享 第二步 在ubuntu下进行挂载 xff0c 完整语法 xff0c 如下 xff1a 第一种方式 mount t cifs 192 1
  • ROM、SDRAM、RAM、DRAM、SRAM、FLASH 的区别

    ROM 和 RAM 指的都是半导体存储器 xff0c ROM 是 Read Only Memory 的缩写 xff0c RAM是 Random Access Memory的缩写 ROM 在系统体质供电的时候仍然可以保存数据 xff0c 而R
  • 软件开发技术文档编写规范

    在项目开发过程中 xff0c 应该按要求编写好十三种文档 xff0c 文档编制要求具有针对性 精确性 清晰性 完整性 灵活性 可追溯性 可行性分析报告 xff1a 说明该软件开发项目的实现在技术上 经济上和社会因素上的可行性 xff0c 评
  • insmod: can't insert 'led.ko': invalid module format详细解释

    insmod can 39 t insert 39 led ko 39 invalid module format 之前在Imx257学习版固件编写的驱动想直接移植imx257核心板的开发板上 以为2个板子的源码的引脚定义一样就没什么问题了
  • html媒体查询,同一个网页,在不同的条件下,使用不同的样式。

    媒体查询简述 设备 xff1a 屏幕 xff1a PC 手机端打印机屏幕阅读器 尺寸 xff1a 常见尺寸 320 420之间 响应式网页 xff1a 同一个网页 xff0c 在不同的条件下 xff0c 使用不同的样式 rem 百分比 xf
  • Anaconda3的安装和详细介绍(带图文)

    Anaconda的安装和详细介绍 xff08 带图文 xff09 Anacond的介绍 Anaconda指的是一个开源的Python发行版本 xff0c 其包含了conda Python等180多个科学包及其依赖项 因为包含了大量的科学包
  • vue项目引入less文件

    如果需要在vue项目中使用 less文件 xff0c 首先需要安装less和less loader依赖包 xff0c 这个 less文件相当于以前web项目的css文件 xff0c 有三种引入方式 xff1a 方式一 xff1a 在vue界
  • 新的开始

    这是第一次写博客 xff0c 也算是一个新的开始 今天就是写一些自己学到的内容 xff1a 今天接触了冒泡排序法 xff0c 还是能够接受的 1 init function var a 61 10 30 20 40 15 5 25 var
  • 【群晖nas】raidrive 极简教程

    1 群晖套件重心下载并配置 webDav server 2 raidrive连接群晖 xff0c 本地化使用 网盘下载 链接 xff1a https pan baidu com s 1eP9zBjlPjmL2 0MlWUlS3A 提取码 x
  • ubuntu20.04安装jenkins教程步骤-官方

    Debian Jenkins Packages Jenkins Debian Packages This is the Debian package repository of Jenkins to automate installatio
  • 编译mnistCUDNN时出错:fatal error: FreeImage.h: No such file or directory

    编译mnistCUDNN时出错 xff1a fatal error FreeImage h No such file or directory 在测试CUDNN是否正常使用时候报错 测试CUDNN8 1是否正常使用 1 在https dev
  • elementUI+MybatisPlus日期查询

    elementUI 43 MybatisPlus日期查询 1 前端设置 在el date picker组件加入value format 61 34 yyyy MM dd 34 xff0c 选择日期后 xff0c 将值自动保存为yyyy MM

随机推荐