当前位置: 首页 > news >正文

docker (简介、dcoker详细安装步骤、容器常用命令)一站打包- day01

一、 为什么出现

Docker是基于Go语言实现的云开源项目。

Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”
 

 Docker 就是在它的基础上发展过来的。将应用打成镜像,通过镜像成为运行在Docker容器上面的实例,而 Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机器上就可以一键部署好,大大简化了操作。
 

二、docker 和 传统的虚拟机对比

  • 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;
  • 容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
  • 每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。

 三、docker基本组成(三要素)

镜像(Image)

 镜像是就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。

理解:Image 可以看成java类,容器可以看成java类 new出来的实例

容器(Container)

容器是独立运行的一个或一组应用。容器是用镜像创建的运行实例。

它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。

仓库(Repository)

仓库是集中存放镜像文件的场所。仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。

仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云 等

 四、安装docker(详细)

  1. 确定你是centos 7 以上的版本(默认在管理员权限下,不在先切换)  :
cat /etc/redhat-release 

        2. 如果以前装过卸载旧版本

sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

 3.yum 安装gcc相关:

  •        首先,保证系统能上外网
  •         gcc:它是一个自由开源的编译器工具集,能够编译多种编程语言,包括 C、C++、Objective-C、Fortran、Ada 和其他一些编程语言。
gcc -v 查看系统是否安装gcc----- 安装命令
yum -y install gcc  yum -y install gcc-c++

 4.安装需要的软件包

  •         先检查下是否已经安装yum-utils :yum list installed | grep yum-utils  或者 yum install -y yum-utils
  •        yum-utils 简介:是一款由CentOS官方开发的Linux包管理工具,它是yum软件包管理器的扩展,提供了一系列额外的命令和脚本,可以帮助Linux系统管理员更好地管理依赖关系、配置文件、软件包更新等方面的工作。
yum install -y yum-utils

 5.安装镜像仓库

  •         此处我们不使用 docker官网仓库,使用阿里云的国内仓库,国外太慢

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

6.更新yum软件包的索引

        作用:更新yum软件包的索引,能够使系统管理员更加方便地查找和安装软件包

centos 7 :
yum makecache fastcentos 8 :
yum makecache

 7.安装docker引擎

先更新yum(包、内核)此处可以不更新,会更新linux所有安装包包、,导致意外 ,升级所有包同时也升级软件和系统内核。 更新完后需要重启系统 : reboot

 yum出问题:Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

可以参考:【已解决】Error: Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorlist-CSDN博客

 yum -y update

安装最新版本的 Docker Engine-Community 和 containerd,安装过程中会出现两次:Is this ok [y/N]: y ,都输入y,然后按Enter键

yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

 查看是否开机启动

sudo systemctl list-unit-files | grep enable

 开机启动

sudo systemctl enable docker.service

 8.启动dcoker        

sudo systemctl start docker

查看docker 服务

ps -ef|grep docker

9.测试docker

 通过运行 hello-world 镜像来验证是否正确安装了 Docker Engine-Community

 sudo docker run hello-world

 看到下面表示运行成功!

 

10.查看docker版本

docker -v
docker version

11.安装成功后需重启docker

systemctl restart docker

或者

service docker restart

 五、阿里云镜像加速器配置

 新建文件夹

mkdir -p /etc/docker

 设置镜像加速地址

sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://nmmxt7ol.mirror.aliyuncs.com"]
}
EOF

重新启动docker

sudo systemctl daemon-reloadsudo systemctl restart docker

六、doker常用的命令整理

以下是Docker的一些常用命令,按功能分类:帮助启动类命令:
启动docker: systemctl start docker
停止docker:systemctl stop docker
重启docker:systemctl restart docker
查看docker状态: systemctl status docker
开机启动: systemctl enable docker
查看docker概要信息: docker info
查看docker总体帮助文档: docker --help
查看docker命令帮助文档: docker 具体命令--help1. 查看容器和镜像
docker images:查看所有本地Docker镜像。
docker ps:列出正在运行的容器。
docker ps-l:列出最后一次创建的容器。
docker inspect:查看容器的底层信息。
docker system df 查看镜像/容器/数据卷所占的空间2. 容器管理
docker run:启动一个新的容器。
docker start:启动一个已经存在的容器。
docker stop:停止一个正在运行的容器。
docker rmi 镜像名/镜像ID :删除一个容器,必须为停止状态。
docker rmi -f 镜像名/镜像ID 强制删除容器
docker rmi -f $(docker images -qa) 删除docker引擎中的全部镜像
docker ps -a:查看所有容器,包括已经停止的。3. 镜像管理
docker search 镜像名 :搜索某个镜像
docker pull:从Docker镜像仓库中下载镜像。
docker tag:给本地镜像添加标签。
docker images -d:列出本地所有镜像,包括没有使用的缓存镜像。docker rmi:删除本地一个或多个镜像。4. 数据管理
docker cp:从容器中拷贝文件到本地文件系统,或从本地文件系统拷贝文件到容器中。
docker exec:在正在运行的容器中执行命令。
docker logs:查看容器内标准输出。
docker top:查看容器内部运行的进程。
docker port:查看容器的端口映射。
以上是Docker的一些常用命令,希望可以帮助到您。

七、容器命令(重点)

1- run 运行 :
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]	新建/启动容器
docker run -it IMAGE [COMMAND] [ARG...]	启动交互式容器
docker run --name=容器名 IMAGE [COMMAND] [ARG...]	新建指定名字的容器
docker run -d IMAGE [COMMAND] [ARG...]	为容器开启守护进程
docker ps [OPTIONS]	列出当前正在运行的所有容器2-退出:
exit	退出容器,容器停止
ctrl+p+q	退出容器,容器不停止3- 启动/重启/停止
docker start 容器ID或者容器名	启动已停止运行的容器
docker restart 容器ID或者容器名	重启容器
docker stop 容器ID或者容器名	停止容器
docker kill 容器ID或容器名	强制停止容器4- 删除
docker rm 容器ID	删除已停止的容器:
docker rm -f 容器名/容器ID	强制删除正在运行的容器
docker rm -f $(docker ps -a -q)	一次性删除多个容器实例5- 查看容器日志
docker logs 容器ID	查看容器日志6-查看容器进程
docker top 容器ID	查看容器内运行的进程7-查看容器内部的细节(就是小型linux)
docker inspect 容器ID	查看容器内部的细节8-进入容器
docker exec -it 容器ID /bin/bash	进入正在运行的容器并以命令行交互9-copy docker 容器中文件 到主机
docker cp 容器ID:容器路径 主机路径	从容器内拷贝文件到主机上10-导入/导出容器
docker export 容器ID > 文件名.tar	导出容器为一个tar文件
`cat 文件名.tar	docker import - 镜像用户/镜像名:镜像版本

新建/启动容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

启动交互式容器

docker run -it IMAGE [COMMAND] [ARG...]

新建指定名字的容器

docker run --name=容器名 IMAGE [COMMAND] [ARG...]

为容器开启守护进程

docker run -d IMAGE [COMMAND] [ARG...]
 

 重点

OPTIONS说明(常用):有些是一个减号,有些是两个减号


--name="容器新名字":为容器指定一个名称;
-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);


-i:以交互模式运行容器,通常与 -t 同时使用;(interactive 交互)
-t:为容器重新分配一个伪输入终端,通常与 -i同时使用;也即启动交互式容器(前台有伪终端,等待交互);(tty 伪终端)


-P: 随机端口映射,大写P
-p: 指定端口映射,小写p
 

7.1启动交互式容器 (重点)
1-先拉去ubuntu 的镜像:docker pull ubuntu2-交互模式启动容器,并在容器内执行/bin/bash命令,启用交互式shelldocker run -it ubuntu /bin/bash对比上面, --name 指定容器名称
docker run -it --name=myubuntu ubuntu3-退出
直接 exit

7.2

 7.2 docker ps  [OPTIONS]  查看运行中容器命令
OPTIONS说明(常用):-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。
7.3 启动守护式容器(重点)
启动后台守护容器
docker run -d redis

7.4进入/退出容器(重点)
进入正在运行的容器并以命令行交互:方式1(推荐):docker exec -it 容器ID bashShell方式2:docker attach 容器ID

 区别:

  • exec 是在容器中打开新的终端,用exit退出,不会导致容器的停止
  • attach 直接进入容器启动命令的终端,不会启动新的进程用exit退出,会导致容器的停止。

[root@iZuf6hxabqikytnrumsi4gZ ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS      NAMES
9ba0c8d50371   redis     "docker-entrypoint.s…"   40 minutes ago   Up 40 minutes   6379/tcp   unruffled_lamport
[root@iZuf6hxabqikytnrumsi4gZ ~]# docker exec -it 9ba0c8d50371 /bin/bash
root@9ba0c8d50371:/data# redis-cli -p 6379
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> 

 

相关文章:

docker (简介、dcoker详细安装步骤、容器常用命令)一站打包- day01

一、 为什么出现 Docker是基于Go语言实现的云开源项目。 Docker的主要目标是“Build&#xff0c;Ship and Run Any App,Anywhere”&#xff0c;也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理&#xff0c;使用户的APP&#xff08;可以是一个WEB应用或数据库应…...

请简要说明 Mysql 中 MyISAM 和 InnoDB 引擎的区别

“请简要说明 Mysql 中 MyISAM 和 InnoDB 引擎的区别”。 屏幕前有多少同学在面试过程与遇到过类似问题&#xff0c; 可以在评论区留言&#xff1a;遇到过。 考察目的 对于 xxxx 技术的区别&#xff0c;在面试中是很常见的一个问题 一般情况下&#xff0c;面试官会通过这类…...

Nginx漏洞复现与分析

Nginx如何处理PHP请求 Nginx本身不支持直接解析和执行PHP代码,但可以通过与PHP解释器的集成来处理PHP请求。一种常见的方法是使用PHP-FPM(FastCGI Process Manager)作为PHP解释器。 原理图: Step 1 Step 2 +---------------------+ …...

Go 中切片(Slice)的长度与容量

切片长度与容量在 Go 中很常见。切片长度是切片中可用元素的数量&#xff0c;而切片容量是从切片中第一个元素开始计算的底层数组中的元素数量。 Go 中的开发者经常混淆切片长度和容量&#xff0c;或者对它们不够了解。理解这两个概念对于高效处理切片的核心操作&#xff0c;比…...

顶级大厂Quora如何优化数据库性能?

Quora 的流量涉及大量阅读而非写入&#xff0c;一直致力于优化读和数据量而非写。 0 数据库负载的主要部分 读取数据量写入 1 优化读取 1.1 不同类型的读需要不同优化 ① 复杂查询&#xff0c;如连接、聚合等 在查询计数已成为问题的情况下&#xff0c;它们在另一个表中构…...

Java第二十章多线程

一、线程简介 线程是操作系统能够进行运算调度的最小单位&#xff0c;它被包含在进程之中&#xff0c;是进程中的实际运作单位。一个进程可以包含多个线程&#xff0c;这些线程可以并发执行。线程拥有自己的栈和局部变量&#xff0c;但是它们共享进程的其他资源&#xff0c;如…...

家庭教育,培养娃什么最重要?

家庭教育&#xff0c;培养娃什么最重要&#xff1f; 培养能力最重要 &#xff08;我这么认为的&#xff09; 时代巨变&#xff0c;技术变革的非常快&#xff0c;所以总的来说 年轻一代接触的新东西慢慢比老一代的要多&#xff0c;年轻一代的工作会比老一代的多而且多很多&…...

Linux 进程(一)

1 操作系统 概念&#xff1a;任何计算机系统都包含一个基本的程序集合&#xff0c;称为操作系统(OS)。笼统的理解&#xff0c;操作系统包括 内核&#xff08;进程管理&#xff0c;内存管理&#xff0c;文件管理&#xff0c;驱动管理&#xff09; 其他程序&#xff08;例…...

vue中的keep-alive详解与应用场景

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue-keep-alive 目录 一、Keep-alive 是什么 二、使用场景 三、原理分析 四、案例实现 activa…...

软件设计师——程序设计语言基础(一)

&#x1f4d1;前言 本文主要是【程序设计语言基础】——程序设计语言基础的相关题目&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#…...

Apache简介与安装

先导概念: 静态网站: 最早的建站方式,每个页面都是一个独立的文件,需要手动上传或编辑。网页内容固定不变。例如,个人博客、静态企业官网等。 动态网站: 网站内容可根据不同情况动态变更,一般通过数据库进行架构。包含服务器端脚本,可以实现更丰富的功能。例如,社…...

set与map

set与map 一、序列式容器与关联式容器二、pair1、键值对2、作用3、构造函数4、make_pair&#xff08;1&#xff09;构造函数&#xff08;2&#xff09;作用 5、代码6、运行结果 三、set1、概念2、代码3、运行结果4、说明 四、multiset1、与set的关系2、代码3、运行结果 五、map…...

基于单片机智能液位水位监测控制系统

**单片机设计介绍&#xff0c; 基于单片机智能液位水位监测控制系统 文章目录 一 概要特点应用场景工作原理实现方式 系统功能实时监测控制调节报警功能数据记录与分析 总结 二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 ## 系统介绍 基于单片机…...

C#,《小白学程序》第十七课:随机数(Random)第四,移动平均值(Moving Average)的计算方法与代码

1 文本格式 /// <summary> /// 《小白学程序》第十七课&#xff1a;随机数&#xff08;Random&#xff09;第四&#xff0c;移动平均值的计算方法与代码 /// 继续学习数据统计&#xff0c;移动平均值的计算方法 /// 移动平均值就是一定步长内数值的平均值&#xff0c;用…...

行情分析——加密货币市场大盘走势(11.29)

大饼已经形成了底背离&#xff0c;即MACD往下走&#xff0c;而价格还在往上走&#xff0c;这种后续往往会大跌。继续把空单拿好&#xff0c;已经持仓的无需加仓。多次上涨却一直不能突破&#xff0c;说明多空和空军力量都很强&#xff0c;等待后续出方向。在笔者看来&#xff0…...

C++——string的字符串比较,字符存取,插入和删除和子串

一. string字符串比较 功能描述:字符串之间的比较 比较方式:字符串比较是按字符的ASCII码进行对比 返回 0 > 返回 1 < 返回 -1 函数原型: *int compare(const string &s) const; //与字符串s比较 *int compare(const char *s) const; //…...

字节10年经验之谈 —— 从0到1开发自动化测试框架!

一、序言 随着项目版本的快速迭代、APP测试有以下几个特点&#xff1a; 首先&#xff0c;功能点多且细&#xff0c;测试工作量大&#xff0c;容易遗漏&#xff1b;其次&#xff0c;代码模块常改动&#xff0c;回归测试很频繁&#xff0c;测试重复低效&#xff1b;最后&#x…...

Mysql(基本介绍+下载安装+服务器+基本使用+建库建表+navicat/mybitas工具+外键及实例)

一、Mysql基本介绍 当谈论MySQL时&#xff0c;通常指的是一个流行的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;。MySQL是由瑞典的开发者在1995年创建的&#xff0c;后来被Sun Microsystems收购&#xff0c;最终成为Oracle Corporation的一部分。以下是关于MySQL的…...

Python+requests+Jenkins接口自动化测试实例

在做功能测试的基础上&#xff0c;我平时也会用postman测试接口&#xff0c;不过postman只能测试一个一个接口&#xff0c;不能连贯起来&#xff0c;特别是我们公司的接口很多都是要用到token的&#xff0c;导致我每次测个需要登录的接口都要去获取到token&#xff0c;做了很多…...

SpringBoot3核心原理

SpringBoot3核心原理 事件和监听器 生命周期监听 场景&#xff1a;监听应用的生命周期 可以通过下面步骤自定义SpringApplicationRunListener来监听事件。 ①、编写SpringApplicationRunListener实现类 ②、在META-INF/spring.factories中配置org.springframework.boot.Sprin…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时&#xff0c;没有加载所有类库。插件运行过程中用到某个类库&#xff0c;会从CAD的安装目录找&#xff0c;找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库&#xff0c;就用插件程序加载进…...