docker的基本管理和应用

news2024/9/20 9:58:41

1、概念

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

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

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

2、设计的理念

鲸鱼——宿主机

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

3、容器化的特点

1、灵活,最复杂的程序也可以实现容器化

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

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

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

5、可扩展(依赖于k8s)

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

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

4、docker和虚拟机之间的区别

docker虚拟机
启动速度秒级分钟级
计算能力损耗几乎无损耗50%
性能接近原生性能只有80%
系统支持数量上千个(理论上)部署就几十个
隔离性资源隔离完全隔离
安全性安全性差安全性高

5、linux的命名空间

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

1、namespace实现资源隔离

2、cgroup实现资源限制

资源隔离:linux有6项隔离

namespace命名空间

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

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

3、PID:进程编号,每个程序在系统中都有一个唯一标识(pid),使用不同的pid可以保证进行之间不发生冲突

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

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

6、user:用户和用户组,在user空间中,每个进程都有独立的用户和用户组,每个用户之间可以互相不受影响

6、docker的核心概念

1、镜像

是创建容器的基础,类似虚拟机的快照,通过这个快照可以快速的创建一个容器。在镜像当中,已经封装好了程序运行需要的代码、库、运行时间、环境变量以及配置文件等

2、容器

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

3、仓库

保存镜像的地方

公有仓库(docker hub 阿里云)

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

7、工作流程

在这里插入图片描述

8、安装

systemctl stop firewalld
setenforce 0

#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2  

#添加阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#安装docker
yum install -y docker-ce-24.0.1 docker-ce-cli-24.0.1 containerd.io

#重启
systemctl restart docker
systemctl enable docker

#查看版本号
docker version

#显示docker系统的详细信息
docker info

#设置加速站点
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://tqozyo9i.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

#拉取nginx镜像
docker pull nginx

#修改配置文件
vim /etc/docker/daemon.json

{
	"registry-mirrors": ["https://hub.littlediary.cn/"]

}

#重新加载systemd的配置,重启docker
systemctl daemon-reload
systemctl restart docker

#拉取其他的镜像
docker pull centos:7
docker pull nginx:1.18
docker pull nginx:1.22

9、常用命令

9.1镜像相关操作

#拉取镜像
docker pull

#查看与nginx相关的镜像
docker search nginx

#查看本地计算机上所有的 docker 镜像
docker images

REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        latest    a72860cb95fd   7 weeks ago     188MB
nginx        1.22      0f8498f13f3a   16 months ago   142MB
centos       7         eeb6ee3f44bd   2 years ago     204MB
nginx        1.18      c2c45d506085   3 years ago     133MB

#根据image id查看镜像的详细信息
docker inspect +image id

docker的文件系统
overlayFS:联合文件系统,用于docker等容器技术之中
把多个文件系统层叠在一起,形成一个统一的文件系统
LowerDir:底层目录
包含底层的文件系统,也是容器运行的基础环境的文件系统,是根文件系统
UpperDir:可写层
容器可以在底层文件系统的基础之上进行修改,即容器内部发生的写操作,这些修改不影响底层的文件系统,达到容器内容的可写性
MergeDir:合并目录
把底层目录和可写层以及其他目录组成联合视图,也就是容器使用的文件系统
WorkDir:工作目录
处理文件系统的变更,当容器内部进行写处理时,由workdir进行处理

#删除镜像
docker rmi -f +image id
如果不加-f,镜像被容器使用,且容器正在运行,-f才能删除

#给镜像重新打标签
docker tag nginx:1.18 nginx:web
(将nginx的tag由1.18变为web)
nginx        1.18      c2c45d506085   3 years ago     133MB
nginx        web       c2c45d506085   3 years ago     133MB
根据image id删除镜像,那么nginx:1.18和nginx:web都会被删除

#把nginx:web这个镜像导出opt目录,保存成文件名 nginx1.18.tar
docker save -o /opt/nginx1.18.tar nginx:web

#导入镜像
方法一:docker load -i /opt/nginx1.18.tar
方法二:docker load < /opt/nginx1.18.tar

9.2容器相关操作

前提是必须要有镜像

#创建容器
docker create -it nginx:web
-i:容器和用户之间可以进行交互
-t:开启一个伪终端供用户操作
-it:开启一个终端让用户可以用交互式会话访问容器进行操作

#查看所有容器,包括未运行的容器
docker ps -a

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

CONTAINER ID   IMAGE       COMMAND                   CREATED          STATUS    PORTS     NAMES
71487d4a37f9   nginx:web   "/docker-entrypoint.…"   10 seconds ago   Created             jovial_gould

CONTAINER:容器的唯一标识
IMAGE:容器默认运行的命令
CREATED:容器暴露的端口
NAMES:容器的名称。系统随机分配的,也可以指定容器的名称
STATUS:创建成功,不是运行。UP表示运行状态,Exited表示停止运行,Created表示创建成功

容器的生命周期:
拉取镜像——创建容器——修改镜像——重启容器——停止容器——删除容器——删除镜像

#运行容器
docker start 容器名/container id
#停止
docker stop 容器名/container id

#创建容器,本地没有的镜像会自动拉取,然后再运行
docker run -it +镜像
容器内部如果没有命令执行,容器会自动终止运行;如果有命令,执行完指定命令之后容器也会终止运行
容器要长期运行、稳定运行,必须要有一个持续的可执行命令

docker run -itd --name test1 centos:7 /bin/bash
-itd
d:后台运行,指定后台运行的命令,这样创建完成之后,即便有-it,也不会进入容器,而是停留在宿主机的界面
--name:指定名称
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS         PORTS     NAMES
865c9e375ccd   centos:7   "/bin/bash"   9 seconds ago   Up 8 seconds             test1

#进入容器内部查看
docker exec -it 容器名称/容器id /bin/bash

#运行nginx
docker run -itd --name nginx1 nginx:1.22

CONTAINER ID   IMAGE        COMMAND                   CREATED          STATUS          PORTS     NAMES
6644684bf9f6   nginx:1.22   "/docker-entrypoint.…"   4 seconds ago    Up 3 seconds    80/tcp    nginx1

#查看容器的ip地址
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' +容器名/id
进入容器的网络命名空间,获取ip地址

#查看容器内部的日志输出
docker logs -f +容器名
---------------------------------------------------------------------------------------------------------------------------------------
docker run -itd --name nginx2 nginx:1.22 /bin/bash

docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' nginx2
172.17.0.4

#无法访问
curl: (7) Failed connect to 172.17.0.4:80; 拒绝连接
容器创建的时候会有一个默认的输出或者指令
/bin/bash——————默认执行的命令覆盖,虽然nginx在运行,但运行的不再是nginx的指令,而是/bin/bash
---------------------------------------------------------------------------------------------------------------------------------------

#端口映射,本地端口和容器端口进行映射
-P:随机指定宿主机的端口和容器的端口进行映射,端口号从32768开始

docker run -itd --name nginx4 -P nginx:1.22

CONTAINER ID   IMAGE        COMMAND                   CREATED          STATUS          PORTS                                     NAMES
fd506d16894b   nginx:1.22   "/docker-entrypoint.…"   5 seconds ago    Up 4 seconds    0.0.0.0:32768->80/tcp, :::32768->80/tcp   nginx4
宿主机端口:32768
nginx端口:80

-p:指定端口,宿主机的端口不能被占用

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

CONTAINER ID   IMAGE        COMMAND                   CREATED          STATUS          PORTS                                     NAMES
3f45633e224f   nginx:1.22   "/docker-entrypoint.…"   6 seconds ago    Up 6 seconds    0.0.0.0:81->80/tcp, :::81->80/tcp         nginx5
宿主机端口:81
容器端口:80

#把宿主机的文件复制到容器当中
docker cp /opt/index.html 容器名/id:/usr/share/nginx/html

#把容器的文件复制出来
docker cp 容器名/id:/etc/nginx/nginx.conf /opt

#导出容器
docker export -o /opt/nginx7.tar 容器名/id

#导入容器
docker import nginx7.tar -- nginx:7

#删除容器
docker rm -f 容器名

#批量停止容器
docker ps -a | awk 'NR>=2{print "docker stop "$1}' | bash
docker ps -a | awk 'NR>=2{print $1}'| xargs docker stop

#批量删除所有容器
docker ps -a | awk 'NR>=2{print "docker rm "$1}' | bash
docker ps -a | awk 'NR>=2{print $1}'| xargs docker rm

#批量删除镜像
docker images | awk 'NR>=2{print "docker rmi "$3}' | bash

#删除none镜像
docker images | grep none | awk '{print $3}' | xargs docker rmi

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2038296.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

07:【stm32】中断一:NVIC的配置

中断 1、中断的简介1.1、什么是中断1.2、为什么需要中断 2、中断的优先级2.1、中断优先级的表示方法 3、NVIC3.1、什么的NVIC3.2、NVIC的内部结构3.3、中断向量表3.4、程序实现①开启中断源②配置NVIC③中断响应函数 1、中断的简介 1.1、什么是中断 正在进行的事务被突发事件打…

1688商品详情API返回值中的供应商信息

在使用1688&#xff08;阿里巴巴中国站&#xff09;的商品详情API时&#xff0c;API的返回值中通常会包含丰富的产品信息&#xff0c;包括供应商&#xff08;卖家&#xff09;的信息。不过&#xff0c;具体的返回值内容可能会根据API的版本、调用参数以及API的更新情况有所不同…

什么是国际网络组网?

国际网络组网是指通过互联网技术将全球各地的不同网络相互连接&#xff0c;以实现信息交换与资源共享的过程。在这一过程中&#xff0c;涉及到数据传输、协议转换、跨网络通信等多个技术领域&#xff0c;旨在实现全球信息的无缝互联互通。国际网络组网的主要目标是扩大网络覆盖…

半导体RFID识别系统134.2K低频读写器|读写头JY-V610之SECS协议通信说明

什么是SECS协议&#xff1f; SECS&#xff08;Semiconductor Equipment Communication Standard&#xff09;协议是半导体设备通讯标准&#xff0c;用来统一各个生产设备之间以及生产设备和控制设备之间的通讯&#xff0c;由SEMI&#xff08;Semiconductor Equipment and Mate…

手搓滑动窗口

前言&#xff1a;好久没写滑动窗口&#xff0c;导致一些边界问题处理不好&#xff0c;back和top的初始值都搞不好 #include<bits/stdc.h> using namespace std;const int N (int)1e65; int n,m; int a[N],b[N]; int back,top;int main(){cin >> n >> m;for(…

【前端设计方案】H5 图片懒加载 SDK

实现思路 定义<img srcloading.png data-srcxxx.png/>页面滚动&#xff0c;图片露出时&#xff0c;将 data-src 赋值给 src 注意事项&#xff1a;滚动要节流 技术要点 获取图片的位置 elem.getBoundingClientRect() 图片 top < window.innerHeight 时&#xff0c;图片…

【学习笔记】爱立信SPO 1400 CRAFT软件基础知识9——Bridge(网桥)显示参数

一、前期准备 条件1.确认已正确使用爱立信SPO 1400 CRAFT软件通过网络登录设备&#xff08;以下简称NE&#xff09; 具体登录教程参考&#xff1a;使用爱立信SPO 1400 CRAFT软件通过网络登录设备的详细过程 二、学习内容&#xff1a; 提示&#xff1a;学习爱立信SPO 1400 CRA…

阿里员工:33岁,房贷还剩223万,每月还1.5W,失业中

中年失业 中年失业&#xff0c;真的很难。 虽然人到中年&#xff0c;一般多少都会有些储蓄&#xff0c;但也意味着会有更多的支出。 最近&#xff0c;一位阿里员工&#xff08;这会可能是前阿里员工了&#xff09;在社区分享到自己的经历。 贴主 33 岁&#xff0c;作为已结婚有…

搬瓦工日本软银线路VPS测评

搬瓦工日本VPS支持softbank/软银&#xff0c;Japan: Osaka (Softbank) &#xff0c;网络在2.5Gbps-10Gbps之间&#xff0c;底层为KVM虚拟、纯SSD阵列、支持在多机房之间切换。搬瓦工软银来国内的网络情况怎么样&#xff1f;测评数据大致如下&#xff1a; CPU具体型号不知道&…

深入了解指针(6)

文章目录 1.函数指针数组2.转移表3.回调函数 1.函数指针数组 存放函数指针的数组 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int add(int x, int y) {return x y; } int sub(int x, int y) {return x - y; }int main() {int (*p1)(int x, int y) add;int (…

基于python的百度迁徙迁入、迁出数据分析(八)

副标题&#xff1a;从百度迁徙数据看——重大公共卫生事件的影响 先来回顾一下&#xff0c;迁徙规模指数定义&#xff1a;反映迁入或迁出人口规模&#xff0c;城市间可横向对比。 2019年—2022年的部分春运数据已经不可查&#xff0c;用的环哥的数据&#xff0c;可参考环哥的…

LVS原理及相关配置

1. 描述以及工作原理 1. 什么是 LVS linux virtural server 的简称&#xff0c;也就是 linxu 虚拟机服务器&#xff0c;这是一个 由章文嵩博士发起的开源项目&#xff0c;官网是 http://www.linuxvirtualserver.org,现在 lvs 已经是 linux 内核标 准的一部分&#xff0c;使用…

用python的manim库实现表格格式操作【table 下】

1.Table 是 Manim 中用于创建一个包含文本或其他 数学符号的表格的类 Table 是 Manim 中用于创建一个包含文本或其他 数学符号的表格的类它能够帮助你在场景中清晰地展示数据或信息。 参数解释 table: 一个二维数组或列表&#xff0c;表示表格中的内容。每个子列表代表表格的…

zigbee笔记:十一、设备网络类型展示与按键实验

一、设备网络类型展示 利用开发板上的三个LED灯来显示设备当前的网络类型&#xff08;协调器、路由器、终端&#xff09;。 1、添加LED灯的初始化代码 1&#xff09;开发板LED原理图 2&#xff09;在模板工程的...Projects\zstack\Samples\smartHomeApp\Source目录下新建两个文…

【TabBar嵌套Navigation案例-发现页面-按钮上的图片旋转 Objective-C语言】

一、接下来,我们来做这个,点击以后,让它出一个蓝色的View 1.就是我们示例程序的这种效果, 一点击,让这个按钮旋转,然后呢,再让它出来一个蓝色的View, 首先,我们要去监听它的点击事件,这是第一,我点击以后,我要做一些什么样的操作,要有点击事件, 所以呢,我要把…

Processing中库和导出PDF内容

一.库 1.使用库的方式 从菜单栏&#xff08;Sketch Menu)选择导入库(import labrary),选择一个我们要添加或者成需要用到的库。 例如&#xff1a;当我们需要添加PDF扩展库时&#xff0c;需要将下面这段代码添加到草图中。 import processing.pdf.*; 除了processing里的库&…

ElasticSearch聚合操作详解

文章目录 聚合操作聚合的分类测试数据Metric AggregationBucket Aggregation获取job的分类信息限定聚合范围Range & Histogram聚合聚合嵌套 Pipeline Aggregation聚合的作用范围排序ES聚合分析不精准原因分析聚合性能优化启用 eager global ordinals 提升高基数聚合性能插入…

【Unity-本地化】简单的游戏本地化处理方案

目录 0 前言1 多语言配置2 本地化实现2.1 读取多语言文本的通用方法2.2 动态文本本地化2.3 静态文本本地化 3 方案扩展3.1 LanguageText扩展3.1.1 展示Excel里对应ID的文本3.1.2 自动填充ID3.1.3 同步prefab的修改3.1.4 完整代码 3.2 自动LanguageText挂载 4* 内嵌文本图片的本…

AI预测福彩3D采取888=3策略+和值012路或胆码测试8月14日新模型预测第56弹

好长时间没进行总结了&#xff0c;今天咱们做一个总结&#xff0c;总结一下最新模型经过50多期的测试结果&#xff1a; 经过近50多期的测试&#xff0c;当然有很多彩友也一直在观察我每天发的预测结果&#xff0c;得到了一个非常有价值的信息&#xff0c;那就是9码定位的命中率…

restful传值

GetMapping 普通的get请求 后端&#xff1a; restfule的get请求 通过/asd/123这种方式get请求传入后端 前端 url: /system/role/deptTree/ roleId / tenantId, method: get后端PathVariable从path上取对应的值 通过 GetMapping(value "/deptTree/{roleId}/{tenan…