docker基本管理和应用

docker是一个开源的应用容器引擎,基于go语言开发的

docker是运行在linux的容器化工具,可以理解为轻量级的虚拟机

可以在任何主机上,轻松创建的一个轻量级,可移植的,自给自足的容器

鲸鱼--------->宿主机

集装箱--------->独立运行的容器,相互隔离的容器。一个容器就是一个独立运行的应用程序。

容器化的特点:

1、灵活,最复杂的程序也可以实现集装箱化

2、轻量级:容器利用和共享主机内核

3、可互换:可以即时部署升级,即时更新

4、便携性:可以在本地构建,可以部署到云,可以在任何地方运行

5、可扩展(依赖于k8s)

容器是在linux上运行,与其他容器共享主机内核以及主机的资源,独立运行,相互隔离的进程(应用程序)

轻量级的,容器运行时占用一定的资源,但是不占用其他任务的资源。

docker和虚拟之间的区别:

doker 虚拟机

启动速度 秒级 分钟级

计算能力损耗 几乎无 损耗50%

性能 接近原生性能 只有80%

系统支持数量 上千个(理论上) 部署也就几十个

隔离性 资源隔离 完全隔离

安全性 安全性差 安全性高


docker数据流向图:


linux的命令空间*面试题

docker使用内核技术的两个重要的技术:

1、namespace 实现资源隔离

2、cgroup 资源限制

资源隔离:linux有6项隔离

namespace 命名空间:

1、UTS 主机名与域名 通过UTS命名空间创建进程,这个进程可以看到自己的主机名和域名,与宿主机

的其他进程进行分割。

2、IPC 信号量,消息队列,共享内存,进程拥有独立的通信资源,不受其他的进程影响。

kill -9

systemclt stop firewalld

3、PID 进程编号,每个程序在系统中都有一个唯一标识,唯一标识就是pid,使用不同的pid保证进程

之间不发生冲突

4、network 网络设备,网络端口等等

在network空间中,每个进程都有自己的独立的端口号,靠端口号,可以实现网络访问的隔离。

5、mount 挂载点(文件系统),每个进程使用不同的文件系统挂载点,不同的mount的文件系统互不干扰

6、user 用户和用户组,在user空间中,每个进程都有独立的用户和用户组。

每个用户之间可以互相不受影响。


docker的核心概念:

1、镜像:镜像是容器创建的基础,类似虚拟机的快照,通过快照可以快速创建一个容器

在镜像当中,已经封装好了程序运行需要的代码,库,运行时间,环境变量以及配置文件。

2、容器:基于镜像运行起来的进程就是容器。容器之间互相独立,互相隔离

3、仓库:保存镜像的地方。公有仓库(docker hub 阿里云)

私有仓库,不对外提供访问,自己使用。

docker的文件系统:

overlayFS 联合文件系统。用于docker等容器技术之中,

把多个文件系统层叠在一起,形成一个统一的文件系统。

LowerDir:底层目录

包含底层文件系统,容器运行的基础环境的文件系统。根文件系统

UpperDir:可写层

容器可以在底层文件系统的基础之上进行修改,即容器内部发生的写作。

这些修改不影响底层的文件系统。

达到容器内部的可写性

MergerDir:合并目录

把底层目录和可写层以及其他目录组成联合视图。也就是容器使用的文件系统。

Workdir:工作目录

处理文件系统的变更,当容器内部进行写处理时,由workdir进行处理

docker rmi -f IMAGE id号 如果不加-f,镜像被容器使用,切容器正在运行,-f才能删除。

docker save -o /opt/nginx1.18.tar nginx:web

把nginx:web这个镜像导出opt目录,保存到opt/nginx目录下

docker login登录仓库,才能到push

docker images查看当前镜像

容器操作,前提必须要有镜像

docker create -it nginx:web

创建容器

-i 容器和用户之间可以进行交互

-t 开启一个中端,用户可以用交互式会话访问器

拉取镜像----------------创建容器------------------------------修改镜像-----------重启重启>-----------停止容器-----------删除内容---------------------------删除信息

查看所有容器,包括未运行的容器


常用的基本命令总结:

namespace命名空间隔离:6项

network、UTS 主机名与域名、IPC 信号量、PID、mount 挂载点、user

docker pull nginx拉取镜像

docker images显示所有镜像

docker rmi -f nginx:1.22或者IMAGE ID删除指定镜像

docker save -o /opt/nginx1.18.tar nginx:1.22把指定镜像导出opt目录,保存的文件名叫nginx1.18

docker load -i /opt/nginx1.18.tar 导入

docker create -it nginx:1.18 创建容器,it开启终端,让用户可以用交互式会话访问容器,进行操作运行

docker ps -a 查看容器

docker start CONTAINER ID开启容器运行 stop 停止

docker ps 只查看运行起来的容器

docker run 本地没有的镜像会自动拉取,然后再运行

-d后台运行,指定后台运行的命令,这样我们创建之后,即便有-it,也不会进入容器,而是停留在宿主机里

docker run -itd --name test1 centos:7 /bin/bash

docker exec -it test1 /bin/bash 进入容器

docker run -itd --name nginx1 nginx:1.22

docker exec-it nginx1 bash

docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' nginx1进入容器的命名空间,获取ip地址

docker logs -f nginx1 查看容器的日志

docker run -itd --name nginx4 -P nginx:1.22 端口映射,本地端口和容器进行映射 -P随机指定:端口号从32768开始 -p指定端口

docker run -itd --name nginx5 -p 43000:80 nginx:1.22

echo "this is nginx-docker" > index.html

docker cp /opt/index.html nginx7:/usr/share/nginx/html

从宿主机向容器中复制文件

docker cp nginx7:/etc/nginx/nginx.conf /opt/

把容器的文件复制到宿主机

docker export -o /opt/nginx7.tar nginx:1.22

导出容器

相关推荐
朝九晚五ฺ6 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习
Kkooe7 小时前
GitLab|数据迁移
运维·服务器·git
wuxingge7 小时前
k8s1.30.0高可用集群部署
云原生·容器·kubernetes
久醉不在酒7 小时前
MySQL数据库运维及集群搭建
运维·数据库·mysql
志凌海纳SmartX8 小时前
趋势洞察|AI 能否带动裸金属 K8s 强势崛起?
云原生·容器·kubernetes
锅总8 小时前
nacos与k8s service健康检查详解
云原生·容器·kubernetes
BUG弄潮儿8 小时前
k8s 集群安装
云原生·容器·kubernetes
意疏8 小时前
【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行
linux·docker
虚拟网络工程师8 小时前
【网络系统管理】Centos7——配置主从mariadb服务器案例(下半部分)
运维·服务器·网络·数据库·mariadb
墨鸦_Cormorant8 小时前
使用docker快速部署Nginx、Redis、MySQL、Tomcat以及制作镜像
redis·nginx·docker