赞
踩
说起来有一段时间没有更新文章了,最近不是忙着出差就是一堆繁忙的工作,还要去考驾照…周六日确实懒散了些,睡睡懒觉,打打游戏,陪对象刷刷剧…放松了下。
今日心血来潮,后面想赶紧把Docker以及K8s的技术学习整理下,虽然是干开发的,但是偏偏又对运维感兴趣,好像没救了哈哈哈,那就都学点吧。话不多聊了,直接干货整起。
其实说到Docker,不管是业内的开发者还是运维应该都不陌生,大多都有接触到的。无非就是几个关键的概念,简单介绍一下:
还有一个老生常谈的问题,Docker和传统部署的区别?
介绍下笔者的服务器配置,租的一个,比较便宜:
执行命令配置主机名:
hostnamectl set-hostname haohaomaster1 && bash
命令分为两个部分:
服务器设置主机名后,其他服务(一般指本机上的一些服务)可以通过此主机名找到这个Docker机器。
为避免主机因长时间运行导致的时间偏差,需要进行时间同步,Linux中,一般使用ntpdate
yum -y install ntpdate # 安装
ntpdate cn.pool.ntp.org # 表示和网络源同步
若是内网机器,可以单独搭建一个时间同步服务器,与内网时间进行同步。
编写计划任务
crontab -e
写入下面的内容:
* * * * * /usr/sbin/ntpdate cn.pool.ntp.org
每分钟执行一个ntpdate命令,将时间进行同步。
重启crond使命令生效
systemctl restart crond
在CentOS操作系统的默认最小版本中,没有集成我们所需要的很多软件包,因此要手动安装它们。
yum -y install wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack
CentOS默认的yum源不可以安装Docker,因此需要配置国内阿里云yum源以安装Docker-CE。通过配置国内阿里云yum源,安装Docker的速度会快很多。
yum-config-manager sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
执行完毕后,就可以使用yum命令进行安装、更新、卸载Docker-CE了。
yum -y install docker-ce
启动&&设置开机自启
systemctl start docker && systemctl enable docker
查看Docker状态
systemctl status docker
安装Docker时,通常需要加载br_netfilter内核模块以确保Docker正常工作。因为Docker运行时需要创建一个网络桥接设备(Bridge Device),以便将容器内部的网络连接到宿主机上面。而
br_netfilter
提供了必要的网络过滤功能,能使Linux内核对网络数据包进行转发和过滤。
内核参数一般不需要修改,但是需要注意的是:有些Linux发行版中,br_netfilter可能未被默认加载。所以必须手动加载后,才能使Docker正常工作。
modprobe br_netfilter
/etc/sysctl.d/
下创建docker.conf文件,写入以下内容cat > /etc/sysctl.d/docker.conf <<EOF
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward=1
EOF
net.ipv4.ip_forward
:是Linux内核一个配置项,用于控制开启IP转发功能。使用场景:如VPN服务,两台PC链接VPN后,需要访问或发送给对方的网络数据包资源
net.bridge.bridge-nf-call-ip6tables=1
和net.bridge.bridge-nf-call-iptables=1
,开启IPV4和IPV6的网络桥接防火墙规则。确保容器之间的通信只可以通过Docker的桥接网络进行,而不可以直接通过主机网络接口进行。
sysctl -p /etc/sysctl.d/docker.conf
systemctl restart docker
国内从Docker Hub拉取镜像有时会遇到困难,此时可以配置镜像加速器。如:
修改/etc/docker/daemon.json
文件,内容如下:
{
"registry-mirrors":[
"https://6yqx5sih.mirror.aliyuncs.com",
"https://hub-mirrors.c.163.com/",
"https://Docker.mirrors.ustc.edu.cn/"
]
}
重启以生效:
systemctl restart docker
Docker包含3个核心部分:镜像、容器和仓库。其中镜像是Docker运行容器的基础,可以理解为VM模板。镜像由多层组成,每层叠加之后形成一个独立的对象,内部包含精简的操作系统和应用运行所需要的文件和依赖项。
容器是基于镜像创建的可运行实例,每个容器都是相互隔离的运行环境,拥有自己的系统、网络、进程空间等。在运行容器之前,确保本地有对应的镜像,若本地不存在镜像,那么Docker会去镜像仓库下载该镜像到本地。
查找镜像
docker search centos
docker pull centos
docker images
若Docker Hub或其他镜像站点不能下载镜像,或内网机器不能联网,可以把镜像做成压缩包,然后上传到其他的机器上。
docker save -o centos.tar.gz centos
centos.tar.gz
: 是压缩包的名称
centos
:镜像名
将一个包含镜像的压缩文件解压加载到本地的Docker镜像仓库中
docker load -i centos.tar.gz
-f
:强制删除
docker rmi -f centos
创建启动容器
# 交互式 i:交互式 t:伪tty
docker run --name=hello1 -it centos /bin/bash
# 退出容器
exit
# 守护进程式容器 d:后台 t:伪tty
docker run --name=hello2 -td centos
# i:交互式 t:伪终端
docker exec -it
docker ps # 在运行的容器
docker start 容器名或id # 启动容器
docker stop 容器名或id # 停止容器
docker restart 容器名或id # 重启容器
docker rm -f hello1 # 强制删除容器
# 命令帮助查询
docker --help
首先创建、启动容器:
docker run --name nginx -p 80:80 -itd centos
# --name 容器名
# -p 80:80 第一个80是宿主机端口 第二个是容器端口 就是把容器的80端口映射到宿主机的80端口上
# -itd 交互式启动,并在后台运行
docker ps |grep nginx
# 进入容器
# -it 交互式进入容器
# /bin/bash 启动一个新的bash终端
docker exec -it nginx /bin/bash
# 进入yum相关配置目录
cd /etc/yum.repos.d/
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
# 生成缓存更新
yum makecache
# 安装nginx
yum -y install nginx
# 启动Nginx
/usr/sbin/nginx
然后捏,从外部访问的话,记得把宿主机的80端口开一下或设置成别的都行。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。