DockerFile

本文详细介绍了Docker的安装过程,包括将非root用户添加到Docker组以及验证操作的方法。还探讨了Docker的存储引擎选择,如Overlay2,并展示了如何修改配置。此外,文章列举了Docker的基本命令,如镜像管理和容器操作,以及私有仓库的搭建步骤,包括下载、配置、推送和拉取镜像。
摘要由CSDN通过智能技术生成

Docker的安装

##将非root用户加入本地 Docker Unix组中

最好通过非 root 用户来使用 Docker,这时需要添加非 root 用户到本地 Docker Unix 组当中。

如果你没有将用户放入到Docker Unix组中,你执行docker version等命令会报 Permission denied

在这里插入图片描述

把系统当前用户的用户添加到 Docker 组中,以及如何确认操作是否执行成功

$ who am i    # 显示出自己在系统中的用户名,登录终端,登录时间
k8s-master01 pts/0        2021-09-24 23:35 (:0)

$ sudo usermod -aG docker k8s-master01   #加入Docker组

$ cat /etc/group | grep docker     #确定操作是否执行成功
docker:x:982:k8s-master01

此时再去执行 docker version

在这里插入图片描述

如果当前登录用户就是要添加到 Docker 组中的用户的话,则需要重新登录,组权限设置才会生效

Docker存储引擎

每个 Docker 容器都有一个本地存储空间,用于保存层叠的镜像层(Image Layer)以及挂载的容器文件系统。

默认情况下,容器的所有读写操作都发生在其镜像层上或挂载的文件系统中,所以存储是每个容器的性能和稳定性不可或缺的一个环节。

存储驱动的选择是节点级别的。这意味着每个 Docker 主机只能选择一种存储驱动,而不能为每个容器选择不同的存储驱动。

在 Linux 上,读者可以通过修改 /etc/docker/daemon.json 文件来修改存储引擎配置,修改完成之后需要重启 Docker 才能够生效。

Docker 可选择的一些存储驱动包括 AUFS(最原始也是最老的)、Overlay2(可能是未来的最佳选择)、Device Mapper、Btrfs 和 ZFS。

下面的代码片段展示了如何将存储驱动设置为 overlay2。

{ "storage-driver": "overlay2" }

提示:如果配置所在行不是文件的最后一行,则需要在行尾处增加逗号。

如果读者修改了正在运行 Docker 主机的存储引擎类型,则现有的镜像和容器在重启之后将不可用,这是因为每种存储驱动在主机上存储镜像层的位置是不同的(通常在 /var/lib/docker//… 目录下)。

在这里插入图片描述

/etc/docker docker的认证目录

/var/lib/docker docker的应用目录,镜像存储的地址

Docker的组件

##客户端和服务端

当我们安装 Docker 的时候,会涉及两个主要组件:Docker 客户端和 Docker daemon(Docker 服务端)

使用 Linux 默认安装时,客户端与 daemon 之间的通信是通过本地 IPC/UNIX Socket 完成的(/var/run/docker.sock)

可以使用docker version命令来检测客户端和服务端是否都已经成功运行,并且可以互相通信

在这里插入图片描述

如果不能正常运行,请将当前用户加入到docker的用户组中,或者在所有命令都加上sudo前缀

镜像

docker image ls:查看本地Docker主机上存储的镜像,可以通过 --digests 参数来查看镜像的 SHA256 签名

docker image pull ::拉取镜像

docker image rm ::删除镜像

docker image inspect ::该命令完美展示了镜像的细节,包括镜像层数据和元数据

容器

docker container run -it 镜像名称:latest /bin/bash:启动容器

docker container ls:查看系统内全部处于运行状态的容器

docker container ls -a:查看docker中的全部容器,包括停止状态的容器

docker container exec -it 容器名称/容器ID bash:进入一个容器终端

docker container stop 容器名称/容器ID:停止容器

docker container start 容器名称/容器ID:重启处于停止状态的容器

docker container rm 容器名称/容器ID:删除容器

docker container inspect 容器名称/容器ID:显示容器的配置细节和运行时信息

私有仓库的搭建

  • 下载镜像
docker pull registry
  • 配置私有仓库(/etc/docker/daemon.json)
{
"registry-mirrors": ["https://ei8e0qtm.mirror.aliyuncs.com"],  #共有仓库
"insecure-registries": ["192.168.31.166:5000"]                 #私有仓库
}

如果daemon.json配置错误,在推送镜像的时候会报错:
Get https://xxx:5000/v2/: http: server gave HTTP response to HTTPS client
配置成功之后,重启registry即可
docker start 镜像名称/镜像id

  • 重启docker
systemctl restart docker
  • 创建register容器(关联私有仓库配置)

Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,我们将主机的/var/lib/docker/registry目录挂载到该目录,即可实现将镜像保存到主机的/opt/registry目录了。

docker run -d -v /var/lib/docker/registry:/var/lib/registry -p 5000:5000 --name registry registry:latest

访问:http://192.168.31.166:5000/v2/

  • 修改镜像的名称

镜像的完整命名格式:[registry-host]:[port]/[username]/[imagename],当我们使用docker push的时候,docker会自动识别[registry-host]部分为容器镜像仓库地址。

docker pull nginx
docker tag nginx:latest 192.168.31.166:5000/nginx:latest
  • 推送镜像到私有镜像中
docker push 192.168.31.166:5000/nginx:latest
  • 拉取私有仓库镜像
docker pull 192.168.31.166:5000/nginx:latest
  • 进入文件夹(/var/lib/docker/registry/docker/registry/v2/repositories),发现里面存在nginx镜像

访问:http://192.168.31.166:5000/v2/_catalog,即可查看本地仓库中的镜像

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值