热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

K8s学习笔记——k8s中的linux

文章目录docker常用命令总结K8s中的linuxnamespacedocker的隔离性是如何实现的docker网络模式不同networknamespace如何通信docker常

文章目录

        • docker 常用命令总结
        • K8s 中的linux
          • name space
          • docker 的隔离性是如何实现的
          • docker 网络模式
        • 不同network namespace 如何通信


docker 常用命令总结

docker 基本组成:

镜像 image: 一个镜像可以创建很多容器

容器 container: Docker 利用容器独立运行一个或一组应用。

仓库 repository: 公开仓库 和私有仓库

docker version 查看docker 的版本信息

docker info 显示Docker 系统信息,包括镜像和容器数

镜像命令

1 docker images 列出本地主机上的镜像 -a 列出所有镜像 --digests 显示镜像的摘要信息 --no-trunc 显示完整的镜像信息

2 docker search 从仓库中搜索指定的镜像

docker serarch -s 10 tomcat

–no-trunc:显示完整的镜像描述

-s:列出收藏数不小于指定值的镜像

–automated:只列出 automated build类型的镜像

3 docker rmi -f 删除镜像

  • docker rmi -f 镜像ID 删除单个镜像
  • docker rmi -f 镜像名1:TAG 镜像名2:TAG 删除多个
  • docker rmi -f $(docker images -qa) 删除全部

4 docker pull 下载镜像

  • docker pull tomcat

容器命令

1 docker run [option] image [command] 新建并启动容器

举例:

docker run -it centos /bin/bash

使用镜像 centos:latest 以交互模式启动一个容器,在容器内执行/bin/bash命令。

–name=“容器新名字”: 为容器指定一个名称;

-d: 后台运行容器,并返回容器ID,也即启动守护式容器;

-i:以交互模式运行容器,通常与 -t 同时使用;

-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;

-P: 随机端口映射;

-p: 指定端口映射;

2 docker ps 列出当前所有正在运行的容器

-a:列出当前所有正在运行的容器+历史上运行过的

-l:显示最近创建的容器

-n:显示最近n个创建的容器

-q:静默模式,只显示容器编号

–no-trunc:不截断输出

3 退出容器: 两种退出方式: exit 容器停止退出 , ctrl+p+q 容器不停止退出

4 容器启动停止命令:

  • 启动容器:docker start 容器ID或者容器名
  • 重启容器:docker restart 容器ID或者容器名
  • 停止容器:docker stop 容器ID或者容器名
  • 强制停止容器:docker kill 容器ID或者容器名

5 删除已停止的容器

​ 删除单个容器 :docker rm 容器ID

​ 删除多个容器: docker rm -f $(docker ps -a -q)

重要的容器命令

1 docker run -d 容器名 启动守护式容器

容器运行的命令如果不是那些一直挂起的命令,比如说top,tail ,就是会自动退出。 -d 允许后台运行

2 docker logs -f -t --tail 容器IDdocker logs -f -t --tail 容器ID 获取容器的日志

-t:是加入时间戳

-f:跟随最新的日志打印

–tail:数字显示最后多少条

3 docker top 容器ID 查看容器内运行的进程

4 docker inspect 容器ID 查看容器内部细节

5 进入正在运行的容器并以命令行交互

  • docker exec -it 容器ID bashShell 在容器中打开新的终端,并且可以启动新的进程

    docker exec -it 2ff3dfs ls -l /tmp

    docker attach 容器ID 直接进入容器终端的命令,不会启动新的进程

6 docker cp 容器ID:容器内路径 目标主机路径 从容器内拷贝文件到主机上

K8s 中的linux


name space

pid 为1的进程,系统的创始进程。 每创建一个进程pid的值就会往上增长。 但linux 中并不是只有一个pid 为1 的进程。因为linux 中有namespace的概念。不同namespace 中的的进程是独立的。

在这里插入图片描述

linux namespace 机制提供了一种资源隔离和虚拟化的特性,PID,IPC,Network 等系统资源不再是全局性的了。而是属于某个特定的namspace.。 每个namespace 的资源对于其他namespace 的资源是不可见的。因此在操作系统的层面,就会出现多个相同的pid 的进程。

在这里插入图片描述
这六种namespace 是实现容器必须的隔离技术,最近新增 Cgroup namespace(cgroup root directory cgroup 的根目录)

lsns

lsns 命令查看系统中所有的namespace 以及其类型。

在这里插入图片描述

查看init 进程中相关的namespace。

lsns | grep init

在这里插入图片描述

在这里插入图片描述

通过namespace 对系统中的七种资源进行了隔离,如果两个进程所属的某一类资源的namespace 是一样的,则会共享该资源,否则则是隔离的。如果两个进程所属的network 的namespace 是一样,则两个进程是可以直接通信的,因为其共享同一套网络协议栈。

上图中,两个进程。共享mnt 和pod namespace。

docker 的隔离特性就是通过linux namespace 机制来实现的。

docker 的隔离性是如何实现的

系统原有使用lsns 命令并保存,和使用docker 启动一个ubtuntu /bin/sh 再次使用l sns命令 进行对比。

docker 命令:

docker run -it ubuntu:18.04 /bin/bash

在这里插入图片描述

发现docker 进程多了5类/bin/bash 的namespace,分别为mnt(文件系统),uts(主机名与域名),ipc( 通讯),pid(进程),net(网络)。bash 系统这5类资源与系统进行了隔离。

docker 网络模式

我们通过docker run 创建docker 容器时,可以使用–net 来指定容器的网络模式。Docker 有以下四种网络模式。没有指定默认为bridge 模式。
在这里插入图片描述

host 模式,ifconfig的输出是一样的。

不同network namespace 如何通信

同一个network namespace 的机器都可以看到 lo 设备,lo设备对应的地址为127.0.0.1 。 机器可以通过lo 设备的网络接口实现之间的网络通信。

不同network namespace 如何通信,借用了内核里面的虚拟网络设备,和内核内的虚拟网桥设备机制。

在这里插入图片描述

docekr0 是在宿主机安装docker 时创建的虚拟网桥设备。

使用桥接网络模式启动一个docker 容器时,使用ipconfig 会发现多出了一个veth* 设备。进入docker 中ifconfig会发现多出了etho 设备。

在这里插入图片描述

参考视频地址: https://space.bilibili.com/646178510?spm_id_from=333.788.b_765f7570696e666f.1


推荐阅读
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 随着我司的应用都开始容器化,相应的ETL流程也需要迁移到容器中。常规的SQL和shell脚本迁移之后执行基本没有问题,主要的问题在于数据接入使用kettle的场景下,kettle启 ... [详细]
  • 本文主要介绍关于linux文件描述符设置,centos7设置文件句柄数,centos7查看进程数的知识点,对【Linux之进程数和句柄数】和【linux句柄数含义】有兴趣的朋友可以看下由【东城绝神】投 ... [详细]
  • Docker安装Rabbitmq(配合宝塔)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Docker安装Rabbitmq(配合宝塔)相关的知识,希望对你有一定的参考价值。一、事前准备 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • 开发笔记:Docker 上安装启动 MySQL
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Docker上安装启动MySQL相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • 本文介绍了在无法联网的情况下,通过下载rpm包离线安装zip和unzip的方法。详细介绍了如何搜索并下载合适的rpm包,以及如何使用rpm命令进行安装。 ... [详细]
  • docker安装到基本使用
    记录docker概念,安装及入门日常使用Docker安装查看官方文档,在"Debian上安装Docker",其他平台在"这里查 ... [详细]
  • k8s进阶之搭建私有镜像仓库
    企业级私有镜像仓 ... [详细]
  • php docker隔离,docker可以隔离资源吗
    docker可以隔离资源。docker容器的本质是宿主机上的一个进程。Docker通过namespace实现了资源隔离,通过cgroups实现了资源限制, ... [详细]
  • Docker下Prometheus和Grafana三部曲之一:极速体验
    开源监控工具Prometheus目前广为使用,配合Grafana即可直观展现监控数据,但对于初学者来说搭建这样一个系统要花费些时间,或者有 ... [详细]
  • 2019我的金三银四
    先讲一下自己的情况吧,二本学生,17年毕业,目前在一家跨境电商从事Java技术开发工作(不是阿里,没那么厉害),技术栈目前偏向于容器云、持续集成持续交付这一块,也就是SpringBoot、Kuber ... [详细]
author-avatar
888真人游戏官网1
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有