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

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

前言

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

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

实战

1.环境准备

bash 复制代码
#永久关闭防火墙
[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.安装依赖软件

bash 复制代码
[root@qm ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

3.安装阿里云docker源

bash 复制代码
#下载阿里云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

bash 复制代码
[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相关规则

bash 复制代码
[root@qm ~]# iptables -nL 

7.检查docker版本

bash 复制代码
[root@qm ~]# docker -v
[root@qm ~]# docker version

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

bash 复制代码
[root@qm ~]# docker info

PS:假如查看状态出现这个报错
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)

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

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

bash 复制代码
#登录阿里云控制台-->左侧容器镜像服务-->点击镜像工具-->点击镜像加速器--选择系统版本
阿里云镜像加速器直达网址: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)

bash 复制代码
#拉取镜像
[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.查看已下载镜像

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

13.拉取镜像方式

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

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

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

15.docker hup使用

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

结尾

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

相关推荐
hope_wisdom16 分钟前
Linux系统编程之目录遍历
linux·linux编程·readdir·目录遍历·scandir
深蓝海拓25 分钟前
使用sam进行零样本、零学习的分割实践
人工智能·深度学习·学习·目标检测·计算机视觉
小安运维日记1 小时前
CKA认证 | Day7 K8s存储
运维·云原生·容器·kubernetes·云计算
暗碳1 小时前
华为麦芒5(安卓6)termux记录 使用ddns-go,alist
android·linux
靡樊1 小时前
Linux:基础IO
linux
minstbe1 小时前
AI开发:决策树模型概述与实现:从训练到评估和可视化 - Python
python·深度学习·知识图谱·集成学习
SmartBrain1 小时前
AI新书推荐:深度学习和大模型原理与实践(清华社)
人工智能·深度学习
AR_xsy1 小时前
K8S--“ Failed to create pod sandbox: nameserver list is empty“
云原生·容器·kubernetes
码农炎可1 小时前
K8S 黑魔法之如何从 Pod 拿到节点的命令行
安全·云原生·容器·kubernetes
Just_Do_IT_OK1 小时前
Docker--MySql
mysql·docker·容器