1.Docker介绍
1.Docker介绍
Docker 是⼀个开源的应用容器引擎,可以实现虚拟化,完全采用“沙盒”机制,容器之间不会存在任何接口。
Docker 通过 Linux Container(容器)技术将任意类型的应用进行包装,变成一种轻量级、标准化、可移植、自管理的组件。在包装应用的同时可连带该应用的依赖和环境一并进行打包,所以可以将这种“包”移植到任意环境去运行,省去兼容性的问题。
2.Docker架构
1. 用docker pull 命令从 hub.docker.com 官网上下载 images (镜像)。
2. 可以用docker save 命令将镜像保存到本地 tar文件,也可以用docker load 命令将本地ta文件导入镜像。
3. 可以用docker build 构建 Dockerfile 镜像。
4. 可以用docker run 和 docker create 将镜像运行成 container (容器),容器内可以安装所需要的 APP。
5. 可以用docker commit/export 将容器做成镜像反复的使用。
6. 可以将自己制作的镜像发布到 hub.docker.com 网站,需要注册账号。
3.Docker 核心概念
1. 镜像(images):一个面向 docker 容器引擎的只读模板,也是容器的基础,类似于 iso 镜像文件。
2. 容器(container):基于镜像所创建的虚拟实例,相当于一个简易的 Linux 环境,可启停,且多个容器之间互相隔离。
3. 仓库(Repository):集中存放 docker 镜像的位置,可使用docker pull 或 push 命令下载或上传到私有或公有仓库。
4. 仓库注册服务器(registry):存放仓库的地方,如果没有私有仓库,则使用公共仓库 docker hub。
4.Docker特性
1.文件系统隔离:每个进程容器运行在⼀个完全独立的根文件系统里。
2.资源隔离:实现不同的容器的资源配额和调度,cgroup。
3.网络隔离:每个进程容器运行在自己的网络空间,拥有虚拟接口和 IP 地址。
4.日志记录:Docker将收集到和记录的每个进程容器的标准流 (stdout/stderr/stdin),用于实时检索或者批量检索。
5.变更管理:容器文件系统的变更可以提交到新的镜像中,并可重复使用以创建更多的容器。
6.交互式shell:Docker可以分配一个虚拟终端并且关联到任何容器的标准输出上,例如运行一个一次性交互shell。
命令表
2.安装Docker
安装模块
[root@docker0 ~]# cat << EOF | tee /etc/modules-load.d/k8s.conf
> overlay
> br_netfilter
> EOF
overlay
br_netfilter
加载内核模块
[root@docker0 ~]# modprobe overlay
[root@docker0 ~]# modprobe br_netfilter
查看模块
[root@docker0 ~]# cat /etc/modules-load.d/
cat: /etc/modules-load.d/: 是一个目录
[root@docker0 ~]# cat /etc/modules-load.d/k8s.conf
overlay
br_netfilter
[root@docker0 ~]# cat << EOF | tee /etc/sysctl.d/k8s.conf
> net.bridge.bridge-nf-call-iptables = 1
> net.bridge.bridge-nf-call-ip6tables = 1
> net.ipv4.ip_forward = 1
> EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
运行
[root@docker0 ~]# sysctl --system
安装
[root@docker0 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
提高下载速度
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
ls /etc/yum.repos.d/
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
启动docker
[root@docker0 ~]# systemctl start docker
[root@docker0 ~]# docker images #里面空空如也
REPOSITORY TAG IMAGE ID CREATED SIZE
搜索一下tomcat
[root@docker0 ~]# docker search tomcat
overlay:是一种文件系统层叠技术,常用于容器化平台(比如 Docker)中。它允许将多个文件系统叠加在一起,从而创建一个统一可见的文件系统。通过加载 overlay 模块,可以在 Linux 系统中使用overlay 文件系统,并且它将提供一些额外的功能,比 如联合挂载、文件层叠等。
br_netfilter:Linux 内核中的提个模块,它提供了桥接设备(bridge device) 和网络过滤器(netfilter) 之间的集成。它允许在桥 接设备上使用网络过滤器功能,如防火墙规则、网络地址转换 (NAT) 等。通过加载 br_netfilter 模块,你可以在 Linux 系统中的桥接设备上应用网络过滤规则对网络流量进行管理和控制。
device-mapper-persistent-data:一个Linux内核模块,它为 Device Mapper设备提供持久存储功能。DMPD提供了一个用于存储映射关系的数据库,使得Device Mapper可以持久化存储映射数据,以便在系统重新启动后仍然可以恢复之前的映射关系。
lvm2:Linux系统下的逻辑卷管理工具,LVM 的升级版,它是对磁盘分区进行管理的一种机制,建立在硬盘和分区之上的一个逻辑层,用来提高磁盘管理的灵活性。
3.启动docker镜像
创建文档,设置加速器
[root@docker0 ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
]
}
重启docker
[root@docker0 ~]# systemctl restart docker
[root@docker0 ~]# docker info
拉取centos镜像
[root@docker0 ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a1d0c7532777: Pull complete
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
查看镜像
[root@docker0 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5d0da3dc9764 2 years ago 231MB
运行容器
[root@docker0 ~]# docker run -it --name=c0 centos:latest /bin/bash
[root@9ef531eeae6c /]#
当前运行的进程
当前位置和启动时间
查看版本
[root@9ef531eeae6c /]# cat /etc/redhat-release
CentOS Linux release 8.4.2105
配置阿里云的yum仓库
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all && yum makecache
安装http
yum -y install httpd
修改index.html文件
echo "docker_httpd_server" > /var/www/html/index.html
启动http服务
httpd -k start
宿主机访问
curl 容器IP地址:80 #ifconfig可获得
退出
exit
4.docker管理远程管理
1.关闭docker守护进程
2.修改dock daemon的进程文件
进入配置文件
[root@docker001 ns]# vim /usr/lib/systemd/system/docker.service
删除相关sock的文件
再次启动,发现有提示
3.加载配置文件
systemctl daemon-reload
systemctl start docker
4.重新开启docker守护进程
systemctl daemon-reload
systemctl start docker
5.添加配置文件对docker daemon 的配置
通过修改/etc/docker/daemo.json文件对docker守护进程进行配置,默认情况下没有daemon.json文件,在添加daemon之前,先修改。
修改
重启