Docker容器---Docker简介与原理

news/2024/6/3 18:16:18 标签: docker, 容器, linux, 运维

1. 概述

1.1 容器概念

       docker是一个容器,所谓容器,就是在隔离的环境运行的一个进程,如果进程停止,容器就会销毁。隔离的环境拥有自己的系统文件,ip地址,主机名等,kvm虚拟机,linux,系统文件。在Linux系统中,如果将容器和虚拟化化技术(如:VM虚拟机)做对比的话,容器就是一个更加轻量以及方便的一个虚拟机。

1.2 开发与运维

       在传统的软件设计过程中,会涉及到开发(开发人员)与线上(运维人员)两个问题,针对以上问题,传统的解决方法就是:开发人员开发完相关代码,然后打包(jar,war)发给运维人员,运维人员不仅需要负责相关包的部署,还需要在线上部署各种环境来保证程序的正常运行,这无疑给后期的维护和升级带来很多的问题,而且也会浪费很多时间。

       随着容器技术(docker)的出现,问题也得到进一步的改善,docker的目的则是:将我们开发人员所编写的代码,环境等东西一起打包(docker中称为“镜像”),然后上传到相关仓库(docker hub),运维人员只需要将这个镜像拿去部署使用即可,不需要考虑相关环境问题,可以大大节省时间和资源,甚至对于一般的部署上线,开发人员都可以做到。

1.3 虚拟化与容器

传统的虚拟化技术:
在这里插入图片描述
​ 在我们传统的虚拟化技术中,如果我们想要部署一个APP,需要在Linux中将我们想要的环境部署好,然后再部署我们的app,借助环境,将我们的app部署上去,这容易造成资源浪费,环境冲突等问题的出现。

容器化技术:
在这里插入图片描述
       容器化相当于虚拟化,只不过它所消耗的资源更加的少,更加轻便,而在我们的容器化技术中,我们将app和他所需要的环境进行打包形成镜像,每一个包都可以称为一个容器容器之间互相隔离,互不影响,这样子可以更加很好的利用系统资源,也可以很好的将应用部署发布。

2. Docker安装

docker_24">2.1 docker基本组成

在这里插入图片描述
镜像(image): 就好比一个个模板,可以通过这个模板来创建一个个服务,(你也可以这样子理解:镜像就是我们打的一个个可以运行的jar包,不管jar包里包括了什么,如环境等等),通过镜像可以创建多个容器

容器(container): 所谓容器,就是通过运行镜像来生成一个个容器容器就是我们经常使用的,包括启动,停止,删除等等,你可以将他看成一个简易的Linux系统,专门用来跑我们想跑的项目。

仓库(repository): 存放镜像的地方,可以理解为:类似于github里面的仓库,可以通过仓库拉取,发布镜像。

docker_32">2.2 docker安装

1.确认Linux版本: docker的安装需要在centos7以上版本才行
在这里插入图片描述

2.安装docker 可根据docker官网安装:https://docs.docker.com/engine/install/centos/

#1.清除相关docker(如果没有安装过的可以不执行,但建议都执行一下)
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
                  
#2.下载相关的yum源
yum install -y yum-utils

#(2.如果Linux是aliyun Linux2 的话,还需下载一个兼容yum源:yum install yum-plugin-releasever-adapter --disablerepo=* --enablerepo=plus)(可查看阿里云官方介绍:https://help.aliyun.com/document_detail/51853.html)

#3. 设置镜像仓库(设置成国内阿里云的)
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
#4. 更新yum索引(可做可不做)
yum makecache fast

#5. 安装docker(一直按Y即可)
yum install docker-ce docker-ce-cli containerd.io

#6. 启动docker
systemctl start docker

#7. 判断docker是否启动成功(出现版本信息即成功)
docker version

#8. 测试helloworld
docker run hello-world

在这里插入图片描述

docker_77">2.3 卸载docker

#1.卸载依赖
yum remove docker-ce docker-ce-cli containerd.io

#2.删除资源
rm -rf /var/lib/docker
rm -rf /var/lib/containerd

3. Run流程与Docker原理

3.1 Run流程

在这里插入图片描述

3.2 底层原理

       Docker是一个CS(Client-Service)架构的系统,当Docker运行时,他的守护进程会直接运行在我们的宿主机上,通过Socker从客户端访问,当Docker-Service接收到Docker-Client的指令,Docker就会执行这个命令。
在这里插入图片描述

docker_95">3.3 docker端口映射

在这里插入图片描述

4. Docker常用命令

官方文档地址: https://docs.docker.com/reference/

docker version		#查看docker版本信息
docker info			#查看docker详细信息

4.1 镜像命令

1. docker images 查看镜像信息

#查看镜像信息
docker images

#镜像信息
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    feb5d9fea6a5   6 months ago   13.3kB

REPOSITORY:镜像仓库源
TAG:镜像标签
IMAGE ID:镜像id
CREATED:镜像创建时间
SIZE:镜像大小

#命令可选后缀
 -a, --all             #查看所有镜像
 -q, --quiet           #只显示镜像ID

2. docker search 搜索镜像

docker search 镜像名		#搜索相关镜像

#命令可选后缀
 -f, --filter             #筛选镜像

3. docker pull 下载镜像

docker拉取下载镜像时,采用分层下载的方式拉取,就是:当你更新镜像版本时,docker不会清除镜像上一个版本的所有信息,而是保留新版本共有的一些内容,节省资源。

docker pull	镜像名		#拉取镜像
docker pull	镜像名:版本		#拉取指定的镜像版本,不指定则默认最新的

4. docker rmi 删除镜像

docker rmi -f id		#根据镜像ID删除镜像

4.2 容器命令

1. 新建容器并启动

#使用镜像启动容器
docker run [可选参数] image
docker run -it 镜像名 /bin/bash			#使用bash模式进入容器
#常用可选参数
--name			#容器名字
-d				#后台方式启动
-it				#使用交互模式运行(进入容器操作)
-p				#指定端口(常用方式:主机端口映射到容器端口)

2. 查看正在运行的容器

docker ps			#查看正在运行的容器
docker ps -a		#查看正在运行和最近运行的容器
docker ps -n=#显示?个最近创建的容器

3. 退出容器

exit		#直接停止容器并退出(交互式运行容器
Ctr+P+Q		#容器不停止退出

4. 删除容器

docker rm 容器ID			#删除容器

5. 启动与停止容器

docker start 容器id				#启动容器
docker restart 容器id				#重启容器
docker stop 容器id				#停止容器
docker kill 容器id				#强制停止容器

4.3 其他命令

1. 后台启动

注意: 在使用docker -d 来让容器后台启动时,会出现一个bug,即:容器自己停止。因为docker容器后台启动时,他需要一个前台进程来使用它,如果没有相对应的前台进程,它会认为当前没服务来使用它了,然后他就自己挂掉了。

docker -d 容器id			#后台启动容器

2. 查看日志

docker logs -tf (--tail 数字) 容器id			#查看日志(显示日志条数)

3. 查看容器的进程信息

docker top 容器id			#查看容器的进程信息

4. 查看镜像的元数据

docker inspect 容器id

5. 进入当前正在运行的容器

docker exec -it 容器id bashShell			#以交互式的方式进入容器(相当于另开一个容器终端)
docker attach 容器id						#进入容器正在执行的终端,不打开新的终端

6. 从容器中拷贝文件到外面

docker cp 容器id:文件路径

docker_244">4.4 docker命令图

在这里插入图片描述


http://www.niftyadmin.cn/n/1530004.html

相关文章

Docker容器---镜像原理以及创建

1. Docker镜像原理 1.1 什么是镜像 镜像时一种轻量级,可执行的独立软件包,用来打包软件运行环境和基于运行运行环境开发的软件,包含某个软件运行时需要的代码,环境,库等等。(用Java来说就是:在…

Docker容器---数据挂载以及网络

1. 容器数据卷 1.1 定义 这对于数据库,配置文件等一些需要持久性的东西来说,这会变得非常不方便,而容器数据卷就是为了解决我们这个问题的。 容器数据卷主要是将我们docker容器里面的数据进行备份与挂载,将容器里的一些重要数据挂…

docker容器---docker-compose编排

1. Docker Compose 简介 随着微服务以及分布式的飞速发展,一个分布式微服务系统里包含了许许多多的微服务,每一个服务都是一个单独的进程,如果我们用Docker来将微服务进行部署的话,在服务管理上就会出现一些麻烦,比如&…

Sentinel服务调控---Sentinel简介与入门

1. 什么是Sentinel Sentinel是SpringCloud Alibaba的一个开源服务调控组件,主要以流量作为切入点,从流量控制,熔断降级,系统负载监控等方面来对服务进行调整与控制,作用与Hystrix类似,但Sentinel的功能&…

Sentinel服务调控---Sentinel常用规则介绍与测试

1. Sentinel界面介绍 Sentinel界面主要分为功能区以及展示区,左边的主要是每个服务相对应的服务调控规则,如:流控,熔断,热点,系统规则等,而右边则是展示区,主要展示相对应功能的观察…

Sentinel服务调控---Sentinel规则持久化(待更新)

1 简述 在目前的Sentinel中,如果我们重启了服务或者sentinel本身的话,相对应的配置规则会消失,我们可以使用nacos或者MySQL来对配置规则信息进行持久化,常见的方法有三种: 1.使用nacos单向持久化(就是要先…

Seata事务管理---分布式事务详解

1 什么是事务 事务,一般指数据库事务,就是将多条SQL语句一起执行的功能,就称为一个数据库事务。数据库事务可以确保该事务范围内的所有操作都可以全部成功或者全部失败。 数据库事务具有4个属性,分别是:原子性&#xf…

Seata事务管理---Seata简介

1 什么是Seata Seata是SpringCloud Alibaba开发出的一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT 、TCC 、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。可以很好的解决分布式系统中事…