1.官网
buildx 命令属于实验特性,因此首先需要开启该特性,比如
~/.docker/config.json
的 experimental 设置为 true
大约 1 分钟
buildx 命令属于实验特性,因此首先需要开启该特性,比如
~/.docker/config.json
的 experimental 设置为 true
kubernetes的编译需要用到dind,就是docker内部启动一个容器用于编译镜像,在gitlab的CI的时候可以使用
# rpm包导出
$ yum -y reinstall --downloadonly --downloaddir=./ docker
# 安装rpm包
$ rpm -ivh ./*.rpm
$ rpm -ivh package_name.rpm
# deb包导出
$ apt-get install dpkg-repack
$ dpkg-repack ${package-name}
使用docker compose搭建loki和promtail服务,支持自定义采集目标,并且通过 loki http API查看日志数据
$ mkdir loki-compose
$ cd loki-compose
$ mkdir data && mkdir log && mkdir config
$ cd config && touch local-config.yaml && touch promtail-config.yaml
$ touch docker-compose.yml
创建无网络的docker容器然后手动分配网络
$ docker run --net=none -itd --name busybox-test busybox
$ docker exec busybox-test ip a
# 文件目录
# bin目录是go程序编译结果 go build GOOS=linx GOARCH=amd64 \ GOARCH=arm64
.
├── Dockerfile
├── README.md
├── bin
│ ├── amd64
│ │ └── tool
│ └── arm64
│ └── tool
├── golang
│ ├── go.mod
│ └── main.go
└── sh
└── start.sh
# 多架构镜像
# quay.io/coreos/etcd:v3.5.0
$ docker pull --platform=linux/amd64 quay.io/coreos/etcd:v3.5.0
$ docker tag quay.io/coreos/etcd:v3.5.0 \
registry.my.net/bingokube/etcd:v3.5.0-amd64
$ docker pull --platform=linux/arm64 quay.io/coreos/etcd:v3.5.0
$ docker tag quay.io/coreos/etcd:v3.5.0 \
registry.my.net/bingokube/etcd:v3.5.0-arm64
$ docker push registry.my.net/bingokube/etcd:v3.5.0-amd64
$ docker push registry.my.net/bingokube/etcd:v3.5.0-arm64
# 此时无法拉取镜像下面的无法执行
$ docker pull registry.my.net/bingokube/etcd:v3.5.0
# 制作清单
$ docker manifest create --insecure registry.my.net/bingokube/etcd:v3.5.0 \
registry.my.net/bingokube/etcd:v3.5.0-amd64 \
registry.my.net/bingokube/etcd:v3.5.0-arm64
# 推送清单
$ docker manifest push --insecure registry.my.net/bingokube/etcd:v3.5.0
# 查看清单
$ docker manifest inspect registry.my.net/bingokube/etcd:v3.5.0
{
"schemaVersion": 2,
"mediaType": "application/vnd.xxx.list.v2+json",
"manifests": [
{
"mediaType": "application/vnd.xxx.v2+json",
"size": 1783,
"digest": "sha256:abc",
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
{
"mediaType": "application/vnd.xxx.v2+json",
"size": 1576,
"digest": "sha256:abc",
"platform": {
"architecture": "arm64",
"os": "linux"
}
}
]
}
# 查看当前docker支持的运行时
$ docker info | grep Runtime
# 基于runtime=runsc创建容器
$ docker run --runtime=runsc --memory=1g -itd --name centos-test3 centos:centos7
# 进入容器查看
$ docker exec -it centos-test3 /bin/bash
# 比较和宿主机的内存
$ free -m
# 基于runc创建容器试试(验证后发现内存隔离并未生效)
$ docker run --runtime=runc --memory=1g -itd --name centos-test5 centos:centos7
理解CRI标准
https://download.docker.com/linux/static/stable/aarch64/docker-23.0.4.tgz
# 先查看当前架构
$ uname -a
# Intel的处理器支持Intel VT-x技术,而AMD的处理器支持AMD SVM技术
# aarch64\arm64 支持 ARM Hyp
# 支持kvm
$ kata-runtime kata-check
# 输出表示支持
# System is capable of running Kata Containers
# System can currently create Kata Containers