一、Docker容器镜像操作
1、查看本地镜像
csharp
[root@VM-3-8-centos ~]# docker images
[root@VM-3-8-centos ~]# docker image list
#repository仓库 tag标记-最新的 image-id镜像id created创建时间 size大小
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest c20060033e06 2 weeks ago 187MB
centos latest 5d0da3dc9764 2 years ago 231MB
2、查看docker容器镜像本地存储位置
考虑到docker容器镜像会占用本地存储空间,建议搭建其它存储系统挂载到本地以便解决占用大量本地存储的问题。
arduino
[root@VM-3-8-centos ~]# ls /var/lib/docker
buildkit containerd containers engine-id image network overlay2 plugins runtimes swarm tmp trust volumes
3、docker搜索镜像
csharp
[root@VM-3-8-centos ~]# docker search centos
官网镜像链接:hub.docker.com/search
4、docker镜像的下载本地
csharp
[root@VM-3-8-centos ~]# docker pull mysql:5.7
#默认下载最新的镜像latest
4、docker镜像的删除
提示:容器停止-》容器删除-》删除镜像
csharp
[root@VM-3-8-centos ~]# docker rmi bdba757bc933
Untagged: mysql:5.7
#bdba757bc933->docker images查询
二、Docker容器镜像介绍
1、Docker lmage
- Docker 镜像是只读的容器模板,是Docker容器基础
- 为Docker容器提供了静态文件系统运行环境 (rootfs)
- 是容器的静止状态
- 容器是镜像的运行状态
2、docker存储
联合文件系统定义
联合文件系统是实现联合持载技术的文件系统
联合挂载技术可以实现在一个挂载点同时挂载多个文件系统,将挂载点的原目录与被挂载内容进行整合,使得是终可见的文性系统包合整合之后的各层文件和目录(类似于文件夹)
容器文件系统有多种存储驱动实现方式: aufs,devicemapper,overlay,overlay2等,本次以overlay2为例进行说明
- registry/repository: registry 是repository 的集合,repository 是镜像的集合
- image: image 是存境像相关的元数据,包括镜像的架构,镜像默认配置信息,镜像的容置信息等等。它是"逻辑"上的概念,并无物理上的镜像文件与之对应。
- layer: layer(镜像层) 组成了镜像,单个layer 可以被多个镜像共享。
yaml
[root@VM-3-8-centos ~]# docker info | grep overlay
Storage Driver: overlay2
Network: bridge host ipvlan macvlan null overlay
#docker info:这个命令用于获取 Docker 的系统信息,包括容器、镜像、存储驱动等相关信息。
#grep:这是一个文本搜索工具,用于在输入中查找匹配的行。
#overlay:这是一个关键词,用于指定要搜索的模式。
3、容器与镜像的关系
perl
[root@VM-3-8-centos ~]# mount | grep overlay
mount:这是一个命令,用于显示已挂载的文件系统列表。
|:这是管道符号,用于将一个命令的输出作为另一个命令的输入。
grep overlay:这是一个命令,用于在输入中搜索包含 "overlay" 的行,并将其输出。
可以看到,启动容器会 mount 一个 overlay 的联合文件系统到容器内,这个文件系统由三层组成:
- lowerdir: 只读层,即为镜像的镜像层
- upperdir: 读写层,该层是容器的读写层,对容器的读写操作将反映在读写层。
- workdir: overlayfs 的内部层,用于实现从只读层到读写层的 copy_up 操作.
- merge: 容器内作为同一视图联合挂载点的目录.
三、Docker容器镜像操作
1、docker commit
docker 通过 commit 和 build 操作实现镜像的构建。commit 将容器提交为一个镜像,build 在一个镜像的基础上构建镜像便用 commit将上节的容器提交为一个镜像:
csharp
[root@VM-3-8-centos ~]# docker commit 6643da25662c centos:msb
sha256:c1207ac05baa969a4eae09409f7ff5cd5b1d178cd00a369848853d71ae6748fb
[root@VM-3-8-centos ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos msb c1207ac05baa 9 seconds ago 187MB
#centos:msb:这是新镜像的名称和标签。在这种情况下,新镜像的名称是 centos,标签是 msb。
2、docker save
导出容器镜像,方便分享
csharp
[root@VM-3-8-centos ~]# docker save -o centos.tar centos:latest
[root@VM-3-8-centos ~]# ls
centos.tar
#-o centos.tar:这是选项,用于指定输出文件的名称和路径。在这种情况下,输出文件的名称是 centos.tar,它将保存在当前目录下。
拷贝给其他主机
csharp
[root@VM-3-8-centos ~]# scp centos.tar 192.168.10.154:/root
#scp:用于在不同的主机之间进行安全的文件传输。
3、docker load
把他人分享的容器镜像导入到本地,这通常是容器镜像分发方式之一
arduino
[root@VM-3-8-centos ~]# docker load -i centos.tar
Loaded image: centos:latest
4、docker export
把正在进行中的容器导出
csharp
[root@VM-3-8-centos ~]# docker export -o nginx.tar 6643da25662c
5、docker import
导入使用docker export导入的容器做为本地容器镜像
csharp
[root@VM-3-8-centos ~]# docker import nginx.tar nginx:v1
sha256:e226094bdc9e13a1a54977a874f8890a7629aeee4fbc31f9aae612db58467222
[root@VM-3-8-centos ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx v1 e226094bdc9e 13 seconds ago 185MB
四、容器镜像加速器
reload-加载------registry-仓库------mirrors-镜像------release-版本
csharp
[root@VM-3-8-centos ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com"
]
}
[root@VM-3-8-centos ~]# systemctl daemon-reload
[root@VM-3-8-centos ~]# systemctl restart docker
五、容器镜像仓库
公共镜像仓库-docker hub
1、注册hub.docker.com/
2、创建镜像仓库
3、登录容器仓库
makefile
[root@VM-3-8-centos ~]# docker login
Username:
Password:
WARNING! Your password will be stored unencrypted in
Login Succeeded
要将新标签镜像推送到镜像仓库
ini
[root@VM-3-8-centos ~]# docker tag centos:latest wushishu1/centos:v1
[root@VM-3-8-centos ~]# docker push wushishu1/centos:v1
The push refers to repository [docker.io/wushishu1/centos]
#提示:很卡是对的
从镜像仓库拉取镜像
csharp
[root@VM-3-8-centos ~]# docker pull wushishu1/centos:v1
私有镜像仓库-harbor
1、获取进制文件docker compose二进制文件
私有仓库服务器建议:cpu2核;内存4G;disk 100G
perl
[root@VM-80-61-centos ~]# wget https://github.com/docker/compose/releases/download/1.25.0/docker-compose-Linux-x86_64
#下载很慢->碰到这种问题可以买一台海外的服务器,硅谷下载速度贼亏
[root@VM-2-17-centos ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@VM-2-17-centos ~]# mv docker-compose-Linux-x86_64 /usr/bin/docker-compose
#移动并且更名可执行目录
[root@VM-2-17-centos bin]# chmod +x /usr/bin/docker-compose
#执行权限
[root@VM-2-17-centos bin]# docker-compose version
docker-compose version 1.25.0, build 0a186604
docker-py version: 4.1.0
CPython version: 3.7.4
OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
2、获取harbor安装文件
代办:学磁盘分区and挂载点知识
官网链接:github.com/goharbor/ha...
csharp
[root@VM-2-17-centos bin]# df -h
/dev/vda1 99G 2.4G 92G 3% /
#df -h 是一个用于显示文件系统磁盘空间使用情况的命令
[root@VM-2-17-centos /]# wget https://github.com/goharbor/harbor/releases/download/v2.4.1/harbor-offline-installer-v2.4.1.tgz
[root@VM-2-17-centos /]# tar -xf harbor-offline-installer-v2.4.1.tgz
3、获取TLS文件
上传证书文件,解压unzip,把key和pem移动到harbor/目录下
arduino
购买域名:https://buy.cloud.tencent.com/domain
配置免费SSL证书:https://console.cloud.tencent.com/ssl
配置DNS解析:https://console.cloud.tencent.com/cns/detail
4、修改配号文件
yaml
[root@VM-2-17-centos harbor]# vim harbor.yml.tmpl
#更改文件
5 hostname: 自己的域名
17 certificate: 证书pem绝对路径
18 private_key: 证书key绝对路径
34 harbor_admin_password: 改密码
[root@VM-2-17-centos harbor]# mv harbor.yml.tmpl harbor.yml
5、执行预备脚本
确保本机安装docker
csharp
[root@VM-2-17-centos harbor]# ./prepare
6、执行安装脚本
csharp
[root@VM-2-17-centos harbor]# ./install.sh
7、验证运行情况
后面验证使用:docker ps 9个容器
8、访问harbor U界面
- 虚拟机模式:手动添加解析
csharp
[root@VM-3-8-centos ~]# vim /etc/hosts
- 云服务器模式:增加DNS解析
ruby
因为默认云服务器安全组配置TCP不放通过443和80端口,导致无法使用web服务器
安全组新建地址:https://console.cloud.tencent.com/vpc/security-group
给域名配置DNS解析:<https://console.cloud.tencent.com/cns/detail>
使用浏览器进行访问
默认:admin;12345
9、docker镜像上传至Harbor及从harbor下载
bash
添加/etc/docker/daemon.json文件,里认不存在,需要手动添加
# vim /etc/docker/daemon.json
# cat /etc/docker/daemon.json
{
"insecure-registries": ["私有仓库域名"]
}
重启加载daemon配置
# systemctl daemon-reload
重启docker
# systemctl restart docker
[root@VM-2-17-centos harbor]# docker ps
#此时你会发现容器不为9个
提示:解决办法
csharp
[root@VM-2-17-centos harbor]# cd /harbor
[root@VM-2-17-centos harbor]# docker-compose down
[root@VM-2-17-centos harbor]# docker-compose up -d
[root@VM-2-17-centos harbor]# docker ps
#运行中的容器为9个
上传至Harbor服务器
shell
为已存在镜像重新添加tag
# docker tag centos:latest 你的域名/library/centos:v1
验证结果
# docker images
登录Harbor服务器~~默认admin;12345~~logout等出
# docker login 你的域名
# docker push 你的域名/library/centos:v1
从Harbor服务器拉取镜像
bash
# 添加hosts解析
# docker pull 你的域名/library/centos:v1
```# 容器镜像介绍及应用