Docker ----基本管理

一.Docker 介绍

【1】.Docker

Docker 是一个开源的应用容器引擎:让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。是一个轻量级的“虚拟机”,容器是完全使用沙箱机制,相互之间不会有任何接口。

【2】.Docker与虚拟机的区别

相同点:
1.可在不同的主机之间迁移
2.都具备root的权限
3.都可以远程操作和控制
4.都有备份,回滚操作
不同点:
1.操作系统上:
			**docker**:在性能上有优势,可以轻易的运行多个操作系统;
             虚拟机:可以安装任何系统,但是性能不及容器。
2.原理:
docker:和宿主机共享内核,所有容器运行在容器引擎之上,容器并非一个完整的操作系统,所有容器共享操作系统,在进程级进行隔离。
虚拟机:每一个虚拟机都建立在虚拟的硬件之上,提供指令级的虚拟,具备一个完整的操作系统。
3.优点:
docker:高效、集中。一个硬件节点可以运行数以百计的的容器,非常节省资源,QoS 会尽量满足,但不保证一定满足。内核由提供者升级,服务由服务提供者管理。
虚拟机:对操作系统具有绝对权限,对系统版本和系统升级具有完全的管理权限。具有一整套的的资源:CPU、RAM 和磁盘。QoS 是有保证的,每一个虚拟机就像一个真实的物理机一样,可以实现不同的操作系统运行在同一物理节点上。
4.缺点:
docker:对内核没有控制权限,只有容器的提供者具备升级权限。只有一个内核运行在物理节点上,几乎不能实现不同的操作系统混合。容器提供者一般仅提供少数的几个操作系统。
虚拟机:每一台虚拟机都具有更大的负载,耗费更多的资源,用户需要全权维护和管理。一台物理机上能够运行的虚拟机非常有限。

【3】.Docker 的使用场景

打包应用程序简化部署
可脱离底层硬件任意迁移

【4】.核心概念

镜像,容器,仓库

二.centos安装Docker环境

【1】.Centos 安装Docker 的两种方式

使用 curl 获得 Docker 的安装脚本进行安装;
使用 yum 仓库来安装 Docker(推荐使用!!!)。

【2】.安装部署19版的docker

【1】 安装依赖包
yum install yum-utils device-mapper-persistent-data lvm2 -y

【2】 设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

【3】 安装Docker-CE社区版本
 yum install docker-ce -y

【4】 关闭核心防护
setenforce 0
### 永久关闭防火墙(网络资源控制时,暂时不关闭)
vim /etc/sysconfig/selinux
SELINUX=disabled

【5】 启动docker
systemctl start docker.service
systemctl enable docker.service

【6】查看docker存放的位置和环境变量(默认能识别的路径)
which docker
/usr/bin/docker
echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin

【3】.镜像加速(环境优化)

此操作会让我们下载镜像时,速度会有明显的加速
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://0eu67kas.mirror.aliyuncs.com"]
}
EOF

### /etc/docker/生成一个daemon.json
### 重新加载进程
systemctl daemon-reload
systemctl restart docker

【4】.网络优化

//数据转换
vim /etc/sysctl.conf	### 末尾添加
net.ipv4.ip_forward=1

sysctl -p

service network restart
systemctl restart docker

这样Docker的基本环境搭建好了 !~!

三.镜像的基本命令

【1】查看版本

docker version

【2】搜索镜像

docker search 镜像名
docker search nginx

【3】下载镜像

docker pull 镜像
 docker pull nginx
 
 ## 下载后存在在 cd /var/lib/docker/image/overlay2/
[root@localhost overlay2]# ls
distribution  imagedb  layerdb  repositories.json

【4】查看已经下载的镜像

docker images

【5】获取镜像信息

docker inspect 镜像的ID

【6】创建镜像新标签

docker tag 镜像标签 新的标签
docker tag nginx:latest nginx:new

【7】删除镜像

docker rmi 镜像:标签
docker rmi nginx:new 

【8】把镜像存放到指定的路径或目录或文件下

docker save -o /路径/文件名 镜像名称:标签
docker save -o /opt/nginx nginx:latest

【9】载入镜像(前提镜像删除后)

docker load < 文件名
docker load < nginx

四.容器的基本命令

【1】创建容器

docker create -it 镜像名称 /bin/bash
-i:容器的标准输入保持打开
-t:让docker分配一个伪终端
docker create -it nginx:latest /bin/bash

【2】查看容器

docker ps -a
// -a:列出最近一次启动的容器

【3】启动容器

docker start 容器ID
docker start 0660ae2f54b8

【4】停止容器

docker stop 容器ID

【5】进入容器

第一种:docker run -it 镜像名称 /终端
docker run -it nginx:latest /bin/bash
root@6d339ab9beec:/# ls
bin   dev  home  lib64	mnt  proc  run	 srv  tmp  var
boot  etc  lib	 media	opt  root  sbin  sys  usr

// 退出容器:exit
第二种:docker exec -it 容器ID /终端(容器要在开启状态)
docker exec -it 0660ae2f54b8 /bin/bash
root@0660ae2f54b8:/# ls
bin   dev  home  lib64	mnt  proc  run	 srv  tmp  var
boot  etc  lib	 media	opt  root  sbin  sys  usr

【6】导出容器

docker export 容器ID > 文件名
docker export 0660ae2f54b8 > nginx_a

【7】导入容器

cat 文件名 | docker import - 镜像
只会生成镜像,不会创建容器
docker import - nginx:web

【8】删除容器

docker rm 容器ID