docker结构与命令

主宰稳场 提交于 2020-02-13 02:21:21

1. docker与虚拟机的区别优点

docker可以完成虚拟机可以完成的所有功能,并且Vm所有虚拟机在创建的时候会虚拟独立的系统内核,而docker所有的虚拟机共用主机的系统内核,节约了虚拟环境系统部署的资源,将更好的性能提供给了应用,所以docker占用资源小,比虚拟机开启更快,更方便。 

 

虚拟机的Guest层,还有Hypervisor层在Docker上已经被Docker Engine层所取代,在这里我们需要知道,Guest OS 是虚拟机安装的操作系统,是一个完整的系统内核,另外Hypervisor可以理解为硬件虚拟化平台,它在后Host OS以内核驱动的形式存在。

2.docker结构与组成

客户端服务端模式可单机可分布式部署 服务端负责docker镜像的构建,运行,发布.

2.1 The Docker daemon

接收Docker API请求和管理docker的对象例如镜像、容器、网络、存储卷等,

也可以和其他的Docker daemon通信管理docker的service

2.2 The Docker client

可以和多个daemon进行通信,发送指令给daemon, 用户和daemon交互主要方式。

2.3 Docker registries

存储docker镜像,Docker Cloud是一个公共仓库,是docker默认的仓库。

可以搭建私有仓库。

docker Cloud有docker可信仓库。

拉取,推送镜像到设定仓库。

Docker store允许用户购买和出售自己的镜像,也可以免费发布自己的镜像。

2.4 Docker objects

在使用docker的时候,将会涉及到创建、使用镜像、容器、网络、卷、插件或者其他的对象。

2.基础命令

 

docker search busybox 查找镜像

docker pull busybox  拉取镜像
docker run busybox 拉取并启动运行(运行完停止)
docker info 查看docker信息

容器生成仓库镜像ID

docker commit comtainerID  imageID

从镜像创建并运行容器 (类似于create and start)

docker run -itd --name b1bb 91

镜像压缩成tar包

docker save imageid >box.tar

删除所有docker容器

docker rm -f  $(docker ps -a -q)

删除所有镜像

docker rmi $(docker images -q)

加载tar包到镜像文件

docker load <box.tar

docker容器导入到tar包

docker export containerID >box.tar

把容器tar包导入到镜像

cat box.tar |docker import - 镜像名字:TAG
用该镜像启动容器命令
docker run -it --name b2  镜像名字:TAG  /bin/sh

给镜像打tag,并生成新镜像

docker tag imageid vker/test:0.2

推送镜像到远程仓库

注册docker仓库
cloud.docker.com

1.登陆dockerc仓库

docker login

2.push

docker push vker/test:0.2

3.docker账号退出

docker logout

docker 创建运行run和create

docker run 
-i 打开一个标准输入
-t 打开一个软终端
--name 名字 定义容器名字
docker run -it --name hello1 containerID

docker create --name hello2 containerID

查看容器

docker pa
docker ps -a 查看所有包括停止的容器

启动容器

docker start containerID

进入容器

docker attach  containerID

查看容器实时情况cpu,mem

docker stats

docker stats -a 查看所有容器
docker stats containerID 查看单个容器
docker top containerID

查看文件变化情况

docker diff containerID
C 改变
A 添加
D 删除

拷贝文件

docker cp  aa container:/root/

查看docker相关事件

docker events

查看镜像停止

docker wait containerID

查看组成信息

docker inspect  containerID|imageID

查看容器日志

docker logs containerID

修改容器配置参数

修改ram
docker update -m 1024m  --memory-swap -1 containerID

修改端口映射

docker run -it -p 80:8080 --name name container
80为宿主机端口
容器端口为8080端口

docker port ae

生成镜像

除了docker commit 还有
docker build  -t vker/box:0.3 .
.是当前目录有dockerFile

3 仓库

3.1 公有仓库

最大的公开仓库是Docker Hub

演示提交镜像到Docker Hub

国内Docker Hub仓库镜像服务器,同时也可以上传自己的镜像

阿里https://dev.aliyun.com/search.html

3.2 私有仓库

docker容器的方式进行部署,客户端添加私有仓库地址。

192.168.1.109为客户端

192.168.1.110为服务端

客户端

{
	"insecure-registries": ["192.168.1.110:5000"]
}

服务端

#-v /opt/docker/registry:/var/lib/registry 来映射存储
$ docker run -d -p 5000:5000 --restart always --name registry registry:2
宿主机(192.168.1.110)防火墙开通端口5000。

停止仓库

$ docker stop registry && docker rm -v registry

6 远程连接daemon 192.168.1.109为客户端

192.168.1.110为服务端

配置文件位置/etc/docker/daemon.json

{
	"authorization-plugins": [],
	"data-root": "",
	"dns": [],
	"dns-opts": [],
	"dns-search": [],
	"exec-opts": [],
	"exec-root": "",
	"experimental": false,
	"storage-driver": "",
	"storage-opts": [],
	"labels": [],
	"live-restore": true,
	"log-driver": "",
	"log-opts": {},
	"mtu": 0,
	"pidfile": "",
	"cluster-store": "",
	"cluster-store-opts": {},
	"cluster-advertise": "",
	"max-concurrent-downloads": 3,
	"max-concurrent-uploads": 5,
	"default-shm-size": "64M",
	"shutdown-timeout": 15,
	"debug": true,
	"hosts": [],
	"log-level": "",
	"tls": true,
	"tlsverify": true,
	"tlscacert": "",
	"tlscert": "",
	"tlskey": "",
	"swarm-default-advertise-addr": "",
	"api-cors-header": "",
	"selinux-enabled": false,
	"userns-remap": "",
	"group": "",
	"cgroup-parent": "",
	"default-ulimits": {},
	"init": false,
	"init-path": "/usr/libexec/docker-init",
	"ipv6": false,
	"iptables": false,
	"ip-forward": false,
	"ip-masq": false,
	"userland-proxy": false,
	"userland-proxy-path": "/usr/libexec/docker-proxy",
	"ip": "0.0.0.0",
	"bridge": "",
	"bip": "",
	"fixed-cidr": "",
	"fixed-cidr-v6": "",
	"default-gateway": "",
	"default-gateway-v6": "",
	"icc": false,
	"raw-logs": false,
	"allow-nondistributable-artifacts": [],
	"registry-mirrors": [],
	"seccomp-profile": "",
	"insecure-registries": [],
	"disable-legacy-registry": false,
	"no-new-privileges": false,
	"default-runtime": "runc",
	"oom-score-adjust": -500,
	"runtimes": {
		"runc": {
			"path": "runc"
		},
		"custom": {
			"path": "/usr/local/bin/my-runc-replacement",
			"runtimeArgs": [
				"--debug"
			]
		}
	}
}

服务端配置内容

{
	"hosts": ["unix:///var/run/docker.sock","192.168.1.110:2357"]
}

客户端连接方式

docker -H 192.168.1.110:2357 <cmd>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!