特点

  • 文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里
  • 资源隔离:系统资源,像CPU和内存等可以分配到不同的容器中,使用cgroup
  • 网络隔离:每个进程容器运行在自己的网络空间,虚拟接口和IP地址
  • 日志记录:Docker将会收集和记录每个进程容器的标准流( stdout/stderr/stdin ),用于实时检索

或批量检索

  • 变更管理:容器文件系统的变更可以提交到新的镜像中,并可重复使用以创建更多的容器。无需使用

模板或手动配置

  • 交互式shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell

    优点

  • 与虚拟机相比,没有自己的os(虚拟机操作系统)而是使用share os,因此效率更高

    核心技术

    Namespace

    实现Container的进程、网络、消息、文件系统和主机名的隔离

    Cgroup

    实现对资源的配额和度量,Cgroup的配额,可以指定使用的cpu个数,内存大小等

    安装

    https://docs.docker.com/engine/install/centos/
    下面的三种方式都可以安装docker
    老版本安装,不推荐

    1. yum install docker
    2. yum install docker-engine

    上面的两种方式都是在安装老版本,如果要安装新版本,可以通过以下方式卸载 ``` yum list installed|grep docker yum -y remove …

// 看情况可以删除docker目录 rm -rf /var/lib/docker

再安装新版本

// 安装依赖 yum install -y yum-utils // 更新yum仓库地址 yum-config-manager —add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo // 安装docker,命令行,容器接口相关包 yum install docker-ce docker-ce-cli containerd.io -y

启动docker并且设置开机启动,&&表示执行完前一语句之后再执行后一语句

systemctl start docker && systemctl enable docker

docker会自动修改ip_forward的值,此时查看ip_forward可以看到已经被修改

cat /proc/sys/net/ipv4/ip_forward

查看docker版本

docker version // 查看基本信息 docker info | more

可以找到docker的镜像地址与本地存储地址<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/1167085/1634050678168-c6811c31-1b8a-4b42-ad72-864161f3a6e3.png#height=112&id=k6r4f&margin=%5Bobject%20Object%5D&name=image.png&originHeight=112&originWidth=565&originalType=binary&ratio=1&size=9793&status=done&style=none&width=565)<br />进入本地地址,这里面存储了docker的数据

cd /var/lib/docker/

<a name="g1HCp"></a>
### 后续配置
<a name="sNE6p"></a>
#### IPv4 forwarding is disabled
启动警告:IPv4 forwarding is disabled,需要开启路由转发<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/1167085/1637419162123-f70a97a5-2448-49dd-86c8-61ec18c077c9.png#clientId=u3830890c-1a88-4&from=paste&height=29&id=ud9d37810&margin=%5Bobject%20Object%5D&name=image.png&originHeight=29&originWidth=417&originalType=binary&ratio=1&size=22809&status=done&style=none&taskId=u5f043f35-b3e0-4488-8d95-6117d1646f1&width=417)

vim /etc/sysctl.conf

添加内容:

net.ipv4.ip_forward=1

重启

systemctl restart network

systemctl restart docker

还可以通过/proc/sys/net/ipv4/ip_forward临时修改

vim /proc/sys/net/ipv4/ip_forward

<a name="uwqnC"></a>
#### 存储路径
查看docker目录

docker info | grep ‘Docker Root Dir’

修改配置文件

vim /etc/docker/daemon.json

添加data-root

{ “registry-mirrors”: [“http://hub-mirror.c.163.com“], “data-root”: “/home/hellxz/docker-home” }

重启

sudo systemctl restart docker

<a name="dIaRA"></a>
#### 容器中使用docker

-v /var/run/docker.sock:/var/run/docker.sock \ -v $(which docker):/usr/bin/docker \

<a name="kV9CM"></a>
#### 容器中使用docker-compose

-v /usr/bin:/usr/bin -v $(which docker-compose):/bin/docker-compose


<a name="DrfGW"></a>
### 卸载
[https://www.cnblogs.com/kingsonfu/p/11582495.html](https://www.cnblogs.com/kingsonfu/p/11582495.html)<br />停止服务

systemctl stop docker

删除docker保存目录

docker info | grep ‘Docker Root Dir’

查看已经安装的软件

yum -y remove $(yum list installed |grep docker | awk ‘{print $1}’)

yum list installed |grep docker // 删除上面查到的 yum -y remove docker.x86_64

删除rpm包,删除下面查询的目录

rpm -qa |grep docker ```

引用

https://www.bilibili.com/video/BV1h5411P7Nm?spm_id_from=333.999.0.0