特点
- 文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里
- 资源隔离:系统资源,像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
老版本安装,不推荐yum install dockeryum 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 /><br />进入本地地址,这里面存储了docker的数据
cd /var/lib/docker/
<a name="g1HCp"></a>
### 后续配置
<a name="sNE6p"></a>
#### IPv4 forwarding is disabled
启动警告:IPv4 forwarding is disabled,需要开启路由转发<br />
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
