docker基本管理和概念

1、定义:一个开源的应用容器引擎,基于go语言开发,运行在liunx系统中的开源的、轻量级的“虚拟机”

docker的容器技术可以在一台主机上轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器

docker的宿主机是liunx系统,集装箱可以理解为相互隔离的容器(组件或应用程序APP),每个容器都是一个独立的应用程序

2docker设计宗旨

build,ship and run any app,anywhere一次封装,到处运行

build:封装好的程序,只要部署即可使用,一次封装

ship and run any app:一次封装完成之后的程序可以在任何环境运行

anywhere:任意宿主机

过程:封装、发布、部署、运行、维护、运行、销毁。可以一整套的方式管理应用程序的声明周期

3docker优点

(1)灵活:再复杂的应用也可以实现容器化

(2)轻量级:小型的、不完整的、最小化封装的程序,与宿主机共享一个内核

(3)可互换:可以随时升级、更新

(4)便携式:本地、云平台都可以构建、部署(在任何地方运行)

(5)可扩展:自动分发容器副本(自动进行部署)

(6)可堆叠:在一个宿主机上可以创建不同版本的同一容器,也可以是多个相同版本的同一容器

4、liunx命名空间namespace

namespace:是一种内核特性,允许将一组系统资源隔离,在一个命名空间的进程在系统中可以拥有独立的资源

【面试题】namespace的六项隔离措施

基于这六个隔离项,实现容器和容器之间、容器和宿主机之间的资源隔离

①UTS

系统调用参数:CLONE_NEWUTS

隔离内容:主机与域名。在UTS命名空间中创建进程,进程可以看见自己的主机与域名,与其他进程分隔开

②IPC

系统调用参数:CLONE_NEWIPC

隔离内容:信号量、消息队列、共享内存。在IPC命名空间中,进程可以拥有独立的进程间通信资源

③PID

系统调用参数:CLONE_NEWPID

隔离内容:每个进程都有自己独立的进程号空间

④network

系统调用参数:CLONE_NEWNET

隔离内容:网络设备、网络栈、端口。每个进程都有一个自己独立的网络资源、端口号

⑤mount

系统调用参数:CLONE_NEWNS

隔离内容:挂载点。在mount命名空间中,每个进程或设备都有一个自己的文件系统挂载点,相互之间互不干扰

⑥user

系统调用参数:CLONE_NEWUSER

隔离内容:用户和用户组

docker下载链接:https://hub.docker.com/

5、docker的核心组件

  1. 镜像:docker的基础,最小单位,类似于虚拟机ISO文件,可可理解为压缩包,但不是解压即用,是一个环境部署的脚本,甚至包含完整的操作系统。一个镜像就是一个可执行的包,包里包含运行这个程序的所有内容(代码、配置文件、环境变量等)
  2. 容器:docker的容器是基于镜像运行起来的实例,可以启动、停止、删除。每一个容器是相互隔离的,互不可见
  3. 仓库:保存镜像。所有的镜像都是从仓库中获取的。分为公有仓库和私有仓库。在linux系统中下载到本地,镜像、容器、日志默认在/var/lib/docker中

6、docker与传统虚拟机之间的区别【面试题。应届】

特性

docker

虚拟机

启动速度

秒级

分钟级

计算能力损耗

几乎无

损耗50%

性能

接近原生系统

弱于原生系统

系统支持量

上千个

根据硬件系统条件(几十个)

隔离性

资源隔离

完全隔离

安全性

安全性差

安全性好

7安装docker【docker只支持64位系统,最少2核4G】

(1)安装依赖包

yum -y install yum-utils device-mapper-persistent-data lvm2

yum-utils

提供yum-cofig-manager工具,可以远程自定义获取yum源

device-mapper-persistent

进行逻辑卷管理的通用设备映射机制

(2)设置阿里云镜像源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

(3)安装 Docker-CE并设置为开机自动启动

yum -y install docker-ce docker-cs-cli contarnerd.io

systemctl start docker.service

systemctl enable docker.service

docker-ce

docker的社区版,面向开发者、小型团队和个人使用。免费

docker-cs-cli

提供docker的命令行工具

contarnerd.io

负责管理容器的生命周期(创建、运行、停止、继续、销毁)

docker安装完毕

(4)镜像加速下载

浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 获取镜像加速器配置

8、docker命令

查看 docker 版本信息

docker version

docker 信息查看

docker info

Docker 镜像操作

搜索镜像

docker search 关键字

获取镜像

docker pull 镜像名称:标签

查看下载到本地的所有镜像

docker images

根据镜像的唯一标识 ID 号,获取镜像详细信息

docker inspect 镜像ID号

为本地的镜像添加新的标签

docker tag 名称:标签 新名称:新标签

删除镜像

docker rmi 仓库名称:标签

存储镜像:将镜像保存成为本地文件

docker save -o 存储文件名 存储的镜像

载入镜像:将镜像文件导入到镜像库中

docker load -i 存出的文件

上传镜像

docker tag nginx:latest soscscs/nginx:web

#新的标签时必须在前面加上自己的dockerhub的username

docker login

登录公共仓库

Username:annie1234

password:【常用密码】

docker push soscscs/nginx:web  #上传镜像

Docker 容器操作

创建容器

docker create [选项] 镜像

查看容器的运行状态

docker ps -a(所有容器)

docker ps (正在运行的容器)

启动容器

docker start 容器的ID/名称

直接创建并运行容器

docker run -itd --name 容器名称 镜像:标签 /bin/bash

进入容器(进入容器前,确保容器正在运行)

docker exec -it 容器ID/名称 /bin/bash

退出容器

exit

终止容器运行

docker stop 容器的ID/名称

本地文件复制到容器

docker cp 本地文件存放路径 容器名称:存放文件路径

容器的导出与导入

导出格式:docker export -o 文件名 容器ID/名称

导入格式:docker import 文件名 -- 镜像名称:标签

删除容器(正在运行的容器)

强制删除:docker rm -f 容器ID/名称

先停再删:docker stop 容器ID/名称

          docker rm 容器ID/名称

批量停止容器

docker ps -a | awk 'NR>=2{print $1}'| xargs docker stop

批量删除所有容器【慎用】

docker ps -a | awk 'NR>=2{print $1}'| xargs docker rm

批量删除none镜像

docker images | grep none | awk '{print $3}' | xargs docker rmi

批量清理后台停止的容器

docker rm $(docker ps -a -q)

①查看 docker 版本信息

docker version

②查看本机docker所有信息

docker info

docker安装完毕后,客户端和服务端都运行在一台机器上

Client

客户端

Server

服务端

overlay2

docker使用的文件系统驱动

overlayFS

overlay file system联合文件系统,用于适配宿主机的文件系统,可以自动适配

(1)docker的镜像操作

①搜索镜像

格式:docker search 关键字

name

镜像名称

description

描述信息

stars

点赞数

official

官方镜像

automated

自动化构建

②获取镜像(拉取镜像)

格式:docker pull 镜像名称[:标签]

#如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签

#加上标签,下载的就是该版本的镜像

③查看下载到本地的所有镜像

docker images

repository

镜像所属的仓库

tag

镜像的标签信息,标记同一个仓库中的不同镜像

image id

镜像的唯一ID 号,唯一标识一个镜像(不重复)

created

镜像创建时间

size

镜像大小

④根据镜像的唯一标识 ID 号,获取镜像详细信息

格式:docker inspect 镜像ID号

lowerDir

底层目录。整个docker的底层文件系统,是一个或多个镜像文件的根文件系统

UpperDir

可写层。可以在容器运行时,在容器内进行写操作,实现容器的可写性

MergeDir

合并目录。lowerDir和UpperDir合并起来形成容器的文件系统,用户看到的也是这个合并视图

workDir

工作目录。处理文件系统变更,当在容器内进行写操作时,overlayfs使用workDir追踪文件系统的变更

⑤为本地的镜像添加新的标签

格式:docker tag 名称:标签 新名称:新标签

⑥删除镜像

方法1:

格式:docker rmi -f 镜像ID  #强制删除镜像

方法2:

格式:docker rmi 镜像名称:标签

#当一个镜像有多个标签时,只是删除其中指定的标签

格式:docker rmi 镜像ID号

#会彻底删除该镜像

注意:一个镜像有多个标签,删除时只是删除标签;只剩最后一个,删除的是镜像本身。若镜像已被容器使用,先停止容器,再删除容器,最后删除镜像

⑦存储镜像:将镜像保存成为本地文件

格式:docker save -o 存储文件名 存储的镜像

⑧载入镜像:将镜像文件导入到镜像库中

格式:docker load -i 存储的文件

⑨上传镜像

docker tag nginx:latest annie1234/nginx:1.22.0

#添加新的标签时必须在前面加上自己的dockerhub的用户名

docker login

#登录公共仓库

Username:annie1234

password:【常用密码】

docker push annie1234/nginx:1.22.0  #上传镜像

(2)docker容器操作

①创建容器

格式:docker create -it 镜像

-it

宿主机和容器形成一个可以交互的shell命令行

-i

表示让容器开启标准输入,接收用户的输入命令

-t

给容器分配终端(虚拟的伪终端)

注意:创建容器后自动创建一个docker0

②查看容器的运行状态

docker ps -a #显示所有的容器

docker ps    #显示正在运行的容器

③启动容器

格式:docker start 容器的ID/名称

up表示容器正在运行

exited表示容器退出,不运行

④直接创建并运行容器

格式:docker run -itd --name 容器名称 镜像:标签 /bin/bash

-d

可以让创建的容器以守护进程形式在后台运行,容器运行的程序不会结束

问题1:没有镜像能不能直接run?

可以,会自动拉取镜像

问题2:运行的程序是什么?不运行会怎样?

/bin/bash。-d结合,会给容器一个直接运行的命令,后台没有指令,容器没有可运行的程序,将会直接退出

-it

形成交互式的shell命令

-name

给容器命名

nginx:latest

镜像名称和标签,若本地没有可以自动下载

⑤进入容器(进入容器前,确保容器正在运行)

格式:docker exec -it 容器ID/名称 /bin/bash

⑥退出容器exit

⑦终止容器运行

格式:docker stop 容器的ID/名称

⑧本地文件复制到容器

格式:docker cp 本地文件存放路径 容器名称:存放文件路径

⑨容器文件复制到本地

⑩容器的导出与导入

导出格式:docker export -o 文件名 容器ID/名称

导入格式:docker import 文件名 -- 镜像名称:标签

注意:导出的容器仍然是一个镜像,必须要运行run或create才能成为容器;已经配置好的导出的容器镜像,可以部署到其他主机直接使用(工作中,我们用的都是开发已设置、配置好的容器镜像)

docker特性:即使在创建过程中报错,容器仍会被创建,但此容器不可用;导入镜像,或者导入容器镜像,若标签和已有标签重复,导入的镜像或者容器镜像tag变成none

⑪删除容器(正在运行的容器)

格式:docker rm -f 容器ID/名称

方法1:强制删

方法2:先停再删

⑫批量操作【不建议使用批量操作】

批量停止容器

docker ps -a | awk 'NR>=2{print $1}'| xargs docker stop

批量删除所有容器【慎用】

docker ps -a | awk 'NR>=2{print $1}'| xargs docker rm

批量删除none镜像

docker images | grep none | awk '{print $3}' | xargs docker rmi

批量清理后台停止的容器

docker rm $(docker ps -a -q)

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

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

相关文章

第二十一 网络通信

网络通信 21.1 网络程序设计基础 网络程序设计编写的是与其他计算机进行通信的程序。 21.1.1 局域网与互联网 实现两台计算机的通信,必须用一个网络线路来连接两台计算机 21.1.2 网络协议 1.ip协议 IP是Internet Protocol的简称,是一种网络协议 2…

Vue项目使用Sortable.js实现拖拽功能

想了解更多-可前往 Sortable.js官网 查看组件属性及参数 安装组件&#xff08;我这里使用的是NPM安装&#xff09; npm install sortablejs --save在需要使用拖拽功能的页面中使用&#xff08;完整功能代码&#xff09; <div class"tag_box"><div class&q…

使用VS Code远程开发MENJA小游戏并通过内网穿透分享本地游戏到公网

文章目录 前言1. 编写MENJA小游戏2. 安装cpolar内网穿透3. 配置MENJA小游戏公网访问地址4. 实现公网访问MENJA小游戏5. 固定MENJA小游戏公网地址 推荐一个人工智能学习网站 点击跳转学习 前言 本篇教程&#xff0c;我们将通过VS Code实现远程开发MENJA小游戏&#xff0c;并通…

centos服务器安装docker和Rabbitmq

centos服务器 一 centos安装docker1 安装docker所需要的依赖包2配置yum源3查看仓库中所有的docker版本4安装docker5 设置docker为开机自启6验证docker是否安装成功 二 使用docker安装RabbitMQ拉取RabbitMQ镜像创建并运行容器 一 centos安装docker 1 安装docker所需要的依赖包 …

Python Flask-Login:构建强大的用户认证系统

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com Flask-Login是Flask框架的一个扩展&#xff0c;专为构建用户认证系统而设计。它简化了用户登录和身份验证的流程&#xff0c;为开发者提供了强大而灵活的工具。本文将深入介绍Flask-Login的核心功能、基本用法和…

论文阅读:Distributed Initialization for VIRO with Position-Unknown UWB Network

前言 Distributed Initialization for Visual-Inertial-Ranging Odometry with Position-Unknown UWB Network这篇论文是发表在ICRA 2023上的一篇文章&#xff0c;本文提出了一种基于位置未知UWB网络的一致性视觉惯性紧耦合优化测距算法( DC-VIRO )的分布式初始化方法。 对于…

【算法】位运算

目录 01. 整数在内存中的存储 01.1 无符号整数的表示方法 01.2 有符号整数的表示方法 02. 移位操作符 02.1 左移操作符 1 << n 2的n次幂 02.2 右移操作符 n >> 1 和 n / 2 03. 位操作符 03.1 按位与 n & 1 和 n % 2 n >> i & 1 n &…

springboot3.0更新后,idea创建springboot2.x项目

springboot3.0更新后&#xff0c;idea创建springboot2.x项目 点击以下红色框中的按钮 出现了如下图所示&#xff1a; 到这里我们发现没有jdk8的版本&#xff0c;不要慌&#xff0c;我们可以先在这里选择21&#xff0c;然后进入到真正的项目中手动去修改这个jdk的版本&#xff0…

几分钟在Ubuntu搭建本地Emlog博客网站并发布至公网无需购买域名服务器

文章目录 前言1. 网站搭建1.1 Emolog网页下载和安装1.2 网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2.Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 3. 公网访问测试总结 前言 博客作为使…

基于JavaSE+JDBC使用控制台操作的简易购物系统【源码+数据库】

1、项目简介 本项目是一套基于JavaSEJDBC使用控制台操作的简易购物系统&#xff0c;主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目可以直接作为bishe使用。 项目都经过严格调试&…

应用程序中实现用户隐私合规和数据保护合规的处理方案及建议

随着移动互联网的发展&#xff0c;用户隐私合规和数据保护合规已经成为应用开发过程中不可忽视的重要环节。为了帮助开发者实现隐私和数据保护合规&#xff0c;本文将介绍一些处理方案和建议。 图片来源&#xff1a;应用程序中实现用户隐私合规和数据保护合规的处理方案及建议 …

SQL Server数据库的备份和还原

6.2 SQL Server备份和还原 数据库管理员最担心的情况就是数据库瘫痪&#xff0c;造成数据丢失&#xff0c;而备份作为数据的副本&#xff0c;可以有 效地保护和恢复数据。本节将介绍数据备份的原因&#xff0c;备份的方式.SOL Server的恢复模式.以及备 份策略和备份设备。 6.2…

每日汇评:在周五美国非农数据公布前,黄金上行空间有限

金价周四早间在2020美元上方巩固了此前的反弹&#xff1b; 随着美债收益率趋于稳定&#xff0c;美元处于三周高点&#xff1b; 黄金价格在第四季度图表上看起来很脆弱&#xff0c;焦点转向美国非农就业数据&#xff1b; 昨日早些时候&#xff0c;由于市场情绪依然疲软&#xff…

docker安装Postgres-XL集群及踩过的N个坑

说明&#xff1a;本文是在一个机器内部用docker创建了三台centos&#xff0c;然后构建的pgxl集群 文章目录 1. 学习docker2. 创建三台centos3. 安装SSH4. 创建新用户postgres5. 关闭防火墙 关闭selinux6. 配置免密登录7. 下载并传输Postgres-XL的源码8. 配置环境变量10. 安装11…

[TKDE2020]@Multi-Source_Spatial_Entity_Linkage

论文地址&#xff1a;https://arxiv.org/pdf/1911.09016v1.pdf&#xff08;下文中提及的引用信息如未解释&#xff0c;请索引原论文末的参考文献&#xff09; 论文中提到的SSTD2019Multi-Source Spatial Entity Linkage (提取码&#xff1a;i3xt) 论文重要部分翻译 Abstract …

【Java系列】函数式接口编程

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

视界臻色彩 轻巧薄未来 《2023年中国OLED电视发展白皮书》发布

随着中国经济迈入新周期&#xff0c;彩电行业也进入存量竞争阶段。在此背景下&#xff0c;主流品牌围绕新产品、新技术、新应用等方面积极发力&#xff0c;特别是在高端彩电市场的争夺中&#xff0c;伴随着三星OLED的入局开始变得愈发激烈。我国“十三五”规划中明确指出&#…

MySQL高级--01_1--数据库缓冲池(buffer pool)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 数据库缓冲池(buffer pool)DBMS 会申请占用内存来作为数据缓冲池&#xff0c;在真正访问页面之前&#xff0c;需要把在磁盘上的页缓存到内存中的Buffer Pool 之后才…

2024年网络安全比赛--系统渗透测试(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 1.在渗透机中对服务器主机进行信息收集&#xff0c;将服务器开启的端口号作为 Flag 值提交; 2.在渗透机中对服务器主机进行渗透&#xff0c;在服务器主机中获取服务器主机名称&#xff…

MX6ULL学习笔记 (八) platform 设备驱动实验

前言&#xff1a; 什么是 Linux 下的 platform 设备驱动 Linux下的字符设备驱动一般都比较简单&#xff0c;只是对IO进行简单的读写操作。但是I2C、SPI、LCD、USB等外设的驱动就比较复杂了&#xff0c;需要考虑到驱动的可重用性&#xff0c;以避免内核中存在大量重复代码&…