容器隔离
namespace:
namespace 是 linux 中用来隔离进程的手段。容器就是使用该技术来进行隔离的
可以把进程当做是对讲机,而 namespace 就是频段。两个对讲机(进程)要互相通信就需要调整到相同的频段上(namespace), namespace 用来做容器的通信隔离;
cgroups:
cgroups 是 linux 用来限制进程使用资源的手段。容器也是利用这个技术进行资源隔离;
mount -t cgroups 查看当前系统的 cgroups
使用示例:
docker run -d --name nginx -m 512m --cpus=2 nginx
上述代码中就对容器的内存和CPU核数做了限制;
镜像仓库搭建:
当从镜像仓库拉取镜像时,我们经常使用的是:
docker pull image_name
这种方式,其实这种方式中省略了仓库地址和路径的部分,而当我们需要上传镜像时,这部分则不可以省略,
所以拉取和上传镜像时,完整的路径为:
镜像仓库地址: 端口号 / 路径 / 镜像名称 : tag 号
搭建镜像仓库:
第一步:拉取registry 镜像到本地
docker pull registry:2
第二步: 在本期启动registry搭建一个本地的镜像仓库
docker run -d -p 5000:5000 -v /usr/local/registry:/var/lib/registry --restrat=always --name registry registry:2
第三步:将镜像推动到本地仓库
docker tag busybox localhost:5000/busybox:v1.0
docker push localhost:5000/busybox:v1.0
Tag an image for a private registry
To push an image to a private registry and not the public Docker registry you must include the registry hostname and port (if needed).
当我们需要将一个镜像推送到私人仓库时,该镜像需要有host和port,所以在推动到私人仓库前,需要先将要推送的镜像打tag,以符合规范;
第四步:访问本地仓库查看是否推送成功
curl http://localhost:5000/v2/_catalog