写点什么

极客时间 - 运维进阶训练营 - 第一周作业

作者:dog_brother
  • 2022-10-23
    北京
  • 本文字数:1374 字

    阅读完需:约 5 分钟

梳理各 Namespace 的作用

引申问题

1.怎么样保证每个容器都有不同的文件系统并且能互不影响?

2.一个 docker 主进程内的各个容器都是其子进程,那么实现同一个主进程下不同类型的子进程?各个进程间通信能相互访问(内存数据)吗?

3.每个容器怎么解决 IP 及端口分配的问题?

4.多个容器的主机名能一样吗?

5.每个容器都要不要有 root 用户?怎么解决账户重名问题?


namespace 是 Linux 系统的底层概念,容器技术是在一个进程内实现运行指定服务的运行环境,并且还可以保护宿主机内核不受其他进程的干扰和影响,如文件系统空间、网络空间、进程空间等,目前主要通过以下技术实现容器运行空间的相互隔离:



使用 apt/yum/ 二进制安装指定版本的 Docker

rpm 包下载地址:

官网下载地址:

https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

阿里镜像下载地址:

https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/

二进制安装包:

https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/static/stable/x86_64/

apt/yum 在线安装:

清华大学镜像源:https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/

阿里云镜像源:https://developer.aliyun.com/mirror/docker- ce?spm=a2c6h.13651102.0.0.3e221b11xaRalQ

熟练使用 Docker 数据卷

引申问题

我们知道镜像创建后是不可变的,而基于镜像创建的容器是可变的,那么,容器的运行,是如何做到可变而且不影响原有镜像的?

Docker 容器如何做到数据持久化,即在容器内修改后,并且即使容器停止运行,数据修改依然生效并且在宿主机上可见?

Docker 镜像分层设计原理

docker 利用 Copy On Write(COW),进行容器数据持久化


方法一:数据目录挂载

docker run -it -v [host_dir:container_dir] [image_name] [cmd]
复制代码

如何查看映射关系

$ docker inspect [container]"Mounts": [    {        "Type": "volume",        "Name": "myvol2",        "Source": "/var/lib/docker/volumes/myvol2/_data",        "Destination": "/app",        "Driver": "local",        "Mode": "",        "RW": true,        "Propagation": ""    }],
复制代码


参考文档:https://docs.docker.com/storage/bind-mounts/


方法二:volume(数据卷)

volume 的创建、查看、删除

$ docker volume create [volume-name]$ docker volume ls$ docker volume rm [volume_name]
复制代码

而 volume 实际的挂载路径,可以通过 docker volume inspect [volume_name]查看

$ docker volume inspect my-vol[    {        "Driver": "local",        "Labels": {},        "Mountpoint": "/var/lib/docker/volumes/my-vol/_data",        "Name": "my-vol",        "Options": {},        "Scope": "local"    }]
复制代码

基于 volume 创建容器,并查看挂载映射

$ docker run -it -v [volume_name:container_dir] [image_name] [cmd]$ docker inspect [container_id]"Mounts": [    {        "Type": "volume",        "Name": "myvol2",        "Source": "/var/lib/docker/volumes/myvol2/_data",        "Destination": "/app",        "Driver": "local",        "Mode": "",        "RW": true,        "Propagation": ""    }],
复制代码

参考文档:https://docs.docker.com/storage/volumes/

熟练使用 Docker 的 bridge 和 container 模式网络


发布于: 刚刚阅读数: 4
用户头像

dog_brother

关注

还未添加个人签名 2019-07-30 加入

还未添加个人简介

评论

发布
暂无评论
极客时间 - 运维进阶训练营 - 第一周作业_Docker 镜像_dog_brother_InfoQ写作社区