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

《Docker快速入门:从0到1构建你的第一个容器!》

《Docker快速入门:从0到1构建你的第一个容器!》

前言

欢迎来到Docker的世界,一个让应用程序打包、部署和运行更加容易的神奇平台。Docker改变了我们对于应用开发和分发的看法,它通过容器技术让软件的携带和运行变得前所未有的轻量级和便捷。无论您是开发者、系统管理员还是IT专业人士,掌握Docker都将为您的技能集增添宝贵的一笔,并打开通往现代云计算和微服务架构的大门。

本文章将略去复杂理论,直接教学实操。我们会逐步指导您,即使您是Docker和容器技术的新手,也能在一分钟内搭建首个Docker容器。准备好笔和纸,让我们开始高效学习Docker的旅程!

实战

1.环境准备

#永久关闭防火墙
[root@qm ~]# systemctl disable firewalld 
#永久关闭selinux
[root@qm ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/'  /etc/sysconfig/selinux
[root@qm ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/'  /etc/selinux/config 
#开启路由转发(ipv4/ipv6)
[root@qm ~]# vim  /etc/sysctl.conf
添加以下内容
net.ipv4.ip_forward =1
net.bridge.bridge-nf-call-iptables =1
net.bridge.bridge-nf-call-ip6tables =1
#立即生效配置
[root@qm ~]# sysctl  -p
#查看路由转发是否开启 默认是0开启是1
[root@qm ~]# cat /proc/sys/net/ipv4/ip_forward
#重启生效配置
[root@qm ~]# reboot
#验证是否关闭
[root@qm ~]# getenforce && systemctl status firewalld
#清理docker环境
[root@qm ~]# yum -y remove docker  docker-client  docker-client-latest  docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine

2.安装依赖软件

[root@qm ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

3.安装阿里云docker源

#下载阿里云docker源
[root@qm ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#清理并重新生成缓存
[root@qm ~]# yum clean all && yum makecache fast
#查看包数量 看看有没有多出来一个docker源
[root@qm ~]# yum repolist

4.安装docker

[root@qm ~]# yum -y install docker-ce doker-ce-cli containerd.io==5.system工具管理docker
[root@qm ~]# systemctl start docker
[root@qm ~]# systemctl enable docker
[root@qm ~]# systemctl restart docker

6.检查iptable规则:会多出很多docker相关规则

[root@qm ~]# iptables -nL 

7.检查docker版本

[root@qm ~]# docker -v
[root@qm ~]# docker version

8.查看docker基本信息/运行状态

[root@qm ~]# docker infoPS:假如查看状态出现这个报错
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
#解决办法:
办法1:在centos7配置文件新增参数
[root@qm ~]# vim /etc/sysctl.conf
net.bridge.bridge-nf-call-iptables =1
net.bridge.bridge-nf-call-ip6tables =1
[root@qm ~]# sysctl -p
[root@qm ~]# systemctl restart docker办法2:Docker启动容器的时候指定参数
[root@qm ~]# docker run --sysctl net.bridge.bridge-nf-call-iptables=1 --sysctl net.bridge.bridge-nf-call-ip6tables=1 your_image#解析:这两个参数分别用于启用或禁用网络桥接的IPv4和IPv6防火墙调用
1.使用docker run命令启动一个新的容器。
2.通过--sysctl参数设置net.bridge.bridge-nf-call-iptables为1,表示启用IPv4防火墙调用。
3.通过--sysctl参数设置net.bridge.bridge-nf-call-ip6tables为1,表示启用IPv6防火墙调用。
4.最后指定要运行的Docker镜像名称(your_image替换成你的镜像名)

9.搜索镜像(这里搜索的centos7)

#从docker hub中搜索docker名为centos的镜像
[root@qm ~]# docker search centos:7
name:代表此镜像的名称
description:此镜像的描述
stars:下载次数
official:是否由官方提供(官方提供可放心下载,可以基于此镜像做自己的镜像)

10.配置镜像加速器(这里用的阿里云镜像加速器)

#登录阿里云控制台-->左侧容器镜像服务-->点击镜像工具-->点击镜像加速器--选择系统版本
阿里云镜像加速器直达网址:https://cr.console.aliyun.com
#建立一个.sh文件配置内容
[root@qm ~]# vim pz_docker.sh
#!/usr/sbin/bash
clear
echo "[1]开始建立docker加速器放置目录..."
mkdir -p /etc/docker
sleep 1
echo "[2]开始写入配置"
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://2zwkpj0m.mirror.aliyuncs.com"]
}
EOF
sleep 1
echo "[3]重新加载system工具"
systemctl daemon-reload
sleep 1
echo "[4]重新启动docker..."
systemctl restart docker
sleep 1
echo "[5]阿里云镜像加速器配置完毕!"

11.管理镜像(默认拉取最新版本 这里拉取的是centos7)

#拉取镜像
[root@qm ~]# docker pull centos:7
PS:如果这里报错,TLS handshake timeout,那就是网络原因导致超时,尝试多pull几次。
#删除镜像
[root@qm ~]# docker rmi -f 镜像ID 
#查看centos版本
[root@qm ~]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)

12.查看已下载镜像

[root@qm ~]# docker images  
REPOSTORY代表:镜像名
tag代表:标签
image id代表:镜像ID
SIZE代表:大小 单位MB

13.拉取镜像方式

#1.虚拟机上传到docker 本地上传
[root@qm ~]# docker load -i /指定路径/包名.tar
#2.网络下载
[root@qm ~]# docker pull registry.cn-hangzhou.aliyuncs.com/centos

14.登录到docker—shell交互终端

#登录
[root@qm ~]# docker run -it centos:7 /bin/bash
#退出容器
[root@qm ~]# exit

15.docker hup使用

#注册docker hub账号
网址:https://hub.docker.com/
#登录
[root@qm ~]# docker login
#退出
[root@qm ~]# docker out

结尾

本次的学习就到这里,如果感觉麻烦可以看下一篇文章里面有一键部署docker的脚本,还会继续更新更多docker的知识,不妨点个关注跟作者一起继续学习,点赞关注转发感谢!

相关文章:

《Docker快速入门:从0到1构建你的第一个容器!》

《Docker快速入门&#xff1a;从0到1构建你的第一个容器&#xff01;》 前言 欢迎来到Docker的世界&#xff0c;一个让应用程序打包、部署和运行更加容易的神奇平台。Docker改变了我们对于应用开发和分发的看法&#xff0c;它通过容器技术让软件的携带和运行变得前所未有的轻…...

NLP_Transformer架构

文章目录 Transformer架构剖析编码器-解码器架构各种注意力的应用Transformer中的自注意力Transformer中的多头自注意力Transformer中的编码器-解码器注意力Transformer中的注意力掩码和因果注意力 编码器的输入和位置编码编码器的内部结构编码器的输出和编码器-解码器的连接解…...

CVE-2012-2311 漏洞复现

CVE-2012-2311 这个漏洞被爆出来以后&#xff0c;PHP官方对其进行了修补&#xff0c;发布了新版本5.4.2及5.3.12&#xff0c;但这个修复是不完全的&#xff0c;可以被绕过&#xff0c;进而衍生出CVE-2012-2311漏洞。 PHP的修复方法是对-进行了检查&#xff1a; if(query_str…...

多线程面试题汇总

多线程面试题汇总 一、多线程1、线程的生命周期2、线程的创建&#xff08;函数创建&#xff09;3、线程的创建&#xff08;使用类&#xff09;4、守护线程 二、全局解释器锁1、使用单线程实现累加到5000000002、使用多线程实现累加到5000000003、总结 三、线程安全1、多线程之数…...

CentOS7.9+Kubernetes1.29.2+Docker25.0.3高可用集群二进制部署

CentOS7.9Kubernetes1.29.2Docker25.0.3高可用集群二进制部署 Kubernetes高可用集群&#xff08;Kubernetes1.29.2Docker25.0.3&#xff09;二进制部署二进制软件部署flannel v0.22.3网络&#xff0c;使用的etcd是版本3&#xff0c;与之前使用版本2不同。查看官方文档进行了解…...

STM32——OLED菜单(二级菜单)

文章目录 一.补充二. 二级菜单代码 简介&#xff1a;首先在我的51 I2C里面有OLED详细讲解&#xff0c;本期代码从51OLED基础上移植过来的&#xff0c;可以先看完那篇文章&#xff0c;在看这个&#xff0c;然后按键我是用的定时器扫描不会堵塞程序,可以翻开我的文章有单独的定时…...

配置Vite+React+TS项目

初始化 执行npm create vite并填写项目名、用那个框架。。 配置 路径别名 在vite.config.ts里面配置&#xff1a; import { defineConfig } from vite import react from vitejs/plugin-react import path from pathexport default defineConfig({plugins: [react()],reso…...

2.13:C语言测试题

21.(b) 6 22.(b) cd 23.b) 5 4 1 3 2 栈&#xff1a;先进后出 24. b,c,d:10,12,120 25.2,5 26.越界访问&#xff0c;可能正常输出&#xff0c;可能段错误 27. 0&#xff0c;41 28. a&#xff09;11 b) 320 29. aab; ba-b; aa-b; 30. p150x801005; p250x810…...

ubuntu22.04 有一台机器说有4T硬盘,但是df的时候看不到,怎么查找

在 Ubuntu 22.04 上&#xff0c;如果你有一块硬盘在使用df命令时未显示&#xff0c;这通常意味着硬盘尚未被挂载或者根本未被分区和格式化。以下是一些步骤来帮助你识别和准备新硬盘&#xff1a; 1. 检查硬盘是否被系统识别 首先&#xff0c;使用lsblk命令来检查系统是否识别…...

【机器学习】数据清洗之识别重复点

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步…...

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之NavDestination组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之NavDestination组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、NavDestination组件 作为NavRouter组件的子组件&#xff0c;用于显示导…...

tokio tcp通信

引入crate tokio { version "1.35.1", features ["full"] } 服务端 use std::time::Duration; use tokio::{io::{AsyncBufReadExt, AsyncWriteExt},net::{tcp::{OwnedReadHalf, OwnedWriteHalf},TcpListener, TcpStream,},sync::mpsc, };#[tokio::ma…...

LCR 122. 路径加密【简单】

LCR 122. 路径加密 假定一段路径记作字符串 path&#xff0c;其中以 "." 作为分隔符。现需将路径加密&#xff0c;加密方法为将 path 中的分隔符替换为空格 " "&#xff0c;请返回加密后的字符串。 示例 1&#xff1a; 输入&#xff1a;path "a.ae…...

SpringUtils 工具类,方便在非spring管理环境中获取bean

应用场景&#xff1a; 1 可用在工具类中&#xff0c; 2 spring【Controller,service】环境中&#xff0c; 3 其中的一个方法getAopProxy可获得代理对象&#xff0c;需要将 EnableAspectJAutoProxy(exposeProxy true) 允许获取代理对象 import org.springframework.aop.framew…...

JavaWeb之请求

请求 客户端请求由ServletRequest类型的request对象表示&#xff0c;在HTTP请求场景下&#xff0c;容器提供的请求对象的具体类型为HttpServletRequest HTTP的请求消息分为三部分&#xff1a;请求行、请求头、请求正文。 请求行对应方法 // 获取请求行中的协议名和版本public S…...

VsCode中常用的正则表达式操作

在vscode中可以使用正则表达式来进行搜索内容&#xff0c;极大的方便了我们对大量数据中需要查看的信息进行筛选&#xff0c;使用正则搜索时点击 .* 此文章会持续补充常用的正则操作 1.光标选中搜索到的内容 将搜索的内容进行全选&#xff0c;举例&#xff1a;在如下文件中我需…...

ubuntu22.04@laptop OpenCV Get Started: 007_color_spaces

ubuntu22.04laptop OpenCV Get Started: 007_color_spaces 1. 源由2. 颜色空间2.1 RGB颜色空间2.2 LAB颜色空间2.3 YCrCb颜色空间2.4 HSV颜色空间 3 代码工程结构3.1 C应用Demo3.2 Python应用Demo 4. 重点分析4.1 interactive_color_detect4.2 interactive_color_segment4.3 da…...

mysql 查询性能优化关键点总结

MySQL查询性能优化是数据库管理的重要环节&#xff0c;良好的性能优化可以提高查询效率&#xff0c;降低系统负载。以下是一些关键点&#xff0c;用于优化MySQL查询性能&#xff1a; 1. 索引优化 索引是MySQL查询优化的重要手段&#xff0c;合理的索引可以大大…...

React - 分页插件默认是英文怎么办

英文组件的通用解决方案 这里以分页插件为例&#xff1a; 大家可以看到&#xff0c;最后的这个页面跳转提示文字为Go to&#xff0c;不是中文&#xff0c;而官网里面的案例则是&#xff1a; 解决方案&#xff1a; import { ConfigProvider } from antd; import zhCN from an…...

揭开Markdown的秘籍:引用|代码块|超链接

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;Markdown指南、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. ⛳️Markdown 引用1.1 &#x1f514;引用1.2 &#x1f514;嵌套引用1.3 &…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...