对docker的理解
docker 是linux容器的管理引擎。
docker提供隔离的运行环境。文件系统隔离、网络隔离、进程好隔离、进程间通信
隔离。
docker容器分类
1、系统类容器 ubuntu、CentOs、Debian等操作系统容器
2、应用容器 2048应用容器
3、存储类容器 MySql、MongoDB容器
Docker依赖的Linux内核特性
Namespaces命名空间、Controlgroups(cgroup)控制组
1、Namespaces命名空间:提供系统资源的隔离(进程、文件系统、网络...)
PID(ProcessID) 进程隔离
NET(NetWork) 管理网络接口
IPC(InterProcess Communitication) 管理跨进程通信的访问
UTS(Unix Timesharing System) 隔离内核和版本标识
MNT(Mount) 管理挂载点(文件系统)
2、Control Groups控制组:用来分配资源
资源限制
优先级设定
资源计量
资源控制
Docker容器的能力
文件系统隔离:每个容器都有自己的root文件系统
进程隔离:每个容器都运行在自己的进程环境中
网络隔离:容器间的虚拟网络接口和IP地址都是分开的
资源隔离和分组:使用cgroups将CPU和内存之类的资源独立分配给每个Docker容器
Docker的C/S模式
Docker是以客户端和守护进程的模式运行的
Docker的C/S模式通过socket链接
unix:///var/run/docker.sock
docker默认的客户端与守护进程链接的方式
tcp://host:port
fd://socketfd
Docker的使用方法
1、使用非root用户,好处是每次使用docker命令可以不再以root的身份运行
sudo groupadd docker
添加docker用户组
sudo gpasswd -a ${USR} docker
将当前用户添加进docker组中
sudo service docker restart
重新启动docker的用户组
2、查看宿主主机收否运行docker
ps -ef | grep docker
3、service管理命令
sudo service docker start
启动docker服务
sudo service docker stop
停止docker服务
sudo service docker restart
重启docker服务
4、docker的启动选项
docker -d [OPTIONS]
-d
以守护形式运行
5、与docker运行相关的选项:
-D, --debug=false
debug模式的开启
-e, --exec-drive="native"
docker运行时使用的驱动、模式
-g, --graph="/var/lib/docker"
docker的目录
--icc=true
-l, --log-level="info"
日志级别
--label=[]
-p, --pidfile="/var/run/docker.pid"
进程id
6、ubuntu镜像下载以及容器的创建和使用
docker pull ubuntu
下载官方的最新版本镜像
docker pull ubuntu:$VersionID
下载制定版本的镜像
docker run -it --name $ContainerName ubuntu /bin/bash
创建一个 容器并进入-i
格式化输出 -t
生成一个伪终端与本地终端绑定 --name
制定容器名称
docker start $ContainerName
启动一个已有的容器
docker stop $ContainerName
停止一个正在运行的容器
docker exec -i -t $ContainerName /bin/bash
进入一个正在运行的容器
7、docker常用的一些命令
docker ps
查看正在运行的容器
docker ps -a
查看已有的容器(包括正在运行和已经停止运行的器)
docker search $Image:$VersionID
在官方的仓库中搜索目标镜像
docker rm $ContainerName
删除一个没有运行的容器(如果要删除的容器正在运行,要使用stop命令先停止容器运行再删除)
docker rm -v $ContainerName
删除容器是连同与容器绑定的数据卷一并删除
docker rmi $Image
删除一个镜像
docker --help
使用docker命令的帮助文档可以快速的查找需要的参数
docker version
查看当前使用的docker的版本信息
docker inspect $ContainerName/$Image
查看容器或者镜像的详细数据信息(Json格式)
docker cp /LocalFilePath $Container:/ContainerFilePath
将宿主主机指定路径的文件拷贝到容器指定文件路径
docker cp $Container:/ContainerFilePath /LocalFilePath
将容器的指定路径的文件拷贝到宿主主机的指定文件路径
docker inspect -- format'{{.NetworkSettings.IPAddress}}'$ContainerName/$ContainerID
查看容器的ip地址