天天看点

Docker安装部署简介官方网址一、安装安装Docker二、调优三、目录迁移四、日志调优五、业务命令Docker管理命令工作原理Docker为什么比VM快(2) docker利用的是宿主机的内核,而不需要Guest OS。

Docker安装部署

  • 简介
    • 诞生背景
    • Docker 介绍
      • 一个完整的Docker有以下几个部分组成:
  • 官方网址
  • 一、安装
    • 前提条件
  • 安装Docker
  • 二、调优
  • 三、目录迁移
  • 四、日志调优
  • 五、业务命令
  • Docker管理命令
  • 工作原理
  • Docker为什么比VM快
  • (2) docker利用的是宿主机的内核,而不需要Guest OS。

简介

诞生背景

一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。 作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验 . Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案。 环境配置如此麻烦,换一台机器,就要重来一次,费力费时。 很多人想到,能不能从根本上解决问题,软件可以带环境安装? 也就是说,安装的时候,把原始环境一模一样地复制过来。 开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。 开发需要清楚的告诉运维部署团队,用的全部配置文件+所有软件环境。 不过,即便如此,仍然常常发生部署失败的状况。 Docker镜像的设计,使得Docker得以打破过去"程序即应用" 的观念。 透过镜像(images)将作业系统核心除外,运作应用程式所需要的系统环境, 由下而上打包,达到应用程式跨平台间的无缝接轨运作。 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口

Docker 介绍

Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,

也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,

使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次封装,到处运行”。

Linux 容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。

将应用运行在 Docker 容器上面,而 Docker 容器在任何操作系统上都是一致的,

这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好, 大大简化了操作

一个完整的Docker有以下几个部分组成:

1.dockerClient客户端

2.Docker Daemon守护进程

3.Docker Image镜像

4.DockerContainer容器

总结:

Docker是解决运行环境和配置问题的软件容器 , 方便做持续集中并有助于整体发布的容器虚拟化技术

虚拟机技术与容器虚拟化技术

官方网址

官方网址 : https://www.docker.com

Docker社区官方:https://hub.docker.com/

一、安装

Docker支持以下的CentOS版本:CentOS 7 (64-bit) ,CentOS 6.5 (64-bit) 或更高的版本
           

前提条件

目前,CentOS 仅发行版本中的内核支持 Docker。

Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。

Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本

# 查看内核版本
uname -r 
           
Docker安装部署简介官方网址一、安装安装Docker二、调优三、目录迁移四、日志调优五、业务命令Docker管理命令工作原理Docker为什么比VM快(2) docker利用的是宿主机的内核,而不需要Guest OS。

安装Docker

# 安装镜像
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

# 安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要device-mapper-persistent-data 和 lvm2
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 设置稳定仓库(使用官方源地址(比较慢))
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 如果存在旧docker,卸载旧版本
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine
# 存储库中列出可用版本
yum list docker-ce --showduplicates | sort -r

# 安装选择的版本,我这里选的是19.03.13  
yum install docker-ce-19.03.13 docker-ce-cli-19.03.13 containerd.io

# 也可以安装最新版
yum -y install docker-ce

# 启动docker
systemctl start docker

# 设置开机自启
systemctl enable docker

           

二、调优

最好在服务部署的时候就干调优的事情,对服务影响最小

三、目录迁移

-- 关闭docker服务
systemctl stop docker
-- 创建迁移后的目录
mkdir -p  /home/jamelli/docker/data/lib
-- 复制原有docker数据到新目录
rsync -r -avz /var/lib/docker /home/jamelli/docker/data/lib
mkdir -p /etc/systemd/system/docker.service.d/
-- 创建docker 映射文件
vi /etc/systemd/system/docker.service.d/devicemapper.conf
保存内容>>
	[Service]
	ExecStart=
	ExecStart=/usr/bin/dockerd  --graph=/home/creationpoint/docker/data/lib/docker
        
-- 重新加载 docker
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
    
-- 确认docker 路径[Docker Root Dir 属性列]
docker info
-- 确认镜像是否还在
docker images
-- 删除历史docker文件
rm -rf /var/lib/docker/

           

四、日志调优

max-file:日志文件上限个数

max-size:日志文件上限大小

-- log 限制
    vim /etc/docker/daemon.json
    保存内容>>
        {
          "log-driver":"json-file",
          "log-opts": {"max-size":"500m", "max-file":"3"}
        }

           

五、业务命令

1.docker system df
	docker自身的内存占用
2.docker system prune
	docker system prune命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像
3.docker image
	查看docker镜像内容
4.docker info
	查看docker信息
5.docker stats
	查看容器运行内存cpu占用情况
6.docker update --restart=always 容器名称
	设置docker容器开机启动
7.less /var/lib/docker/containers/容器ID/容器ID-json.log
	docker 容器日志路径日志内容查询
8.docker logs --tail=10 -f 容器名称/容器id
	docker 容器日志内容实时查看

           

Docker管理命令

# 重新载入后台启动进程
systemctl daemon-reload

# 启动docker容器 ,每次关闭虚拟机/运服务器时需要启动( 重要!!! )
sudo service docker start

# 查看Docker容器状态
sudo service docker status (should see active (running))

# 运行hello-world镜像/测试Docker是否可以使用
sudo docker run hello-world
           

工作原理

Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上,

然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器。

容器,是一个运行时环境,就是我们前面说到的集装箱。

Docker为什么比VM快

(1) docker有着比虚拟机更少的抽象层。

由亍docker不需要Hypervisor实现硬件资源虚拟化,

运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。

因此在CPU、内存利用率上docker将会在效率上有明显优势。

(2) docker利用的是宿主机的内核,而不需要Guest OS。

因此,当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。

因而避免引寻、加载操作系统内核返个比较费时费资源的过程,

当新建一个虚拟机时,虚拟机软件需要加载Guest OS,返个新建过程是分钟级别的。

而docker由于直接利用宿主机的操作系统,则省略了返个过程,因此新建一个docker容器只需要几秒钟。