0x01 Docker的基本组成
- Docker Client 客户端:C/S架构,client发起请求,守护进程进行响应
- Docker Daemon 守护进程:相当于服务器
- Docker Image 镜像:容器的基石,层叠的只读文件系统,联合加载(bootfs,rootfs,addemacs,add Apache)
- 联合加载可以加载多种文件系统,但最终结果是对外只显示一个文件系统。
- Docker Container 容器:通过镜像启动,启动和执行阶段,在最上面加载一个可写的读写文件系统,它下面的文件系统都说只读
- Docker Registry 仓库:保存镜像,公有仓库:Docker Hub
0x02 docker容器相关技术
Namespaces:命名空间
- 提供系统资源的隔离:
- PID:进程隔离
- NET:管理网络接口
- IPC:管理跨进程通信访问
- MNT:管理挂载点
- 隔离内核和版本标识
Control groups:控制组
- 限制记录隔离进程所使用的物理资源的机制:
- 资源限制
- 优先级设定
- 资源计量
- 资源控制
- Docker容器能力:
- 文件系统隔离:每个容器都有自己的root文件系统
- 进程隔离:每个容器都运行在自己的进程环境中
- 网络隔离:容器间的虚拟网络接口和IP地址都是分开的
- 资源隔离和分组:使用cgroups将CPU和内存之类的资源独立分配给每个Docker容器。
- Docker安装关键:添加可用源地址:echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable" | sudo tee /etc/apt/sources.list.d/docker.list
- Centos7安装docker:
- yum install -y yum-utils device-mapper-persistent-data lvm2
- yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- yum-config-manager --enable docker-ce-edge
- yum-config-manager --enable docker-ce-test
- yum install docker-ce
- 配置国内镜像加速:
6、容器的基本操作:
-
查看docker版本:
-
查看docker信息:
-
镜像命令:
Docker images命令:显示本地主机上的镜像
-
-a:列出所有镜像
-q:只显示镜像id
--digests:显示镜像的摘要信息
--no-trunc:显示完整的镜像信息
Docker search命令:
-
Docker pull命令:下载镜像
-
Docker rmi命令:删除命令
-
容器命令:
新建并启动容器:docker run
-
列出全部容器:docker ps
-
删除容器:
-
停止容器:docker stop
强制停止:docker kill
重启:docker restart
退出容器:exit ctrl+p+q
-
启动守护式容器(后台):
-
后台启动容器,但由于没有程序运行,docker机制自动关闭容器。
创建一个不断运行的进程,这样docker就不会强制停止了
-
查看日志:
-
查看docker中的进程:
-
Docker exec:在容器中执行一个命令返回结果
-
Docker attach:进入容器:
-
-
从容器中拷贝数据到主机:
容器与主机建立共享文件夹:
-
自建dockerfile文件:
踩坑:ENV 定义时不能取名 PATH,否则会修改系统变量,导致系统命令无法运行
导入dockerfile时命令:docker build -f /root/Dockerfile -t docfiletest4:2.2 . 最后记得加个点