当前位置: 首页 > 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的知识,不妨点个关注跟作者一起继续学习,点赞关注转发感谢!

http://www.lryc.cn/news/300768.html

相关文章:

  • NLP_Transformer架构
  • CVE-2012-2311 漏洞复现
  • 多线程面试题汇总
  • CentOS7.9+Kubernetes1.29.2+Docker25.0.3高可用集群二进制部署
  • STM32——OLED菜单(二级菜单)
  • 配置Vite+React+TS项目
  • 2.13:C语言测试题
  • ubuntu22.04 有一台机器说有4T硬盘,但是df的时候看不到,怎么查找
  • 【机器学习】数据清洗之识别重复点
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之NavDestination组件
  • tokio tcp通信
  • LCR 122. 路径加密【简单】
  • SpringUtils 工具类,方便在非spring管理环境中获取bean
  • JavaWeb之请求
  • VsCode中常用的正则表达式操作
  • ubuntu22.04@laptop OpenCV Get Started: 007_color_spaces
  • mysql 查询性能优化关键点总结
  • React - 分页插件默认是英文怎么办
  • 揭开Markdown的秘籍:引用|代码块|超链接
  • 【C语言】Debian安装并编译内核源码
  • 使用 C++23 从零实现 RISC-V 模拟器(6):权限支持
  • 针对某终端安全自检钓鱼工具的分析
  • XSS数据接收平台
  • MySQL 基础知识(六)之数据查询(一)
  • C#使用哈希表对XML文件进行查询
  • vscode写MATLAB配置
  • 第13章 网络 Page734 “I/O对象”的链式传递 单独的火箭发射函数,没有用对的智能指针
  • Git 存储大文件
  • 使用 Mermaid 创建流程图,序列图,甘特图
  • 政安晨:在Jupyter中【示例演绎】Matplotlib的官方指南(二){Image tutorial}·{Python语言}