Linux初学(十七)docker
一、docker
1.1 简介
容器技术
容器其实就是虚拟机,每个容器可以运行不同的系统【系统以Linux为主的】
为什么要使用docker?
- docker容器之间互相隔离,可以提高安全性
- 通过使用docker可以做靶场
1.2 安装配置docker
方法一:yum安装
方法二:编译安装
第一步:配置yum源
需要三个源
- BASE 基本源
- EXTRA 额外软件包源
- UPDATA 升级软件包源
[root@localhost yum.repos.d]# vim qinghua.repo
[base]
name=base
enabled=1
gpgcheck=0
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/os/x86_64/[extra]
name=extra
enable=1
gpgcheck=0
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/extras/x86_64/[update]
name=update
enabled=1
gpgcheck=0
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/updates/x86_64/[epel]
name=epel
enabled=1
gpgcheck=0
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7Server/x86_64/
第二步:检查yum源是否配置成功
yum clean all
yum repolist
第二步:安装docker的依赖环境
yum install -y yum-utils device-mapper-persistent-data lvm2
第三步:设置yum源,并更新 yum 的包索引
#在 CentOS 系统中添加阿里云的 Docker CE 仓库。执行该命令后,系统将从阿里云镜像站点下载并安装 Docker CE 软件包
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#快速更新 YUM 缓存
yum makecache fast
第四步:安装docker
yum -y install docker-ce doker-ce-cli containerd.io
第五步:启动并加入开机启动
systemctl start docker
systemctl enable docker
第六步:验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
[root@localhost yum.repos.d]# docker version
Client: Docker Engine - CommunityVersion: 26.0.0API version: 1.45Go version: go1.21.8Git commit: 2ae903eBuilt: Wed Mar 20 15:21:09 2024OS/Arch: linux/amd64Context: defaultServer: Docker Engine - CommunityEngine:Version: 26.0.0API version: 1.45 (minimum version 1.24)Go version: go1.21.8Git commit: 8b79278Built: Wed Mar 20 15:20:06 2024OS/Arch: linux/amd64Experimental: falsecontainerd:Version: 1.6.28GitCommit: ae07eda36dd25f8a1b98dfbf587313b99c0190bbrunc:Version: 1.1.12GitCommit: v1.1.12-0-g51d5e94docker-init:Version: 0.19.0GitCommit: de40ad0
1.3 管理和使用docker
1.3.1 管理服务
systemctl start docker # 启动docker服务
systemctl stop docker # 关闭docker服务
systemctl enable docker # 设置开机自启动
systemctl disable docker # 取消开机自启动docker info # 显示docker的详细信息
注意:关于防火墙
使用docker需要注意iptables防火墙
建议:
- 关闭firewalld
- 启动iptables
具体操作命令:
yum install iptables-services -ysystemctl stop firewalld systemctl disable firewalldsystemctl start iptables systemctl enableiptables
注意:关闭selinux
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
1.3.2 配置镜像加速
启动docker容器,需要用docker镜像【docker镜像就是一个操作系统】
默认docker镜像都是在国外,访问速度特别慢,所以需要配置加速
vi /etc/docker/daemon.json
{"registry-mirrors": ["https://mzxx8xy8.mirror.aliyuncs.com"]
}systemctl daemon-reload
systemctl restart docker
1.4 管理镜像
1.4.1 下载镜像
docker pull 镜像名:版本
案例:
1、下载centos7的镜像
docker pull centos:7
2、下载nginx的镜像
docker pull nginx
3、下载busyboy镜像docker pull busybox
1.4.2 查看镜像
docker images # 列出本地所有的镜像。
docker search <image_name> # 在Docker Hub中搜索指定的镜像。
1.4.3 删除操作
docker rm <container_id> # 删除一个已停止的容器。
docker rmi <image_id> # 删除一个本地的镜像(只有在没有任何容器使用该镜像时才能删除)
docker rm -f <container_id> # 强制删除,用来删除正在运行的容器
1.4.4 控制容器
docker start <container_id> # 启动一个已停止的容器。
docker stop <container_id> # 停止一个正在运行的容器。
docker restart <container_id> # 重启一个容器
1.4.5 其他常用命令
docker build # 用于构建Docker镜像。
docker login # 登录到Docker Hub或其他私有仓库。
docker logs <container_id> # 查看容器的日志输出。
1.5 容器管理
1.5.1 查看容器
docker ps # 列出当前正在运行的容器
docker ps -a # 列出所有容器,包括正在运行的和已停止的。
1.5.2 启动容器
docker run
- -t:这里是指定一个终端,如果没有终端,是无法登录这个容器的
- -i,--interactive:如果想用交互式访问,就需要这个选项
- --name string:这里指定容器的名字
- --rm:当容器停止的时候,自动删除容器对象
- -d,--detach:让当前的这个容器工作在后台
- --network string:指定容器加入到那个网络,如果不加的话,默认是一个bridge网络
- -P:暴露容器的端口,将容器中的端口和宿主机的任意端口进行端口映射
- -p 宿主机的端口:容器的端口 可以将宿主机的指定端口和容器的端口进行映射
- -v:逻辑卷
1.5.3 删除容器
docker rm -f 容器名/容器ID
1.5.4 关闭所有容器
docker rm -f `docker ps -a | awk 'NR>=2{print $1}'`
1.6 dockerfile
1.6.1 简介
dockerfile 是一个脚本文件
通过这个脚步文件可以快速做新的镜像
在dockfile中包含了各种关键字
1.6.2 dockerfile 关键字
FROM 指定基础镜像
RUN 在基础镜像中执行的命令
ADD 将宿主机的文件发送到docker容器中
- 如果ADD发送的文件是一个tar.gz的包,那么ADD会自动进行解压
COPY:将宿主机中的一个文件复制到容器中
EXPORT:将容器的端口暴露出去
ENTRYPOINT:在容器中去执行一个shell脚本
# 指定镜像
FROM centos:7# 执行命令安装编译库文件
RUN yum install -y gcc gcc-c++ make openssl-devel zlib-devel ncurses-devel iproute# 安装php环境
RUN yum install epel-release -y# 添加解压nginx包到/tmp目录下
ADD nginx-1.18.0.tar.gz /tmp# 进入目录进行编译安装
RUN cd /tmp/nginx-1.18.0 && ./configure --prefix=/usr/local/nginx && make -j 2 && make install# 删除容器内置配置文件
RUN rm -f /usr/local/nginx/conf/nginx.conf# 复制本地配置文件到容器
COPY nginx.conf /usr/local/nginx/conf# 复制启动脚本
COPY run.sh /tmp
RUN cd /tmp
RUN chmod +x /tmp/run.sh# 复制web代码到容器
COPY s.html /usr/local/nginx/html/# 声明暴露端口
EXPOSE 80# 启动容器nginx服务,指定全局命令daemon off保证服务在前台运行不会关闭
ENTRYPOINT ["/tmp/run.sh"]
案例:用centos作为基础镜像,安装上nginx
第一步:先准备一个目录
第二步:在目录中创建dockerfile文件
# 指定镜像 FROM centos:7# 执行命令安装编译库文件 RUN yum install -y gcc gcc-c++ make openssl-devel zlib-devel ncurses-devel iproute# 安装php环境 RUN yum install epel-release -y# 添加解压nginx包到/tmp目录下 ADD nginx-1.18.0.tar.gz /tmp# 进入目录进行编译安装 RUN cd /tmp/nginx-1.18.0 && ./configure --prefix=/usr/local/nginx && make -j 2 && make install# 删除容器内置配置文件 RUN rm -f /usr/local/nginx/conf/nginx.conf# 复制本地配置文件到容器 COPY nginx.conf /usr/local/nginx/conf# 复制启动脚本 COPY run.sh /tmp RUN cd /tmp RUN chmod +x /tmp/run.sh# 复制web代码到容器 COPY s.html /usr/local/nginx/html/# 声明暴露端口 EXPOSE 80# 启动容器nginx服务,指定全局命令daemon off保证服务在前台运行不会关闭 ENTRYPOINT ["/tmp/run.sh"]第三步:根据dockerfile中的内容,去逐一准备文件
- nginx-1.18.0.tar.gz
- nginx.conf
- run.sh
- s.html
- 链接:https://pan.baidu.com/s/1LIZleafIAcB7HNmkFkbG_Q?pwd=d25l
- 提取码:d25l
第四步:创建镜像文件
docker build -t 镜像名 .第五步:用自己的镜像启动容器
略
相关文章:
Linux初学(十七)docker
一、docker 1.1 简介 容器技术 容器其实就是虚拟机,每个容器可以运行不同的系统【系统以Linux为主的】 为什么要使用docker? docker容器之间互相隔离,可以提高安全性通过使用docker可以做靶场 1.2 安装配置docker 方法一:yum安装…...
Python---Numpy线性代数
1.数组和矩阵操作: 创建数组和矩阵:np.array, np.matrix 基本的数组操作:形状修改、大小调整、转置等 import numpy as np# 创建一个 2x3 的数组 A np.array([[1, 2, 3], [4, 5, 6]]) print("数组 A:\n", A)# 将数组 A 转换为矩阵…...
react+ echarts 轮播饼图
react echarts 轮播饼图 图片示例 代码 import * as echarts from echarts; import { useEffect } from react; import styles from ./styles.scss;const Student (props) > {const { dataList, title } props;// 过滤数据const visionList [{ value: 1048, name: Se…...
政安晨:【深度学习神经网络基础】(三)—— 激活函数
目录 线性激活函数 阶跃激活函数 S型激活函数 双曲正切激活函数 修正线性单元 Softmax激活函数 偏置扮演什么角色? 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: 政安晨的机器学习笔记 希望政安晨的博客能够对您有所裨…...
使用tomcat里的API - servlet 写动态网页
一、创建一个新的Maven空项目 首次创建maven项目的时候,会自动从maven网站上下载一些依赖组件(这个过程需要保证网络稳定,否则后续打包一些操作会出现一些问题) ps:校园网可能会屏蔽一些网站,可能会导致maven的依赖…...
从0到1搭建文档库——sphinx + git + read the docs
sphinx git read the docs 目录 一、sphinx 1 sphinx的安装 2 本地构建文件框架 1)创建基本框架(生成index.rst ;conf.py) conf.py默认内容 index.rst默认内容 2)生成页面(Windows系统下…...
EasyExcel 校验后导入
引入pom <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.3</version></dependency>触发校验类 import com.baomidou.mybatisplus.extension.api.R; import lombok.experimental…...
【星计划★C语言】c语言初相识:探索编程之路
🌈个人主页:聆风吟_ 🔥系列专栏:星计划★C语言、Linux实践室 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. ⛳️第一个c语言程序二. ⛳️数据类型2.1 🔔数据单位2.2 &…...
搜维尔科技:借助 ARVR 的力量缩小现代制造业的技能差距
借助ARVR的力量缩小现代制造业的技能差距 搜维尔科技:Senseglove案例-扩展机器人技术及其VR应用...
数据结构之栈和队列
1.前言 大家好久不见,这段时间由于忙去了。就没有即使维护我的博客,先给大家赔个不是。 我们还是规矩不乱,先赞后看~ 今天讲的内容是数据结构中非常重要的一个部分:栈和队列。它在今后的学习中也会再次出现(c&#…...
centos安装使用elasticsearch
1.首先可以在 Elasticsearch 官网 Download Elasticsearch | Elastic 下载安装包 2. 在指定的位置(我的是/opt/zhong/)解压安装包 tar -zxvf elasticsearch-7.12.1-linux-x86_64.tar.gz 3.启动es-这种方式启动会将日志全部打印在当前页面,一旦使用 ctrlc退出就会导…...
4.7学习总结
java学习 一.Stream流 (一.)概念: Stream将要处理的元素集合看作一种流,在流的过程中,借助Stream API对流中的元素进行操作,比如:筛选、排序、聚合等。Stream流是对集合(Collection)对象功能的增强&…...
自定义gitlog格式
git log命令非常强大而好用,在复杂系统的版本管理中扮演着重要的角色,但默认的git log命令显示出的东西实在太丑,不好好打扮一下根本没法见人,打扮好了用alias命令拍个照片,就正式出道了! 在使用git查看lo…...
Redission--分布式锁
Redission的锁的好处 Redission分布式锁的底层是setnx和lua脚本(保证原子性) 1.是可重入锁。 2.Redisson 锁支持自动续期功能,这可以帮助我们合理控制分布式锁的有效时长,当业务逻辑执行时间超出了锁的过期时间,锁会自动续期,避免…...
非关系型数据库(缓存数据库)redis的集群
目录 一.群集模式——Cluster 1.原理 2.作用 3.特点 4.工作机制 哈希槽 哈希槽的分配 哈希槽可按照集群主机数平均分配(默认分配) 根据主机的性能以及功能自定义分配 redis集群的分片 分片 如何找到给定key的分片 优势 二. 搭建Redis群集…...
MySQL:表的约束(上)
文章目录 空属性默认值列描述zerofill主键 本篇总结的是MySQL中关于表的约束部分的内容 空属性 在进行表的创建时,会有两个值,null和not null,而数据库默认的字段基本都是空,但是在实际的开发过程中要保证字段不能为空ÿ…...
树莓派5使用体验
原文地址:树莓派5使用体验 - Pleasure的博客 下面是正文内容: 前言 好久没有关于教程方面的博文了,由于最近打算入门嵌入式系统,所以就去购入了树莓派5开发板 树莓派5是2023年10月23日正式发售的,过去的时间不算太远吧…...
代码随想录算法训练营第42天| 背包问题、416. 分割等和子集
01 背包 题目描述:有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 二维dp数组01背包: 确定dp数组以及下标的含义 …...
Node.js安装及环境配置指南
Node.js安装及环境配置指南 一、Node.js的安装 安装Node.js之前,首先需要确保你的电脑已经安装了合适的编译器和开发环境。Node.js是一个开源的、跨平台的JavaScript运行环境,它使得JavaScript可以在服务器端运行。 下载Node.js安装包 访问Node.js的…...
【Java基础】面试题汇总
Java基础面试题1. JVM vs JDK vs JRE 2. 什么是字节码?采用字节码的好处是什么?3. 为什么说 Java 语言“编译与解释并存”?4. AOT 有什么优点?为什么不全部使用 AOT 呢?5. Java 和 C 的区别?6. Java 中的基本数据类型࿱…...
为AI智能体构建持久记忆层:基于Telegram的RAG系统架构与实战
1. 项目概述:为AI智能体构建持久记忆层 如果你和我一样,每天泡在十几个Telegram频道和群组里,从技术动态、项目讨论到社区闲聊,信息流就像瀑布一样冲刷而过。昨天刚讨论过的技术方案细节,今天再想找就得翻半天聊天记录…...
sklearn交叉验证提速秘籍:除了n_jobs=-1,cross_val_score里pre_dispatch和verbose怎么用?
sklearn交叉验证提速实战:参数调优与资源管理技巧 当数据集规模膨胀或模型复杂度攀升时,交叉验证可能从几分钟的等待变成数小时的煎熬。许多工程师习惯性设置n_jobs-1后便放任不管,直到内存溢出或日志淹没控制台才手忙脚乱。本文将揭示cross_…...
【稀缺首发】全球首份Midjourney 35mm风格LUT转换协议白皮书(附Adobe Lightroom联动预设+FFmpeg批量胶片渲染脚本)
更多请点击: https://intelliparadigm.com 第一章:Midjourney 35mm风格的影像美学本源与技术定义 35mm胶片摄影所承载的颗粒质感、动态范围衰减、边缘柔焦与色彩偏移,并非缺陷,而是光学物理与化学显影共同作用下的美学签名。Mid…...
BilibiliDown:如何5分钟内轻松下载B站视频到本地收藏
BilibiliDown:如何5分钟内轻松下载B站视频到本地收藏 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi…...
中文大语言模型智能路由:统一接口调度多模型,实现降本增效
1. 项目概述:一个中文大语言模型路由器的诞生最近在折腾大语言模型应用开发的朋友,估计都遇到过这个头疼的问题:手头有好几个模型,比如智谱的GLM、百度的文心、阿里的通义,还有一堆开源的,每个模型都有自己…...
从英特尔与阿里云合作看软硬件协同、数据安全与异构计算实践
1. 从一次行业盛会看巨头合作的底层逻辑2017年杭州云栖大会,对于当时关注云计算和大数据技术走向的从业者来说,是一个重要的风向标。英特尔数据中心事业部的高管Robert C. Hays与阿里巴巴集团副总裁周靖人同台,这本身就是一个强烈的信号。当时…...
Diablo Edit2:5分钟打造完美暗黑破坏神2角色的终极指南
Diablo Edit2:5分钟打造完美暗黑破坏神2角色的终极指南 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 还在为暗黑破坏神2中漫长的练级过程而烦恼?想要测试各种职业build却…...
Bun 六天完成从 Zig 到 Rust 重写,AI 重写软件大趋势下速度与质量难题待解
Zig 版 Bun 被判“死刑”2026 年 5 月 11 日,Bun 创始人 Jarred Sumner 在 X 上发推文称,“Bun v1.3.14 将于明日发布。如果我们合并 Rust 重写版本,这将是 Zig 的最后一个版本”,宣告了 Zig 版 Bun 的终结。四年前,Bu…...
零代码AI自动化测试:Midscene.js让每个人都能成为测试专家
零代码AI自动化测试:Midscene.js让每个人都能成为测试专家 【免费下载链接】midscene AI-powered, vision-driven UI automation for every platform. 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene 你是否曾经为复杂的UI自动化测试感到头疼&…...
Shannon 没有想到的事——当信息论遇上有限算力
从一个日常经验开始你有没有过这种体验——打开一本教科书,前三页还能跟上,到第四页突然看不懂了。每个字你都认识,但连在一起就变成了噪音。你翻回去重读,还是不行。于是你合上书,换了一本"入门版"…...
