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 镜像名 .

第五步:用自己的镜像启动容器

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

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

相关文章

深入剖析主机安全中的零信任机制及其实施原理

引言 在数字化转型加速与云端服务普及的大背景下&#xff0c;传统依赖边界的网络安全模式逐渐显露出其局限性。面对愈发复杂多变的威胁环境&#xff0c;零信任安全架构作为新一代的安全范式应运而生&#xff0c;尤其是在主机层面的安全实践中&#xff0c;零信任机制正扮演着至…

每日OJ题_优先级队列_堆③_力扣692. 前K个高频单词

目录 力扣692. 前K个高频单词 解析代码 力扣692. 前K个高频单词 692. 前K个高频单词 难度 中等 给定一个单词列表 words 和一个整数 k &#xff0c;返回前 k 个出现次数最多的单词。 返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率&#xff0c…

usb_camera传输视频流编码的问题记录!

前言&#xff1a; 大家好&#xff0c;今天给大家分享的内容是&#xff0c;一个vip课程付费的朋友&#xff0c;在学习过程中遇到了一个usb采集的视频数据流&#xff0c;经过ffmpeg编码&#xff0c;出现了问题&#xff1a; 问题分析&#xff1a; 其实这个问题不难&#xff0c;关键…

centos7.2系统部署ZooKeeper集群和Kafka集群(集群应用系统商城前置环境)

本次实验将使用centos7.2系统部署部署ZooKeeper集群因为Kafka依赖于ZooKeeper&#xff0c;所以我们一并进行部署。 实验所示的资源软件已上传至百度网盘&#xff0c;需要自取。 链接&#xff1a;https://pan.baidu.com/s/1a-7_iAIX0DBAMkF9bhiTcA?pwd2333 提取码&#xff1…

泛型(java学习)

目录 1.泛型介绍&#xff1a; 2.泛型的好处&#xff1a; 3.泛型的语法 4.泛型的细节 5.自定义泛型 6.自定义泛型接口 8.泛型的继承和通配符 1.泛型介绍&#xff1a; 1&#xff09;泛型又称参数化类型&#xff0c;解决数据类型的安全性问题。 2&#xff09;在类声明或实例…

[尚硅谷 flink] 基于时间的合流——双流联结(Join)

文章目录 8.1 窗口联结&#xff08;Window Join&#xff09;8.2 **间隔联结&#xff08;Interval Join&#xff09;** 8.1 窗口联结&#xff08;Window Join&#xff09; Flink为基于一段时间的双流合并专门提供了一个窗口联结算子&#xff0c;可以定义时间窗口&#xff0c;并…

实现通讯录(顺序表版本)

一、功能要求 &#xff08;1&#xff09;⾄少能够存储100个⼈的通讯信息 &#xff08;2&#xff09;能够保存⽤⼾信息&#xff1a;名字、性别、年龄、电话、地址等 &#xff08;3&#xff09;增加联系⼈信息 &#xff08;4&#xff09;删除指定联系⼈ &#xff08;5&#…

X年后,ChatGPT会替代底层程序员吗?

能不能替代&#xff0c;真的很难说&#xff0c;因为机器换掉人&#xff0c;这其实是一个伦理问题。 其实说白了&#xff0c;任何行业在未来都会被AI或多或少的冲击到&#xff0c;因为ChatGPT做为一个可以持续提升智能的AI&#xff0c;在某些方面的智能程度超过人类并不是什么难…

数据结构-基本概念

1.什么是数据结构&#xff1f; 数据 数据&#xff0c;是对客观事物的符号表示&#xff0c;在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 结构 &#xff08;1&#xff09;线性结构&#xff08;比如图书目录文件&#xff0c;一对一的关系&#x…

Unity Meta Quest MR 开发(五):空间锚点

文章目录 &#x1f4d5;教程说明 此教程相关的详细教案&#xff0c;文档&#xff0c;思维导图和工程文件会放入 Spatial XR 社区。这是一个高质量 XR 开发者社区&#xff0c;博主目前在内担任 XR 开发的讲师。该社区提供专人答疑、完整进阶教程、从零到一项目孵化保姆服务&…

文件及相关文件函数的使用

目录 前言 文件的概述 文件类型 如何用C语言来操作文件呢&#xff1f; 文件缓冲区 文件的打开与关闭 文件的打开——fopen&#xff08;&#xff09;函数 文件的关闭——fclose&#xff08;&#xff09;函数 文件结束检测——feof()函数 文件的顺序读写 文件字符输出函…

用虚拟机安装gnu radio

首先在虚拟机上安装的ubuntu18.04 按照Pluto SDR环境搭建libiio/GNU Radio/gr-iio&#xff08;Ubuntu&#xff09;-CSDN博客 依次安装libiio、libad9361-iio、gnuradio的3.8版本&#xff0c;以及对应的gr-iio 前面的依赖关系很重要 sudo apt-get install build-essential l…

kubernetes集群添加到jumpserver堡垒机里管理

第一步、在kubernetes集群中获取一个永久的token。 jumpserver堡垒机用api的来管理kubernetes&#xff0c;所以需要kubernetes的token&#xff0c;这个token还需要是一个永久的token&#xff0c;版本变更&#xff1a;Kubernetes 1.24基于安全方面的考虑&#xff08;特性门控Le…

JVM字节码与类的加载——class文件结构

文章目录 1、概述1.1、class文件的跨平台性1.2、编译器分类1.3、透过字节码指令看代码细节 2、虚拟机的基石&#xff1a;class文件2.1、字节码指令2.2、解读字节码方式 3、class文件结构3.1、魔数&#xff1a;class文件的标识3.2、class文件版本号3.3、常量池&#xff1a;存放所…

在 K8s 上跑腾讯云 Serverless 函数,打破传统方式造就新变革

目录 目录 前言 Serverless 和 K8s 的优势 1、关于Serverless 函数的特点 2、K8s 的特点 腾讯云 Serverless 函数在 K8s 上的应用对企业服务的影响 1、弹性扩展和高可用性 2、成本优化和资源利用 3、简化部署和管理 拓展&#xff1a;腾讯云云函数 SCF on K8s 番外篇…

HarmonyOS实战开发-如何实现蓝牙设备发现、配对、取消配对功能。

介绍 蓝牙技术是一种无线数据和语音通信开放的全球规范&#xff0c;它是基于低成本的近距离无线连接&#xff0c;为固定和移动设备建立通信环境的一种特殊的近距离无线技术连接。本示例通过ohos.bluetooth 接口实现蓝牙设备发现、配对、取消配对功能。实现效果如下&#xff1a…

PIL图像,NumPy ndarray,torch.Tensor。Tensor是什么

目录 PIL图像、NumPy ndarray和torch.Tensor PIL图像 NumPy ndarray torch.Tensor Tensor是什么

计算机网络 实验指导 实验9

实验9 三层交换机综合实验 1.实验拓扑图 名称相连的接口IP地址网关PC1F0/3172.1.1.2/28172.1.1.1/28PC2F0/4172.1.1.18/28172.1.1.17/28PC3F0/5172.1.1.34/28172.1.1.33/28PC4F0/3172.1.1.3/28172.1.1.1/28PC5F0/4172.1.1.19/28172.1.1.17/28PC6F0/5172.1.1.35/28172.1.1.33/2…

算法思想 - 贪心算法

贪心算法是一种常用的求解最优化问题的算法思想。它通过每一步的局部最优选择&#xff0c;希望最终达到全局最优解。 贪心算法的核心思想是在求解过程中做出当前情况下的最优选择&#xff0c;并相信这个选择对全局来说也是最优的。它不考虑子问题的解决过程&#xff0c;只关注…

ROS 2边学边练(16)-- 自定义msg和srv文件

前言 在前面的文章我们在学习主题&#xff08;topic&#xff09;和服务&#xff08;service&#xff09;通信方法时&#xff0c;使用的一直是ROS 2提供好的消息结构文件&#xff08;xxx.msg&#xff09;和服务结构文件&#xff08;xxx.srv&#xff09;&#xff0c;稀里糊涂的就…