当前位置: 首页 > backend >正文

容器docker入门学习

这里写目录标题

  • 容器
    • 容器的软件厂商
  • docker
    • docker引擎
  • 虚拟化
    • 虚拟化技术
  • docker安装详解
    • 1、安装检查
    • 2、安装yum相关的工具
    • 3、安装docker-ce软件
    • 4、查看docker版本
    • 5、启动docker服务
    • 6、设置docker开机启动
    • 7、查看有哪些docker容器运行进程
    • 8、查看容器里有哪些镜像
    • 9、下载nginx软件
    • 10、启动一个docker容器的命令
    • 11、启动一个为sc-nginx的容器
    • 12、查看防火墙的设置
    • 13、防火墙nat详解
    • 14、nginx访问测试

容器

轻量级的虚拟机,更加节省资源(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,如果没有安装的就不用进行卸载

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文件

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

yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

4、查看docker版本

docker --version

[root@sc-master shell]# docker --version
Docker version 20.10.17, build 100c701

5、启动docker服务

systemctl start docker

systemctl start docker

6、设置docker开机启动

systemctl enable docker

systemctl enable docker

1个docker 启动的每一个容器的背后就是一个linux进程

7、查看有哪些docker容器运行进程

docker ps

[root@sc-master shell]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS  

8、查看容器里有哪些镜像

docker images --images 镜像,镜像里面包含了我们需要的软件的代码和基础环境。

[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

[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

[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

[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

查看容器启动的进程:

[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、关闭防火墙:

service firewalld stop

2、重启docker服务

service docker restart 

3、查看所有的容器,包括已经停止的

docker ps -a

4、启动已经停止的容器

docker start sc-nginx

5、再查看是否已经启动成功

docker ps
http://www.xdnf.cn/news/31.html

相关文章:

  • ubuntu24.04离线安装deb格式的mysql-community-8.4.4
  • 【C++初阶】--- list容器功能模拟实现
  • 基于flask+vue框架的灯饰安装维修系统u49cf(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 【Unity】JSON数据的存取
  • 燕山大学计算机网络之Java实现TCP数据包结构设计与收发
  • 有什么工具可以在家连接到公司内网?局域网址提供异地公网访问的那些常用方法
  • 一台 Master 多节点玩转 Kubernetes:sealos 一键部署实践
  • MahApps.Metro:专为 WPF 应用程序设计的 UI 框架
  • 【数据结构】AVL树
  • 自动驾驶系列—GLane3D: Detecting Lanes with Graph of 3D Keypoints
  • android liveData observeForever 与 observe对比
  • CS144 Lab0实战记录:搭建网络编程基础
  • 游戏引擎学习第231天
  • 02、GPIO外设(一):基础知识
  • Windows平台使用Docker部署Neo4j
  • 从零上手GUI Guider学习LVGL——Button
  • 【Windows本地部署n8n工作流自动平台结合内网穿透远程在线访问】
  • SAP HANA使用命令行快速导出导入
  • 【HFP】深入解析蓝牙 HFP 协议中呼叫转移、呼叫建立及保持呼叫状态的机制
  • 在 Kali Linux 上安装 Java OpenJDK 8(详细指南)
  • 在Pycharm配置stable diffusion环境(使用conda虚拟环境)
  • Mac idea WordExcel等文件git modify 一直提示修改状态
  • 深度剖析:GPT-3.5与GPT-4的主要区别及架构解析
  • 消除异步的传染性(代数效应)
  • Java八种常见的设计模式
  • 【python画图】:从入门到精通绘制完美柱状图
  • 2025华中杯B题——AI实现
  • C++23 新特性:std::size_t 字面量后缀 Z/z
  • 台式机 thingsboard 部署 MQTT服务器端口查询及公开本地站点到公网,MQTT客户端配置
  • 循环队列的实现