什么是容器?
容器就是将软件打包成标准化单元,以用于开发、交付和部署。
- 容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。
- 容器化软件适用于基于Linux和Windows的应用,在任何环境中都能够始终如一地运行。
- 容器赋予了软件独立性 ,使其免受外在环境差异(例如,开发和预演环境的差异)的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突。
什么是Docker?
- Docker 是世界领先的软件容器平台。
- Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核 的cgroup,namespace,以及AUFS类的UnionFS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。 由于隔离的进程独立于宿主和其它的隔离的进
程,因此也称其为容器。Docke最初实现是基于 LXC. - Docker 能够自动执行重复性任务,例如搭建和配置开发环境,从而解放了开发人员以便他们专注在真正重要的事情上:构建杰出的软件。
- 用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
Docker容器的特点
- 轻量
在一台机器上运行的多个 Docker 容器可以共享这台机器的操作系统内核;它们能够迅速启动,只需占用很少的计算和内存资源。镜像是通过文件系统层进行构造的,并共享一些公共文件。这样就能尽量降低磁盘用量,并能更快地下载镜像。 - 标准
Docker 容器基于开放式标准,能够在所有主流 Linux 版本、Microsoft Windows 以及包括 VM、裸机服务器和云在内的任何基础设施上运行。 - 安全
Docker 赋予应用的隔离性不仅限于彼此隔离,还独立于底层的基础设施。Docker 默认提供最强的隔离,因此应用出现问题,也只是单个容器的问题,而不会波及到整台机器
为什么要用Docker
- 一致的运行环境
Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现 “这段代码在我机器上没问题啊” 这类问题 - 更快速的启动时间
可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间 - 隔离性
避免公用的服务器,资源会容易受到其他用户的影响 - 弹性伸缩,快速扩展
善于处理集中爆发的服务器使用压力 - 迁移方便
可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况 - 持续交付和部署
使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署
Docker基本概念
- 镜像(Image)
- 容器(Container)
- 仓库(Repository)
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等 。
容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间。前面讲过镜像使用的是分层存储,容器也是如此。
容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。
按照 Docker 最佳实践的要求,容器不应该向其存储层内写入任何数据 ,容器存储层要保持无状态化。所有的文件写入操作,都应该使用数据卷(Volume)、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此, 使用数据卷后,容器可以随意删除、重新 run ,数据却不会丢失。
命令:
启动Docker后台服务
- sudo systemctl start docker
重启Docker服务
- sudo systemctl restart docker
安装成功后可通过查看
- docker version
卸载Docker命令
- sudo yum remove docker-ce
- sudo rm -rf /var/lib/docker
查看本地镜像的IMAGE:
- docker images -q
- docker images ls
dokcer 启动容器:
docker run参数 镜像名称:tag执⾏的命令
参数说明:
- -i 保持和 docker 容器内的交互,启动容器时,运⾏的 命令结束后,容器依然存活,没有退出(默认是会退 出,即停⽌的)
- -t 设置参数“-t”可以为容器重新分配一个伪输入终 端,而设置参数“-d”则会在后台运行容器,并返回容 器ID。
- -d 后台运⾏容器
- --rm 容器在启动后,执⾏完成命令或程序后就销毁
- --name 给容器起⼀个⾃定义名称
- -p 宿主机:内部端口
查看所有容器:
- docker ps -a
停止容器:
- docker stop 容器ID docker container stop 容器ID或者名字
启动容器:
- docker start 容器名/容器 ID
删除容器:
- docker rm -f 容器名