【Linux】【Services】【Docker】应用
1. Docker应用:
镜像:包含了启动Docker容器所需要的文件系统层级及其内容;基于UnionFS采用分层结构实现;
bootfs,rootfs
registry:保存docker镜像及镜像层次结构和元数据;
repository:由具有某个功能的镜像的所有相关版本构成的集合;
index:管理用户的账号、访问权限、镜像及镜像标签等等相关的;
graph:从registry中下载的Docker镜像需要保存在本地,此功能即由graph完成;
/var/lib/docker/graph,
与镜像相关的命令:
images
search
pull
push
login
logout
创建镜像:commit, build
删除本地镜像:rmi
容器:
独立运行的一个或一组应用,以及它们运行的环境;
命令:
run, kill, stop, start, restart,log,export, import
启动方法:
通过镜像创建一个新的容器;run
启动一个处于停止状态的容器;start
run命令:
--name= Assign a name to the container
-i, --interactive=false Keep STDIN open even if not attached
-t, --tty=false Allocate a pseudo-TTY
--net=default Set the Network for the container
-d, --detach=false Run container in background and print container ID
步骤:
检查本地是否存在指定的镜像,不存在则从registry下载;
利用镜像启动容器
分配一个文件系统,并且在只读的镜像层之外挂载一个可读写层;
从宿主机配置的网桥接口桥接一个虚拟接口给此容器;
从地址池中分配一个地址给容器;
执行用户指定的应用程序;
程序执行完成后,容器即终止;
对于交互式模式启动的容器,终止可使用exit命令或ctrl+d组合键;
logs命令:获取一个容器的日志,获取其输出信息;
attach命令:附加至一个运行中的容器;
Docker Hub:
registry有两种:
docker hub:
private registry:
(1) 安装docker-registry程序包;
(2) 启动服务:
systemctl start docker-registry.service
(3) 建议使用nginx反代:使用ssl,基于basic做用户认证;
docker端使用私有仓库:
(1) 配置文件 /etc/sysconfig/docker
ADD_REGISTRY='--add-registry 172.16.100.68:5000'
INSECURE_REGISTRY='--insecure-registry 172.16.100.68:5000'
(2) push镜像
(a) tag命令:给要push到私有仓库的镜像打标签;
docker tag IMAGE_ID REGISRY_HOST:PORT/NAME[:TAG]
(b) push命令:
docker push REGISRY_HOST:PORT/NAME[:TAG]
(3) pull镜像
docker pull REGISRY_HOST:PORT/NAME[:TAG]
Docker的数据卷:
Data Volume
数据卷是供一个或多个容器使用的文件或目录,有多种特性:
可以共享于多个容器之间;
对数据卷的修改会立即生效;
对数据卷的更新与镜像无关;
数据卷会一直存在;
使用数据卷的方式:
(1) -v /MOUNT_POINT
默认映射的宿主机路径:/var/lib/docker/volumes/
(2) -v /HOST/DIR:/CONTAINER/DIR
/HOST/DIR: 宿主机路径
/CONTAINER/DIR :容器上的路径
(3) 在Dockerfile中使用VOLUME指令定义;
在容器之间共享卷:
--volumes-from=[] Mount volumes from the specified container(s)
后跟容器名;
删除卷:
docker rm -v CONTAINER_NAME
删除容器的同时删除其卷;
docker run --rm选项,表示容器关闭会被自动删除,同时删除其卷(此容器为最后一个使用此卷的容器时);
备份和恢复:
备份:
docker run --rm --volumes-from vol_container -v $(pwd):/backup busybox:latest tar cvf /backup/data.tar /data
docker的监控命令:
ps命令:
-a
images命令:
查看当前主机的镜像信息;
stats命令:
容器状态统计信息,实时监控容器的运行状态;
inspect命令:
查看镜像或容器的底层详细信息;
-f, --format
{{.key1.key2....}}
top命令:
用于查看正在运行的容器中的进程的运行状态;
port命令:
查看端口映射;
监控工具:google/cadvisor镜像