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

docker学习笔记01-安装docker

1.Docker的概述

        用Go语言实现的开源应用项目(container);克服操作系统的笨重;快速部署;只隔离应用程序的运行时环境但容器之间可以共享同一个操作系统;Docker通过隔离机制,每个容器间是互相隔离,每个容器内都有一个属于自己的文件系统,互不影响

2.重要概念

  • dockerfile
  • image
  • container

实际上你可以简单的把image理解为可执行程序,container就是运行起来的进程。

那么写程序需要源代码,那么“写”image就需要dockerfile,dockerfile就是image的源代码,docker就是"编译器"。

因此我们只需要在dockerfile中指定需要哪些程序、依赖什么样的配置,之后把dockerfile交给“编译器”docker进行“编译”,也就是docker build命令,生成的可执行程序就是image,之后就可以运行这个image了,这就是docker run命令,image运行起来后就是docker container。

        基本组成:镜像 image、容器 container、仓库 repository(共有/私有;存放镜像的地方)

3.docker命令


docker version      # 显示docker的版本信息
docker info         # 显示docker的系统信息镜像命令docker images  # 查看所有本地的主机上的镜像docker search 镜像名  # 搜索镜像docker pull 镜像名[:tag]  # 下载镜像如果不写tag,默认就是latestdocker rmi -f 镜像ID                 # 删除指定的镜像docker rmi -f $(docker images -aq)  # 删除全部的镜像容器命令(有了镜像才可以创建容器,直接run就是先创建再启动)docker run [可选参数] 镜像ID参数说明-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;-d: 后台运行容器,并返回容器ID;-i: 以交互模式运行容器,通常与 -t 同时使用;-P: 随机端口映射,容器内部端口随机映射到主机的端口-p: 指定端口映射,格式为:主机(宿主)端口:容器端口-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;--name="nginx-lb": 为容器指定一个名称;-m :设置容器使用内存最大值;--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;--link=[]: 添加链接到另一个容器;--expose=[]: 开放一个端口或一组端口;--volume , -v: 绑定一个卷例如docker run -it centos /bin/bash   从容器中退回主机exit  # 直接停止容器并退出Ctrl + P + Q # 不停止容器但退出docker ps  # 列出当前正在运行的容器可选项-a # 列出当前正在运行的容器+带出历史运行的容器-n=数字 # 显示最近创建的容器-q # 只显示容器的编号删除容器docker rm 容器ID                  # 删除指定的容器,不能删除正在运行的容器docker rm -f 容器ID               # 强制删除指定的容器docker rm -f $(docker ps -aq)    # 删除全部的容器docker ps -aq | xargs docker rm  # 删除全部的容器启动和停止容器的操作docker start 容器ID     # 启动容器docker start -i 容器ID  # 启动一个已停止的容器,并进入交互界面docker restart 容器ID   # 重启容器docker stop 容器ID      # 停止当前正在运行的容器docker kill 容器ID      # 强制停止当前容器后台启动容器docker run -d 镜像名查看日志docker logs -tf --tail 数字 容器ID可选项-tf # 显示日志--tail 数字 # 显示的日志的条数
docker run -d centos /bin/sh -c "while true;do echo hello world;sleep 1;done"
docker logs -tf --tail 10 容器ID  # 显示10条日志
docker logs -tf --tail 10 容器ID  # 显示所有日志
Ctrl + C # 停止输出日志
查看容器中的进程信息docker top 容器ID
查看镜像元数据docker inspect 容器ID
进入当前正在运行的容器docker exec -it 容器ID /bin/bash    # 进入容器后开启一个新的终端,可以在里面操作(常用)  参数说明:-d :分离模式: 在后台运行-i :即使没有附加也保持STDIN 打开-t :分配一个伪终端文件是在容器内创建的,命令是在主机上执行的。在容器内时,可以exit退出,因为容器内的文件存在与否和容器是否正在运行没关系。docker cp 容器ID:容器内路径 目的主机路径
从主机上拷贝文件到容器内docker cp 源主机路径 容器ID:容器内路径
拷贝是一个手动过程,未来我们使用“-v”卷的技术,可以实现自动同步修改容器内存
docker stats 容器ID
Ctrl + C退出
docker update --memory 2G --memory-swap -1 容器ID
mac系统无法设置超过2GiB的内存,Linux系统可以设置为系统能提供的最大内存

4.centos8安装docker


把image理解为可执行程序,container就是运行起来的进程。dockerfile就是image的源代码,docker就是"编译器"--1.更新国内源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
yum clean all && yum makecache
--2.卸载旧版本的docker
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
--3.增加源
sudo yum install -y yum-utils
sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo
--4.安装docker(docker的引擎、操作docker的客户端、docker容器)
--先卸载低版本的runc,要不安装的时候会报错版本低冲突
yum -y remove runc
sudo yum install docker-ce docker-ce-cli containerd.io
--5.启动docker服务,查看是否成功
sudo systemctl start docker
sudo systemctl enable docker
----客户查看docker的版本,也确保一下安装是否成功
docker -v  
----查看有没有下载的镜像images
----因为是新安装的docker,所以是空列表
docker images
--6.配置docker应用镜像加速
--/etc/docker这个目录加入没有的话就自己创建一个
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://kru7klna.mirror.aliyuncs.com"]
}
EOF重新加载
sudo systemctl daemon-reload
sudo systemctl restart docker

相关文章:

docker学习笔记01-安装docker

1.Docker的概述 用Go语言实现的开源应用项目&#xff08;container&#xff09;&#xff1b;克服操作系统的笨重&#xff1b;快速部署&#xff1b;只隔离应用程序的运行时环境但容器之间可以共享同一个操作系统&#xff1b;Docker通过隔离机制&#xff0c;每个容器间是互相隔离…...

【《设计模式之美》】如何取舍继承与组合

文章目录 什么情况下不推荐使用继承&#xff1f;组合相比继承有哪些优势&#xff1f;使用组合、继承的时机 本文主要想了解&#xff1a; 为什么组合优于继承&#xff0c;多用组合少用继承。如何使用组合来替代继承哪些情况适用继承、组合。有哪些设计模式使用到了继承、组合。 …...

一步到位:用Python实现PC屏幕截图并自动发送邮件,实现屏幕监控

在当前的数字化世界中&#xff0c;自动化已经成为我们日常生活和工作中的关键部分。它不仅提高了效率&#xff0c;还节省了大量的时间和精力。在这篇文章中&#xff0c;我们将探讨如何使用Python来实现一个特定的自动化任务 - PC屏幕截图自动发送到指定的邮箱。 这个任务可能看…...

Spring Boot+RocketMQ 实现多实例分布式环境下的事件驱动

为什么要使用MQ&#xff1f; 在Spring Boot Event这篇文章中已经通过Guava或者SpringBoot自身的Listener实现了事件驱动&#xff0c;已经做到了对业务的解耦。为什么还要用到MQ来进行业务解耦呢&#xff1f; 首先无论是通过Guava还是Spring Boot自身提供的监听注解来实现的事…...

oracle ORA-01704: string literal too long ORACLE数据库clob类型

当oracle数据表中有clob类型字段时候&#xff0c;insert或update的sql语句中&#xff0c;超过长度就会报错 ORA-01704: string literal too long update xxx set xxx <div><h1>123</h1></div> where id 100;可以修改为 DECLAREstr varchar2(10000…...

微星主板强刷BIOS(以微星X370gaming plus 为例)

(前两天手欠&#xff0c;用U盘通过微星的M-flash升级BIOS 升级过程中老没动静就强制关机了 然后电脑就打不开了) 几种强刷主板BIOS的方式 在网上看到有三种强刷BIOS的方式分别是: 使用夹子编程器 (听说不太好夹)使用微星转接线编程器&#xff08;只能用于微星主板&#xff0…...

matlab 图像上生成指定中心,指定大小的矩形窗

用matlab实现在图像上生成指定中心,指定大小的矩形窗(奇数*奇数) function PlaneWin PlaneWindow(CentreCoorX,CentreCoorY,RadiusX,RadiusY,SizeImRow,SizeImColumn) % 在图像上生成指定中心,指定大小的矩形窗(奇数*奇数) % % Input: % CentreCoorX(1*1) % CentreCoorY(1*1)…...

❀My学习小记录之算法❀

目录 算法:) 一、定义 二、特征 三、基本要素 常用设计模式 常用实现方法 四、形式化算法 五、复杂度 时间复杂度 空间复杂度 六、非确定性多项式时间&#xff08;NP&#xff09; 七、实现 八、示例 求最大值算法 求最大公约数算法 九、分类 算法:) 一、定义 …...

Hive-high Avaliabl

hive—high Avaliable ​ hive的搭建方式有三种&#xff0c;分别是 ​ 1、Local/Embedded Metastore Database (Derby) ​ 2、Remote Metastore Database ​ 3、Remote Metastore Server ​ 一般情况下&#xff0c;我们在学习的时候直接使用hive –service metastore的方式…...

码住!8个小众宝藏的开发者学习类网站

1、simplilearn simplilearn是全球排名第一的在线学习网站&#xff0c;它的课程由世界知名大学、顶级企业和领先的行业机构通过实时在线课程设计和提供&#xff0c;其中包括顶级行业从业者、广受欢迎的培训师和全球领导者。 2、VisuAlgo VisuAlgo是一个免费的在线学习算法和数…...

Postman常见问题及解决方法

1、网络连接问题 如果Postman无法发送请求或接收响应&#xff0c;可以尝试以下操作&#xff1a; 检查网络连接是否正常&#xff0c;包括检查网络设置、代理设置等。 确认请求的URL是否正确&#xff0c;并检查是否使用了正确的HTTP方法&#xff08;例如GET、POST、PUT等&#…...

ubuntu图形化登录默认只有guest session账号解决方法

新安装的ubuntu16.x 图形化界面登录默认只有guest账号&#xff0c;只有进入guest账号之后再去手动切换root账号很麻烦&#xff0c;但是这样确实很安全。为了方便希望能够在登录图形化界面的时候以root身份/或者自定义其他身份登录。做一下简单的记录。 使用终端命令行编辑文件…...

全国计算机等级考试| 二级Python | 真题及解析(1)

一、选择题 1. 按照“后进先出”原则组织数据的数据结构是____ A栈 B双向链表 C二叉树 D队列 正确答案: A 2. 以下选项的叙述中,正确的是 A在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况 B在循环队列中,只需要队尾指针就能反映队列中元素的动态变…...

Java开发框架和中间件面试题(9)

目录 102.你了解秒杀吗&#xff1f;怎么设计&#xff1f; 103.什么是缓存穿透&#xff1f;怎么解决&#xff1f; 102.你了解秒杀吗&#xff1f;怎么设计&#xff1f; 1.设计难点&#xff1a;并发量大&#xff0c;应用&#xff0c;数据库都承受不了。另外难控制超卖。 2.设计…...

【ARMv8M Cortex-M33 系列 2 -- Cortex-M33 JLink 连接 及 JFlash 烧写介绍】

文章目录 Jlink 工具JLink 命令行示例JFlash 烧写问题Jlink 工具 J-Link 是 SEGGER 提供的一款流行的 JTAG 调试器,它支持多个平台和处理器。JLink.exe 是 J-Link 调试器的命令行接口,它允许用户通过命令行执行一系列操作,例如编程、擦除、调试等。 工具链接: https://ww…...

react pwa应用示例

创建一个基于React的PWA应用&#xff0c;你可以使用create-react-app&#xff0c;它自带PWA支持&#xff0c;但默认是关闭的。以下是创建React PWA应用的步骤&#xff1a; 安装create-react-app 如果你还没有安装&#xff0c;你可以通过npm来安装&#xff1a; npm install -…...

python如何通过日志分析加入黑名单

python通过日志分析加入黑名单 监控nginx日志&#xff0c;若有人攻击&#xff0c;则加入黑名单&#xff0c;操作步骤如下&#xff1a; 1.读取日志文件 2.分隔文件&#xff0c;取出ip 3.将取出的ip放入list&#xff0c;然后判读ip的次数 4.若超过设定的次数&#xff0c;则加…...

RabbitMq知识概述

本文来说下RabbitMq相关的知识与概念 文章目录 概述AMQP协议Exchange 消息如何保证100&#xff05;投递什么是生产端的可靠性投递可靠性投递保障方案 消息幂等性高并发的情况下如何避免消息重复消费confirm 确认消息、Return返回消息如何实现confirm确认消息return消息机制 消费…...

专业级A链接测试特有

A链接普通 A链接添加链接描述带有blank...

Spring Boot 入参校验及全局异常处理

版本依赖 JDK 17 Spring Boot 3.2.0 源码地址&#xff1a;Gitee Spring Boot validation spring-boot-starter-validation是基于hibernate-validator的实现&#xff0c;在Spring Boot项目中直接导入spring-boot-starter-validation即可。 Valid 和 Validated 的区别 适用范围…...

掌握BepInEx:Unity游戏扩展全家桶的零门槛实践指南

掌握BepInEx&#xff1a;Unity游戏扩展全家桶的零门槛实践指南 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx &#x1f50d; 游戏模组管理的行业痛点与解决方案 在Unity游戏生态…...

实战笔记:基于STM32F4的LWIP+FreeRTOS系统移植与网络任务创建

1. 为什么需要LWIPFreeRTOS组合 在嵌入式开发中&#xff0c;网络功能越来越成为标配需求。STM32F4系列凭借其出色的性能和丰富的外设资源&#xff0c;成为许多物联网设备的首选。但要让这个硬件平台真正发挥网络能力&#xff0c;我们需要解决两个核心问题&#xff1a;实时任务调…...

终极指南:LitmusChaos从混沌测试到智能韧性工程的完整演进路径

终极指南&#xff1a;LitmusChaos从混沌测试到智能韧性工程的完整演进路径 【免费下载链接】litmus 一个用于Kubernetes的云原生Chaos Engineering框架&#xff0c;用于测试系统的健壮性和弹性。 - 功能&#xff1a;Chaos Engineering&#xff1b;系统测试&#xff1b;Kubernet…...

从逆向工程到实战:深度解析钉钉本地数据取证与加密对抗

1. 钉钉本地数据存储结构解析 第一次拆解钉钉的数据库文件时&#xff0c;我对着那堆加密的.sqlite文件发了半小时呆。作为国内用户量最大的企业通讯工具&#xff0c;钉钉在数据保护上确实下了狠功夫。Android和iOS两个平台的数据存储方式既有共性又存在微妙差异&#xff0c;这正…...

Mastering Text Tokenization for Large Language Models: From Words to Embeddings

1. 文本标记化的核心概念 你可能已经听说过ChatGPT这类大语言模型的神奇能力&#xff0c;但你知道它们是如何"读懂"人类文字的吗&#xff1f;秘密就藏在文本标记化&#xff08;Tokenization&#xff09;这个关键步骤里。想象一下&#xff0c;我们要教一个完全不懂中…...

VSCode安装与应用

vscode官网&#xff1a;https://code.visualstudio.com/Download 点击下一步 注意&#xff1a;这里将创建桌面快捷和下面的1、2勾选&#xff0c;3取消掉&#xff08;以便后续VSCode能右键快捷打开相关文件&#xff0c;3若不取消会将改变文件默认图标为VSCode&#xff0c;并且打…...

Transformers音频分类终极指南:3步实现智能环境音识别

Transformers音频分类终极指南&#xff1a;3步实现智能环境音识别 【免费下载链接】transformers huggingface/transformers: 是一个基于 Python 的自然语言处理库&#xff0c;它使用了 PostgreSQL 数据库存储数据。适合用于自然语言处理任务的开发和实现&#xff0c;特别是对于…...

别再手动调参了!用Matlab+NRBO-BP+NSGAII搞定工艺优化,自动生成最优参数组合Excel

工艺优化新范式&#xff1a;基于NRBO-BP与NSGAII的智能参数寻优系统 在化工、材料、制造等领域的工艺优化过程中&#xff0c;工程师和研究人员常常面临一个共同的挑战&#xff1a;如何在有限的实验资源和时间约束下&#xff0c;从海量的参数组合中找到最优解。传统的手动调参方…...

Python AI部署效能革命(Cuvil编译器内核逆向工程实录)

第一章&#xff1a;Python AI部署效能革命的底层驱动力Python 已成为 AI 模型开发的事实标准&#xff0c;但其在生产环境中的部署效能长期受限于解释执行、全局解释器锁&#xff08;GIL&#xff09;及内存管理机制。近年来&#xff0c;一场静默却深刻的效能革命正在重塑 Python…...

别再手动配环境了!用COLMAP已知位姿重建,从数据集到.ply点云保姆级避坑指南

别再手动配环境了&#xff01;用COLMAP已知位姿重建&#xff0c;从数据集到.ply点云保姆级避坑指南 三维重建技术正逐渐成为计算机视觉领域的标配工具&#xff0c;而COLMAP作为开源重建方案中的佼佼者&#xff0c;其强大功能背后却隐藏着诸多配置陷阱。本文专为那些已经拥有带位…...