Welcome to my gitee

DOCKER的相关内容

1.什么是容器?

  容器是对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。简单地说,一个容器包含了完整的运行时环境:除了应用程序本身之外,这个应用所需的全部依赖、类库、其他二进制文件、配置文件等,都统一被打入了一个称为容器镜像的包中。通过将应用程序本身,和其依赖容器化,操作系统发行版本和其他基础环境造成的差异,都被抽象掉了。

2.虚拟机对容器

  传统无力服务器和虚拟机操作系统本身占用一定资源,CPU 内存利用率长期低于40%,存在大量浪费。容器进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 容器技术比虚拟机技术更为轻便、快捷。

 

 

 3.传统部署方式

  开发交付的是代码安装包,安装包对运行环境依赖有严格要求,开发和生产环境的不一致会随着应用的复杂性而加剧

  从单体应用迁移到微服务架构,对应用的部署要求更高

  每个服务使用的技术栈 和依赖的外部服务千差万别

  如果使用虚拟化方式部署,需要为每个服务创建独立的操作系统和镜像

  众多操作系统,以及系统镜像的维护是一个重大挑战

 

 

 4.容器的部署方式

  容器提供了一种更简洁的方式,容器镜像包含代码以及代码运行所以李爱的全部内容

  开发团队交付的是可直接运行的镜像,而不是代码安装包

  应用团队只需要从开发交付的镜像创建容器并运行

  运维人员只需要管理运行容器的基础设施和容器的运行

 

 

 5.容器的优势

  最大的优势是不可变的,保证所有环境的一致性,生产环境出现问题时,开发人员可以在本地运行同样版本的镜像来定位问题,不存在环境问题引发的工作量

  相比传统虚拟机更加的轻量化

  秒级响应,新版本一旦出现问题可快速回滚至上一版本。

 

 

6.什么是DOCKER?

  Docker是一个开源项目,诞生于2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的Go语言实现。项目后来加入了Linux 基金会,遵从了Apache 2.0 协议,项目代码在GitHub (https://github.com/docker/docker) 上进行维护。

  Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术。在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。

  用户操作Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。

7.仓库,容器,镜像

  1)仓库Registry仓库是集中存放镜像文件的场所.Docker用Registry来保存用户构建的镜像。Registry分为公共和私有两种。Docker公司运营公共的Registry叫做Docker Hub。用户可以在Docker Hub注册账号,分享并保存自己的镜像(说明:在Docker Hub下载镜像巨慢,可以自己构建私有的Registry)。

  2)镜像是构建Docker的基石。用户基于镜像来运行自己的容器。镜像也是Docker生命周期中的“构建”部分。镜像是基于联合文件系统的一种层式结构,由一系列指令一步一步构建出来。Docker 镜像相当于一个只读的模板。镜像可以用来创建 Docker 容器

  3)容器Docker 利用容器来运行应用。容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。容器是基于镜像启动起来的,容器中可以运行一个或多个进程。我们可以认为,镜像是Docker生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段。容器基于镜像启动,一旦容器启动完成后,我们就可以登录到容器中安装自己需要的软件或者服务。(可以这样理解,从阿里云拉下来的mysql其实就是镜像文件)

 

8.安装DOCKER

  yum install docker

9.docker 的常见命令

  启动/停止/重启docker systemctl start/stop/restart docker

  查看docker状态systemctl status docker

  查看docker的概要信息 docker info

  查看docker版本信息 docker --version

10.操作镜像

  查看docker本地的镜像 docker images

  搜索一个镜像docker search mysql

  拉取镜像docker pull centos:7(一般用的不多,我感觉)

  上传镜像 docker push 镜像名(到目前为止没用过)

  删除docker镜像: docker rmi  镜像ID  #删除镜像需要先删除该镜像生成的容器

  查看镜像或容器详细信息docker inspect 容器或镜像ID

 

 

 11.启动容器

  上课使用启动容器的方法如下:(也可以使用:sudo docker start +容器ID/容器名[支持模糊查询]})

docker run -d --name=nginx-55 -p 97:80 -v nginx-vol:/usr/share/nginx/html nginx

  创建容器:docker run

  参数:

  -i :表示交互式

  -t :表示容器启动后会进入其命令行终端,加入这两个参数后,加入这两个参数后,容器创建就能登录进去,即分配一个伪终端

  --name:为创建的容器命名

  -v :表示目录映射关系(前者是宿主机目录绝对路径,后者是映射到宿主机上的目录),可以使用多个-v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。

  -d :在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器就不会自动登录容器,如果只加-i -t两个参数,创建容器后就会自动进去容器).

  -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口.可以使用多个 -p 做多个端口映射

 后台启动容器,创建守护式容器:docker run -d 镜像名: tag | 镜像ID

 进入容器,登录守护式容器:docker exec -it 容器ID/容器名称 /bin/bash

 启动容器并进入,创建交互式容器::docker run -it --name=容器名称 镜像id|镜像名:tag

 退出当前容器:exit

 查看运行的容器:docker ps

 查看所有容器,包括运行和非运行: docker ps -a

 

 

  停止容器:docker stop 容器id|容器名称

 启动停止的容器; docker start 容器id|容器名称

 删除容器:docker rm 容器id|容器名称 #删除一个停止的容器

 docker rm -f 容器id|容器名称 #强制删除一个容器,可以是运行状态

 删除所有容器:docker rm -f (docker ps -a | awk '{print 1}')

12.宿主机和容器之间复制文件

  宿主机复制文件到容器:docker cp 宿主机文件  容器名称:容器路径

  容器中复制文件到宿主机:docker cp 容器名称:容器路径 宿主机目录

13.mysql容器部署

  拉取MySQL镜像docker pull mysql:5.7

  创建容器docker run -d --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

  登录MySQL容器docker exec -it mysql /bin/bash

posted @ 2022-02-09 19:28  提一壶月光  阅读(23)  评论(0编辑  收藏  举报
1