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> 

 

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

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

相关文章

阿里云Arthas使用——通过watch命令查看类的返回值 捞数据出来

前言 Arthas 是一款线上监控诊断产品&#xff0c;通过全局视角实时查看应用 load、内存、gc、线程的状态信息&#xff0c;并能在不修改应用代码的情况下&#xff0c;对业务问题进行诊断&#xff0c;包括查看方法调用的出入参、异常&#xff0c;监测方法执行耗时&#xff0c;类…

计算机体系结构----指令系统(二)

本文仅供学习&#xff0c;不作任何商业用途&#xff0c;严禁转载。绝大部分资料来自----计算机系统结构教程(第二版)张晨曦等 计算机体系结构----指令系统&#xff08;二&#xff09; 2.1 指令系统结构的分类2.2 寻址方式2.3 MIPS 指令系统结构2.3.1 MIPS的寄存器2.3.2 MIPS的…

PLC:200smart(13-16章)

PLC&#xff1a;200smart 第十三章2、带参子程序3、将子程序设置成库文件 第十三章 项目ValueValue主程序MAIN一个项目只能有一个&#xff0c;循环扫描子程序SBR_0项目中最多有128个&#xff0c;只有在调用时 才执行&#xff08;子程序可以嵌套其他子程序&#xff0c;最多八层…

SSD-FTL算法学习总结1

SSD核心技术&#xff1a;FTL算法。 1、什么是FTL? FTL是Flash Translation Layer&#xff08;闪存转换层&#xff09;&#xff0c;完成主机&#xff08;HOST&#xff09;逻辑地址空间到闪存Flash物理地址空间的翻译,或者说映射&#xff08;Mapping&#xff09;。 FTL算法分成…

Linux常用命令----mkdir命令

文章目录 1. 基础概念2. 参数含义3. 常见用法4. 实例演示5. 结论 在Linux操作系统中&#xff0c;mkdir 命令是用来创建目录的基础命令。这个命令简单但极其强大&#xff0c;是每个Linux用户都应当熟悉的工具之一。以下是对mkdir命令的详细介绍&#xff0c;包括其参数含义、常见…

各种与梅洛相关的葡萄酒知识

梅洛葡萄是可以通过其松散的大浆果串来识别的&#xff0c;与赤霞珠葡萄相比&#xff0c;这种颜色的蓝色/黑色调更少&#xff0c;皮肤更薄&#xff0c;单宁更少。与赤霞珠相比&#xff0c;梅洛葡萄的糖含量往往更高&#xff0c;苹果酸含量较低。梅洛在寒冷的土壤中茁壮成长&…

App测试、H5测试及小程序测试

文章目录 前言一、App常见测试要点1.App功能测试1.1.App安装与卸载1.2.App升级测试1.3.App登陆测试1.4.离线测试1.5.触屏及操作测试1.6.App消息推送测试 2.AppUI界面测试3.App兼容性测试-适配/手机适配4.App中断测试5.App网络测试6.App安全测试7.App性能测试8.App测试与web测试…

GPU逻辑管线

文章目录 前言一、渲染流水线二、英伟达显卡简化概念图&#xff08;GPU&#xff09;1、我们的Shader会调用英伟达提供的 API2、调用API后&#xff0c;把Shader用到的指令存储在Pushbuffer中3、然后图元分配器&#xff0c;会把 模型数据 和 Shader 指令传入GPU中4、这个SM是每个…

修复电脑中缺失的VCRUNTIME140.dll文件的5个有效方法

vcruntime140.dll丢失5个修复方法与vcruntime140.dll是什么以及丢失对电脑的影响 引言&#xff1a; 在日常使用电脑的过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中之一就是“vcruntime140.dll丢失”。那么&#xff0c;什么是vcruntime140.dll&#xff1f;它…

如何搭建外网可访问的Serv-U FTP服务器,轻松远程共享文件!

目录 1. 前言 2. 本地FTP搭建 2.1 Serv-U下载和安装 2.2 Serv-U共享网页测试 2.3 Cpolar下载和安装 3. 本地FTP发布 3.1 Cpolar云端设置 3.2 Cpolar本地设置 4. 公网访问测试 5. 总结 1. 前言 科技日益发展的今天&#xff0c;移动电子设备似乎成了我们生活的主角&am…

hutool的bug之 DateUtil.endOfDay(DateUtil.date())

hutool 工具类DateUtil 使用时谨慎 DateUtil.endOfDay 得到的时间保存到数据时会增加一秒 首先比较下时间的long值&#xff1a; 这样就很明显的看出来&#xff0c;hutool工具类的date是毫秒位多了.999,保存到mysql 的时候&#xff0c;MySQL数据库对于毫秒大于500的数据进行…

力扣 --- 删除有序数组中的重复项 II

题目描述&#xff1a; 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的…

甘草书店记:2023年10月24日 星期二 「在完美和高效之间寻求平衡」

书店装修设计图出了第一版&#xff0c;不能够完全满意也在不在预料之外。 中国人的哲学是中庸的哲学。在高效中去追逐完美&#xff0c;在追逐完美中提升效率。 分享余华先生在节目中的一段话&#xff1a; 一种阅读和一本书的相遇有时候也是一种缘分。但也可能就是所有人都说…

指数退避和抖动

目录 引入 OCC 添加退避机制 添加抖动机制 小结 引入 OCC 乐观并发控制&#xff08;Optimistic Concurrency Control&#xff0c;OCC&#xff09;是一种既能保证多个写入者安全地修改单个对象又能避免丢失写入的古老方法OCC具有三个优点&#xff1a;只要底层存储可用&#…

leetCode 131.分割回文串 + 回溯算法 + 图解 + 笔记

131. 分割回文串 - 力扣&#xff08;LeetCode&#xff09; 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。回文串 是正着读和反着读都一样的字符串 示例 1&#xff1a; 输入&#xff1a;s "aa…

从原理和公式出发:python实现One_Way_ANOVA

文章目录 目的&#xff1a;python实现one way ANOVA 单因素方差分析1. 代码流程2. python代码实现0 主要的函数1 加载数据2 查看数据统计结果3 数据处理及可视化4 方差分析4.1 模型拟合4.2 单因素方差分析 5 Post Hoc t-test组间比较分析6 根据定义自行分解计算对比调用函数的结…

pandas-profiling / ydata-profiling介绍与使用教程

文章目录 pandas-profilingydata-profilingydata-profiling实际应用iris鸢尾花数据集分析 pandas-profiling pandas_profiling 官网&#xff08;https://pypi.org/project/pandas-profiling/&#xff09;大概在23年4月前发出如下公告&#xff1a; Deprecated pandas-profilin…

MediaPipe - 小记

文章目录 关于 MediaPipe 关于 MediaPipe Cross-platform, customizable ML solutions for live and streaming media. MediaPipe &#xff1a; 设备端机器学习框架 MediaPipe Studio : 提供标准化 task&#xff0c;你可以下载预训练模型来使用 MediaPipe Model Maker : 定制…

python中的字符串

字符串 字符串是编程语言中的一种基本数据类型&#xff0c;用于表示一串字符序列。在Python中&#xff0c;字符串是不可变的&#xff0c;也就是说一旦字符串被创建&#xff0c;就无法修改其中的字符。 Python中的字符串可以用单引号或双引号括起来&#xff0c;例如&#xff1…

构建SQL Server链接服务器:实现跨服务器数据访问及整合

点击上方蓝字关注我 在SQL Server数据库管理中&#xff0c;链接服务器是一项强大的功能&#xff0c;允许在一个SQL Server实例中访问另一个SQL Server实例的数据。这种功能为数据库管理员提供了灵活性&#xff0c;使其能够跨不同服务器进行数据交互&#xff0c;开辟了更多的应用…