容器docker入门学习

这里写目录标题

容器

轻量级的虚拟机,更加节省资源(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
相关推荐
筑梦之路2 分钟前
如何对docker镜像存在的gosu安全漏洞进行修复——筑梦之路
运维·docker·容器
零点零一3 分钟前
在Ubuntu系统中安装和升级RabbitVCS
linux·运维·ubuntu
开开心心就好7 分钟前
实用电脑工具,轻松实现定时操作
python·学习·pdf·电脑·word·excel·生活
面包圈蘸可乐38 分钟前
论文学习:《创新编码策略的多类LncRNA亚细胞定位的集成深度学习框架》
人工智能·深度学习·学习
逢生博客1 小时前
将 DeepSeek 集成到 Spring Boot 项目实现通过 AI 对话方式操作后台数据
人工智能·spring boot·docker·deepseek·cherry studio·mcp 服务端·mcp 客户端
虾球xz1 小时前
游戏引擎学习第234天:实现基数排序
c++·学习·算法·游戏引擎
良许Linux1 小时前
如何系统地入门学习stm32?
stm32·单片机·学习
绵绵细雨中的乡音1 小时前
Linux-进度条小程序
linux·运维·服务器
_丿丨丨_1 小时前
Linux下 文件的查找、复制、移动和解压缩
linux·运维·服务器
xuhe22 小时前
使用xxxbase应付CRUD后端任务
linux·docker·crud·backend