一、Docker零基础入门到企业实战

1、Docker概述及基本原理介绍

(1)docker是什么?

Docker是一个开源项目,诞生于2013年初,最初是dotCloud公司内部的一个业余项目,它基于Goolgle公司退出的Go语言实现。项目后来加入了Linux基金会,遵从了Apache2.0协议,项目代码在GitHub上进行维护。
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的,可移植的、自给自足的容器。开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何支持docker的机器上运行。容器是完全使用沙箱机制,相互之间不会有任何接口调用。

(2)docker的优缺点

优点:
快:运行时的性能快,管理操作(启动,停止,开始,重启等等)都是以秒或毫秒为单位的。
敏捷:像虚拟机一样敏捷,而且会更便宜,在bar metal(裸机)上部署像点个按钮一样简单。
灵活:将应用和系统“容器化”,不添加额外的操作系统。
轻量:在一台服务器上可以部署100~1000个Containers容器。
便宜:开源的,免费的,低成本的。(docker-ee:商业版;docker-ce:社区版)
缺点:
所有的容器共用linux kerner资源,资源能否实现最大限度利用,所以在安全上也会存在漏洞。

2、Docker安装和配置

(1)系统环境配置

系统配置:
主机:IP(172.21.120.144)
centos7.6-7.9
配置:2Gi/2vCPU
查看服务器hostname
#hostnamectl
在这里插入图片描述
#hostnamectl set-hostname wenqianmaster1 –static 修改静态服务器名称为wenqianmaster1
#hostnamectl status
在这里插入图片描述
安装防火墙
#yum install firewalld firewall-config
#systemctl status firewalld
#systemctl stop firewalld
#systemctl disable firewalld 禁用,防止开机再次启动
#iptables -F 清空防火墙规则
#setenforce 0
关闭selinux
#vim /etc/selinux/config
在这里插入图片描述
#getenforce
在这里插入图片描述
#sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config注意:修改selinux配置文件之后,重启机器,selinux才能永久生效
#getenforce
在这里插入图片描述
#yum install -y ntp ntpdate
与网络源同步时间
#ntpdate cn.pool.ntp.org
在这里插入图片描述
#编写计划任务
#crontab -e

  • */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org
    重启crond生效
    #systemctl restart crond

(2)安装docker

安装基础软件包
#yum install -y wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack
安装docker-ce
配置docker-ce国内yum源(阿里云)
#yum install yum-utils -y
#yum-config-manager --add-repo
#yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker依赖包
#yum install -y yum-utils device-mapper-persistent-data lvm2
#yum install docker-ce -y //安装docker-ce
#docker version //查看docker版本
启动docker服务
#systemctl start docker && systemctl enable docker
#systemctl status docker
在这里插入图片描述

(3)优化内核参数

#开启包功转发能和修改内核参数
#内核参数修改:br_netfilter模块用于将桥接流量转发至iptables链,br_netfilter内核参数需要开启转发。
#modprobe br_netfilter
#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
在这里插入图片描述
在这里插入图片描述
#使参数生效
#sysctl -p /etc/sysctl.d/docker.conf
在这里插入图片描述
#查看是否加载成功
#lsmod | grep br_netfilter
在这里插入图片描述
#重启后模块失效,下面是开机自启加载模块的脚本
#开机自动加载
在/etc/新建rc.sysinit 文件
cat /etc/rc.sysinit
#!/bin/bash
for file in /etc/sysconfig/modules/*.modules ; do
[ -x $file ] && $file
done
在这里插入图片描述
在/etc/sysconfig/modules/目录下新建文件如下
cat /etc/sysconfig/modules/br_netfilter.modules
modprobe br_netfilter
#chmod +x /etc/sysconfig/modules/br_netfilter.modules
#chmod 755 /etc/sysconfig/modules/br_netfilter.modules 增加权限
重启机器模块也会自动加载
#lsmod |grep br_netfilter
在这里插入图片描述
#systemctl restart docker
#查看状态
#systemctl status docker

(2)配置docker镜像加速器

登录阿里云镜像仓库
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
如果没有开通,可开通阿里云的镜像服务(支付宝登录)
在这里插入图片描述
#vim /etc/docker/daemon.json
{
“registry-mirrors”:[“https://y8y6vosv.mirror.aliyuncs.com”,“https://registry.docker-cn.com”,“https://docker.mirrors.ustc.edu.cn”,“https://dockerhub.azk8s.cn”,“http://hub-mirror.c.163.com”]
}

#还可以增加其他站点
在这里插入图片描述
在这里插入图片描述

sudo systemctl daemon-reload //重新加载配置
sudo systemctl restart docker //重启docker

3、Docker基本使用

(1)镜像相关操作

#从dockerhub查找镜像
#docker search centos

解释说明:
NAME: 镜像仓库源的名称
DESCRIPTION: 镜像的描述
OFFICIAL: 是否 docker 官方发布
stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
AUTOMATED: 自动构建。

//拉取最新镜像
#docker pull centos //默认从dockerhub官方拉取
//查看本地镜像
#docker images
//删除镜像
#docker rmi -f centos:latest
//把镜像做成离线压缩包
#docker save -o centos.tar.gz centos
//解压压缩包
#docker load -i centos.tar.gz

(2)容器相关操作

/./先把删除的镜像解压出来
#docker load -i centos.tar.gz
以交互方式启动并进入容器
#docker run --name=hello -it centos /bin/bash //hello为容器的名字,基于centos镜像
在这里插入图片描述
#exit退出 //容器也就停了
#docker ps //查看正在运行的镜像
#docker ps -a //查看所有的镜像
以守护进程启动方式
#docker run --name=hello1 -d centos /bin/bash
#docker ps //未起来
#docker rm -rf hello
#docker run --name=hello -td centos
#docker ps //再次查看 -t是分配一个伪终端,d是在后台运行
#docker exec -it hello1 /bin/bash //-i是交互式 登录容器
#docker ps

(3)常用命令总结

#docker ps //查看正在运行的容器
#docker ps -a //将所有运行和退出的容器都列出来
#docker stop hello1 //停止容器
#docker start hello1 //启动已经停止的容器
#docker exec -it hello1 /bin/bash //进入容器
#docker rm -f hell01 //删除容器
#docker --help //查看docker支持哪些命令

4、通过Docker部署nginx服务

(1)相关命令

#docker run --name niginx -p 80 -itd centos
#docker ps | grep nginx
在这里插入图片描述
//在浏览器访问:IP:49153 不行
#docker exec -it nginx /bin/bash
//yum安装nginx
//更新yum源
#rm -rf /etc/yum.repos.d/*
#curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
#cd /etc/yum.repos.d/
在这里插入图片描述
#yum install wget -y
#yum install nginx -y
#yum install vim-enhanced -y //安装文本编辑器vim
//创建静态页面
mkdir /var/www/html -p
cd /var/www/html/
cat index.html
在这里插入图片描述
//修改nginx配置文件中的root路径,如下
vim /etc/nginx/nginx.conf
root /var/www/html/;
#/usr/sbin/nginx //启动nginx
#exit
#docker ps | grep nginx
在这里插入图片描述
//能查看到nginx容器在物理机映射的端口是49153
//再次访问 IP:49153
curl http://192.168.40.180:49153
在这里插入图片描述

也可以直接访问容器的ip:port
[root@xianchaomaster1 ~]# curl IP:80
在这里插入图片描述
在这里插入图片描述
流量走向:
访问物理节点ip:port(容器在物理节点映射的端口)–容器ip:port(容器里部署的服务的端口)->就可以访问到容器里部署的应用了
//查看容器的IP
#docker inspect nginx
在这里插入图片描述
#192.168.40.180;49153->172.17.0.2:80

二、基于Dockerfile构建企业级生产环境镜像

1、Dockerfile构建文本文件分析流程

Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
基于Dockerfile构建镜像可以使用docker build命名,docker build命令中使用-f可以指定具体的dockerfile文件。
基础的dockerfile内容:
FROM centos
MAINTAINER wenqian
RUN yum install wget -y
RUN yum install nginx -y
在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐