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

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 简介 容器技术 容器其实就是虚拟机&#xff0c;每个容器可以运行不同的系统【系统以Linux为主的】 为什么要使用docker&#xff1f; docker容器之间互相隔离&#xff0c;可以提高安全性通过使用docker可以做靶场 1.2 安装配置docker 方法一&#xff1a;yum安装…...

Python---Numpy线性代数

1.数组和矩阵操作&#xff1a; 创建数组和矩阵&#xff1a;np.array, np.matrix 基本的数组操作&#xff1a;形状修改、大小调整、转置等 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激活函数 偏置扮演什么角色&#xff1f; 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 政安晨的机器学习笔记 希望政安晨的博客能够对您有所裨…...

使用tomcat里的API - servlet 写动态网页

一、创建一个新的Maven空项目 首次创建maven项目的时候&#xff0c;会自动从maven网站上下载一些依赖组件&#xff08;这个过程需要保证网络稳定&#xff0c;否则后续打包一些操作会出现一些问题&#xff09; ps:校园网可能会屏蔽一些网站&#xff0c;可能会导致maven的依赖…...

从0到1搭建文档库——sphinx + git + read the docs

sphinx git read the docs 目录 一、sphinx 1 sphinx的安装 2 本地构建文件框架 1&#xff09;创建基本框架&#xff08;生成index.rst &#xff1b;conf.py&#xff09; conf.py默认内容 index.rst默认内容 2&#xff09;生成页面&#xff08;Windows系统下&#xf…...

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语言初相识:探索编程之路

&#x1f308;个人主页&#xff1a;聆风吟_ &#x1f525;系列专栏&#xff1a;星计划★C语言、Linux实践室 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. ⛳️第一个c语言程序二. ⛳️数据类型2.1 &#x1f514;数据单位2.2 &…...

搜维尔科技:借助 ARVR 的力量缩小现代制造业的技能差距

借助ARVR的力量缩小现代制造业的技能差距 搜维尔科技&#xff1a;Senseglove案例-扩展机器人技术及其VR应用...

数据结构之栈和队列

1.前言 大家好久不见&#xff0c;这段时间由于忙去了。就没有即使维护我的博客&#xff0c;先给大家赔个不是。 我们还是规矩不乱&#xff0c;先赞后看~ 今天讲的内容是数据结构中非常重要的一个部分&#xff1a;栈和队列。它在今后的学习中也会再次出现&#xff08;c&#…...

centos安装使用elasticsearch

1.首先可以在 Elasticsearch 官网 Download Elasticsearch | Elastic 下载安装包 2. 在指定的位置(我的是/opt/zhong/)解压安装包 tar -zxvf elasticsearch-7.12.1-linux-x86_64.tar.gz 3.启动es-这种方式启动会将日志全部打印在当前页面&#xff0c;一旦使用 ctrlc退出就会导…...

4.7学习总结

java学习 一.Stream流 (一.)概念: Stream将要处理的元素集合看作一种流&#xff0c;在流的过程中&#xff0c;借助Stream API对流中的元素进行操作&#xff0c;比如&#xff1a;筛选、排序、聚合等。Stream流是对集合&#xff08;Collection&#xff09;对象功能的增强&…...

自定义gitlog格式

git log命令非常强大而好用&#xff0c;在复杂系统的版本管理中扮演着重要的角色&#xff0c;但默认的git log命令显示出的东西实在太丑&#xff0c;不好好打扮一下根本没法见人&#xff0c;打扮好了用alias命令拍个照片&#xff0c;就正式出道了&#xff01; 在使用git查看lo…...

Redission--分布式锁

Redission的锁的好处 Redission分布式锁的底层是setnx和lua脚本(保证原子性) 1.是可重入锁。 2.Redisson 锁支持自动续期功能&#xff0c;这可以帮助我们合理控制分布式锁的有效时长&#xff0c;当业务逻辑执行时间超出了锁的过期时间&#xff0c;锁会自动续期&#xff0c;避免…...

非关系型数据库(缓存数据库)redis的集群

目录 一.群集模式——Cluster 1.原理 2.作用 3.特点 4.工作机制 哈希槽 哈希槽的分配 哈希槽可按照集群主机数平均分配&#xff08;默认分配&#xff09; 根据主机的性能以及功能自定义分配 redis集群的分片 分片 如何找到给定key的分片 优势 二. 搭建Redis群集…...

MySQL:表的约束(上)

文章目录 空属性默认值列描述zerofill主键 本篇总结的是MySQL中关于表的约束部分的内容 空属性 在进行表的创建时&#xff0c;会有两个值&#xff0c;null和not null&#xff0c;而数据库默认的字段基本都是空&#xff0c;但是在实际的开发过程中要保证字段不能为空&#xff…...

树莓派5使用体验

原文地址&#xff1a;树莓派5使用体验 - Pleasure的博客 下面是正文内容&#xff1a; 前言 好久没有关于教程方面的博文了&#xff0c;由于最近打算入门嵌入式系统&#xff0c;所以就去购入了树莓派5开发板 树莓派5是2023年10月23日正式发售的&#xff0c;过去的时间不算太远吧…...

代码随想录算法训练营第42天| 背包问题、416. 分割等和子集

01 背包 题目描述&#xff1a;有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 二维dp数组01背包&#xff1a; 确定dp数组以及下标的含义 …...

Node.js安装及环境配置指南

Node.js安装及环境配置指南 一、Node.js的安装 安装Node.js之前&#xff0c;首先需要确保你的电脑已经安装了合适的编译器和开发环境。Node.js是一个开源的、跨平台的JavaScript运行环境&#xff0c;它使得JavaScript可以在服务器端运行。 下载Node.js安装包 访问Node.js的…...

【Java基础】面试题汇总

Java基础面试题1. JVM vs JDK vs JRE 2. 什么是字节码?采用字节码的好处是什么?3. 为什么说 Java 语言“编译与解释并存”&#xff1f;4. AOT 有什么优点&#xff1f;为什么不全部使用 AOT 呢&#xff1f;5. Java 和 C 的区别&#xff1f;6. Java 中的基本数据类型&#xff1…...

数据库事务的超级详细讲解,包括事务特性、事务隔离级别、MVCC(多版本并发控制)

数据库事务&#xff1a; 主要有事务特性&#xff0c;事务的隔离级别&#xff0c;MVCC。 事务特性&#xff1a; 事务&#xff08;Transaction&#xff09;是指作为单个逻辑工作单元执行的一系列操作&#xff0c;这些操作要么全部成功执行&#xff0c;要么全部不执行&#xff…...

鸿蒙Lottie动画-实现控制动画的播放、暂停、倍速播放、播放顺序

介绍 本示例展示了lottie对动画的操作功能。引入Lottie模块&#xff0c;实现控制动画的播放、暂停、倍速播放、播放顺序、播放到指定帧停止或从指定帧开始播放、侦听事件等功能&#xff0c;动画资源路径必须是json格式。 效果预览 使用说明&#xff1a; 进入页面默认开始201…...

C++面试100问与自动驾驶100问

C的学习和面试其实是非常的不友好的&#xff0c;首先C的学习内容非常的多&#xff0c;其次C的面试不单单面试C的知识点&#xff0c;还有它的“七大姑八大姨”&#xff08;计算机网络、数据结构、算法、计算机组成原理、操作系统、编译、xxx的底层实现 and so on&#xff09;。 …...

加速 Redis 操作:掌握管道技术提升性能与效率

Redis 管道技术是一种用于优化 Redis 命令执行效率的机制。在传统的 Redis 操作中&#xff0c;每次向 Redis 服务器发送一个命令&#xff0c;都需要等待命令执行完成并返回结果&#xff0c;这样会导致频繁的网络通信和服务器端的命令执行开销&#xff0c;降低系统的性能和吞吐量…...

深入浅出 -- 系统架构之分布式系统底层的一致性

在分布式领域里&#xff0c;一致性成为了炙手可热的名词&#xff0c;缓存、数据库、消息中间件、文件系统、业务系统……&#xff0c;各类分布式场景中都有它的身影&#xff0c;因此&#xff0c;想要更好的理解分布式系统&#xff0c;必须要理解“一致性”这个概念。 其实关于…...

idea Springboot 电影推荐系统LayUI框架开发协同过滤算法web结构java编程计算机网页

一、源码特点 springboot 电影推荐系统是一套完善的完整信息系统&#xff0c;结合mvc框架和LayUI框架完成本系统springboot dao bean 采用协同过滤算法进行推荐 &#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&…...

xss【2】

1.xss钓鱼 钓鱼攻击利用页面&#xff0c;fish.php黑客钓鱼获取到账号密码存储的位置 xss进行键盘记录 2.xss常规防范 3.xss验证payload XSS&#xff08;跨站攻击&#xff09;_details/open/ontoggle-CSDN博客...

时序分解 | Matlab实现GSWOA-VMD改进鲸鱼优化算法优化变分模态分解时间序列信号分解

时序分解 | Matlab实现GWO-CEEMDAN基于灰狼算法优化CEEMDAN时间序列信号分解 目录 时序分解 | Matlab实现GWO-CEEMDAN基于灰狼算法优化CEEMDAN时间序列信号分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现GSWOA-VMD改进鲸鱼优化算法优化变分模态分解时间序…...

css- 4

1.浮动 1. 浮动最初用于实现文字环绕效果 2. 现在&#xff0c;浮动是主流的布局方式之一 1.1元素浮动之后的特点 元素浮动之后&#xff0c;称为浮动元素&#xff0c;具有如下特点&#xff1a; 1. 浮动元素脱离文档流 2. 多个浮动的元素会水平排列&#xff0c;一行放不下自动换…...

22.括号生成

题目描述 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”] 示例 2&#xff1a; 输入…...

可以自己做网站这么做/网络推广十大平台

Top NSD CLUSTER DAY01 案例1&#xff1a;配置iSCSI服务案例2&#xff1a;编写udev规则案例3&#xff1a;配置并访问NFS共享案例4&#xff1a;部署Multipath多路径环境1 案例1&#xff1a;配置iSCSI服务 1.1 问题 本案例要求先搭建好一台iSCSI服务器&#xff0c;并将整个磁盘共…...

wordpress 远程图片/如何搭建企业网站

&#xff08;一&#xff09;什么是SAS SAS&#xff08;Serial Attached SCSI&#xff09;即串行SCSI技术&#xff0c;是一种磁盘连接技术&#xff0c;它综合了并行SCSI和串行连接技术&#xff08;如FC、SSA、IEEE1394等&#xff09;的优势&#xff0c;以串行通讯协议为协议基础…...

app公司开发/浙江seo外包费用

我有3个表&#xff1a;tco_articles,tco_module_eostext和tco_articles_modules.我的tco_articles有唯一的id键.每篇文章一篇.我的tco_module_eostext具有属于每篇文章的唯一instance_id.我的tco_articles_modules包含所有article_ids,但是其他表中使用的instance_ids的数量是9…...

做网站的公司广州/学校网站建设

android切割画布的历程不算很难&#xff0c;可是理解起来也比较麻烦&#xff0c;这里写一下我的理解 但是不一定正确&#xff1a; canvas.clipRect(30, 30, 70, 70, Region.Op.XOR);最后一个参数有多个选择分别是&#xff1a;//DIFFERENCE是第一次不同于第二次的部分显示出来 …...

如何在youtube找人做视频网站/优化落实疫情防控

电脑开机自动打开文件夹&#xff0c;这是怎么回事呢&#xff1f;自带的还原文件夹功能功能被打开而导致的&#xff0c;其实如果我们不喜欢的话是可以将其删除掉的&#xff0c;今天小编就给大家介绍操作的流程。我们在平时电脑的时候&#xff0c;经常都会遇到各种问题&#xff0…...

个人申请小程序收费吗/商丘seo外包

12345678#include <stdio.h>#define SOR(x) (x*x)main(){int a,b3; aSOR(b2); printf("%d",a); }出处&#xff1a;http://www.cnblogs.com/zhangdongsheng/ 作者&#xff1a;张东升...