这里写目录标题
容器
轻量级的虚拟机,更加节省资源(cpu、内存、磁盘、带宽等)的虚拟机。
优点:省钱、成本低、速度更加快,扩展性更加强。serverless。
容器的软件厂商
① docker:提供容器技术的软件;
② k8s:kubernetes是容器集群管理软件,可以管理很多台服务器上的docker启动的容器。可以实现容器的分布式管理,综合很多容器的软件。k8s也是一个软件,用来管理多台服务器上的docker容器的。容器集群编排工具。
docker
docker是一个轻量级、可移植的虚拟化技术,通过容器化技术实现应用程序的打包、运输和运行。
docker
container集装箱一个封闭的空间,里面可以运行我们的程序。
1、集装箱container
集装箱:存放货物的地方
有隔离作用:靠Linux内核来实现的。一个进程对应一个容器。
2、what a container
a standard unit of software。
1、docker的框架:一个真实的机器里面装一个linux系统,系统里面装docker,docker里面再装容器,每个容器里面装一个服务。
3、docker和容器的区别
docker都是用来管理容器的一个软件。
docker引擎
Docker引擎是一种开源容器化技术,用于构建和容器化应用程序。Docker引擎充当客户端-服务器应用程序,具有:
① 具有长时间运行的守护进程dockerd的服务器。
② 指定程序可用于与Docker守护程序通信和指示docker守护程序的接口的API。
③ 命令行界面(CLI)客户端泊坞窗。
CLI使用Docker API通过脚本或直接CLI命令来控制Docker守护程序或与Docker守护程序交互。许多其他Docker应用程序使用底层API和CLI。守护程序创建和管理Docker对象,例如镜像、容器、网络和卷。
虚拟化
虚拟化virtualization:模拟出来的,不是物理的,算真的。
容器技术:container,存放东西的地方。容纳别的东西的器皿。
docker,containerd,k8s等。
虚拟化技术
VMware:workstation :入门级的产品
docker:容器技术的经典代表。
CNF 云原生基金会:Google Redhat ibm等:K8S(kubernetes):containerd(容器运行时软件)
docker是容器运行时软件----容器软件
k8s是管理容器运行时的软件(docker、containerd、rki等)---k8s理解为管理docker集群的软件。
k8s是建立再docker上的。
docker和k8s都是使用go语言开发的
只要是与k8s相关的技术都叫云原生相关的技术,容器理解为一个虚拟机,虚拟机是不是运行软件?
docker安装详解
安装具体流程可以参考之前的文章,这里做个大概的安装流程介绍:
docker安装详细教程
1、安装检查
卸载原来安装过的docker,如果没有安装的就不用进行卸载
bash
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2、安装yum相关的工具
下载docker-ce.repo文件
bash
yum install -y yum-utils
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
下载docker-ce.repo文件做个文件存在/etc/yum.repo.d
3、安装docker-ce软件
container engine:容器引擎
docker是一个容器管理的软件
docker-ce:是服务器端软件 server
docker-ce-cli:是客户端软件 client
docker-compose-plugin
bash
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
4、查看docker版本
docker --version
bash
[root@sc-master shell]# docker --version
Docker version 20.10.17, build 100c701
5、启动docker服务
systemctl start docker
bash
systemctl start docker
6、设置docker开机启动
systemctl enable docker
bash
systemctl enable docker
1个docker 启动的每一个容器的背后就是一个linux进程
7、查看有哪些docker容器运行进程
docker ps
bash
[root@sc-master shell]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
8、查看容器里有哪些镜像
docker images --images 镜像,镜像里面包含了我们需要的软件的代码和基础环境。
bash
[root@sc-master shell]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 11 months ago 13.3kB
9、下载nginx软件
docker pull nginx
bash
[root@sc-master shell]# docker images 查看nginx镜像软件
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 2b7d6430f78d 2 days ago 142MB
hello-world latest feb5d9fea6a5 11 months ago 13.3kB
10、启动一个docker容器的命令
docker run
启动一个容器,可以理解为开启一台虚拟机,相当于将nginx放入容器中进行运行,这样就可以限制其他的cpu资源。
11、启动一个为sc-nginx的容器
docker run -d -p 8090:80 --name sc-nginx nginx
bash
[root@sc-master shell]# docker run -d -p 8090:80 --name sc-nginx nginx
1d3e0fdfaf8f971523ce5b539dda1c6c8c609c8e88c29361ed77e2f778e376e0
注解:
-d:在后台运行demo 、daemon守护进程
-p 8090:80 指定端口映射 DNAT:访问本机的8090端口,转发到docker容器的80端口。
--name sc-nginx 指定容器的名字为:sc-nginx
nginx是镜像的名字
12、查看防火墙的设置
iptables -t nat -L
bash
[root@sc-master shell]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DOCKER all -- anywhere anywhere ADDRTYPE match dst-type LOCAL
DNAT tcp -- anywhere anywhere tcp dpt:8090 to:172.17.0.2:80
查看容器启动的进程:
bash
[root@sc-master shell]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1d3e0fdfaf8f nginx "/docker-entrypoint...." 7 minutes ago Up 7 minutes 0.0.0.0:8090->80/tcp, :::8090->80/tcp sc-nginx
13、防火墙nat详解
图片理解:使用了nat功能,用户要去访问:
docker0:是宿主机与其他容器之间进行通信的网关,也就是lan口。
14、nginx访问测试
然后去客户机上能否访问,访问宿主机的8090端口,去浏览器上输入:http://宿主机ip地址:8090/
我的是:http://192.168.2.152:8090/
如果因为镜像没有访问到的话,可以先关闭防火墙和重启docker服务进行解决,如果重启docker服务的话,可能会导致之前的镜像停止,所以先查看所有的容器,包括停止的,然后再启动已经停止的容器。
1、关闭防火墙:
bash
service firewalld stop
2、重启docker服务
bash
service docker restart
3、查看所有的容器,包括已经停止的
bash
docker ps -a
4、启动已经停止的容器
bash
docker start sc-nginx
5、再查看是否已经启动成功
bash
docker ps