当前位置: 首页 > 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 &…...

CentOS8实战:ZeroTier构建安全异地虚拟局域网

1. 为什么选择ZeroTier替代传统内网穿透方案 最近在帮朋友搭建远程办公环境时&#xff0c;遇到了一个典型问题&#xff1a;分布在三个不同物理位置的服务器需要像在同一个办公室内网那样互相访问。最初考虑使用FRP方案&#xff0c;但实测下来发现几个痛点&#xff1a;首先是带宽…...

3步解锁鸣潮120帧:你的终极游戏体验优化指南

3步解锁鸣潮120帧&#xff1a;你的终极游戏体验优化指南 【免费下载链接】WaveTools &#x1f9f0;鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 还在为《鸣潮》游戏中的60帧限制而烦恼吗&#xff1f;明明拥有强大的硬件配置&#xff0c;却无法充…...

终极解密指南:Windows平台NCM音频文件一键转换实战

终极解密指南&#xff1a;Windows平台NCM音频文件一键转换实战 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾因网易云音乐的NCM加密格式而烦恼&…...

手把手教你用三菱FX3U PLC的RS指令和RS2指令与电脑串口调试助手‘对话’

三菱FX3U PLC串口通信实战&#xff1a;从零搭建RS485数据收发系统 第一次接触工业控制系统的串口通信时&#xff0c;我被那些密密麻麻的接线和晦涩的协议参数弄得晕头转向。直到在自动化生产线上亲眼看到PLC通过两根电线与十几台设备稳定通信&#xff0c;才意识到串口技术的精妙…...

ViGEmBus终极指南:Windows游戏手柄模拟驱动的完整解决方案

ViGEmBus终极指南&#xff1a;Windows游戏手柄模拟驱动的完整解决方案 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 你是否曾经遇到过这样的情况&#xff…...

一种用于并网光伏系统的创新型多层逆变器,以降低总谐波失真(THD)研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 &#x1f381…...

Linuxbonding链路生产排障流程

Linuxbonding链路生产排障流程这是一篇面向中级 Linux 使用者的技术文章&#xff0c;主题聚焦在bonding链路&#xff0c;重点讨论链路聚合、冗余切换和接口状态。在真实生产环境中&#xff0c;bonding链路相关问题往往不会以单一错误形式出现&#xff0c;而是混杂在日志、权限、…...

湿版摄影×AI生成革命:为什么93%的MJ用户调不出真实碘化银斑痕?——资深暗房师+AI训练师双视角深度拆解

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;湿版摄影AI生成革命&#xff1a;为什么93%的MJ用户调不出真实碘化银斑痕&#xff1f;——资深暗房师AI训练师双视角深度拆解 湿版火棉胶摄影术诞生于1851年&#xff0c;其不可复制的物理噪点——由碘化…...

AI原生编程语言Reia:为LLM设计的编程范式变革

1. 项目概述&#xff1a;Reia&#xff0c;一个面向未来的AI原生编程语言最近在AI和编程语言交叉领域&#xff0c;一个名为Reia的项目引起了我的注意。它来自Quaint-Studios&#xff0c;定位是“AI原生”的编程语言。这听起来有点抽象&#xff0c;但简单来说&#xff0c;Reia试图…...

n8n-claw:在自动化工作流中实现零代码网页抓取

1. 项目概述与核心价值最近在折腾自动化工作流&#xff0c;发现了一个挺有意思的项目&#xff0c;叫freddy-schuetz/n8n-claw。乍一看名字&#xff0c;你可能会有点懵&#xff0c;“n8n”我知道&#xff0c;是那个开源的自动化工具&#xff0c;但这个“claw”是啥&#xff1f;爪…...