docker mirror加速站
针对 docker cloudflare.docker.com 超时问题,目前测试中科大等都已经失效了。
下面的亲测可用:Daocloud 镜像加速器地址:https://docker.m.daocloud.io
编辑 /etc/docker/daemon.json, 增加如下:
"registry-mirrors": ["https://docker.m.daocloud.io"]
针对 docker cloudflare.docker.com 超时问题,目前测试中科大等都已经失效了。
下面的亲测可用:Daocloud 镜像加速器地址:https://docker.m.daocloud.io
编辑 /etc/docker/daemon.json, 增加如下:
"registry-mirrors": ["https://docker.m.daocloud.io"]
先login
docker login registry.gitlab.com
输入正确的的账号和密码。然后 token就会被自动保存在:
/root/.docker/config.json
账号一般是邮箱
后面就可以像使用普通镜像一样直接run了
安装后提示:
docker is already the newest version (1.5-2)
但是运行docker 命令提示找不到。
然后重新安装:
curl -sSL https://get.docker.com/ | sudo sh
提示:
The repository 'https://download.docker.com/linux/ubuntu bookworm Release' does not have a Release file.
cd /etc/apt/sources.list.d/
发现有个 archive_uri-https_download_docker_com_linux_ubuntu-bookworm.list
rm archive_uri-https_download_docker_com_linux_ubuntu-bookworm.list
删除后再执行,就正常了。
Client: Docker Engine - Community
Version: 25.0.3
API version: 1.44
Go version: go1.21.6
Git commit: 4debf41
Built: Tue Feb 6 21:14:25 2024
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 25.0.3
API version: 1.44 (minimum version 1.24)
Go version: go1.21.6
Git commit: f417435
Built: Tue Feb 6 21:14:25 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.28
GitCommit: ae07eda36dd25f8a1b98dfbf587313b99c0190bb
runc:
Version: 1.1.12
GitCommit: v1.1.12-0-g51d5e94
docker-init:
Version: 0.19.0
GitCommit: de40ad0
这两天因为某个需求,一直在研究这个问题。
网上都看了,什么ipv6 subnet daemon.json 之类的,都是一通抄,还是没有能说明白关键联系的,很多都是抄的碎片化信息。
因为说不清楚关联,所以就没法在实际环境中结合实际灵活解决问题。
docker的版本问题。初步结论是:docker engine 的版本大于等于20.10.2 。参见:https://zhuanlan.zhihu.com/p/342633966
经过验证,如果版本不对,在配置daemon.json时,就会报错,令人莫名, 实际是版本的ipv6支持问题,不支持新字段。
注意:系统默认的docker版本是跟这个系统的代码版本库走的,所以想要最新的docker版本,首先要确认自己的系统,否则要手动安装。
这个也是网上看到最多的:
{
"ipv6": true,
"fixed-cidr-v6": "fd00::/80",
"experimental": true,
"ip6tables": true
}
在跳过了docker版本的坑,这里就可以配置了。这里核心的是那个fixed-cidr-v6, 很多人看不懂这个,不知道这个要怎么改,这个就要自己实际弄懂ipv6的子网了,要根据自己的外网IPV6地址,配置实际的子网段。参见 https://docs.docker.com/engine/daemon/ipv6/
docker inspect xxx
检查 Networks 字段,下面对应就是network的对象,如下例子就是 bridge:
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "xxx",
"EndpointID": "xxx",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "fd17::1",
"GlobalIPv6Address": "fd17::242:ac11:2",
"GlobalIPv6PrefixLen": 64,
"MacAddress": "xxx",
"DriverOpts": null
}
}
然后我们继续检查 bridge对ipv6的支持情况:
docker network inspect bridge
我们检查EnableIPv6字段:
"Name": "bridge",
"Id": "xxx",
"Created": "xxx",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": true,
如果是true,则证明此bridge网络已经支持ipv6
docker run --rm -it busybox ping -6 -c4 ipv6-test.com
docker run --rm -it busybox ifconfig
正常返回,就说明系统的docker ipv6能力正常
效果相当于endpoint 中的脚本跟上cmd 中的参数
ubuntu下,在-v参数映射时,出现 read-only file system
解决:默认是支持home下的路径
所以暂时就一个可选项:gitlab
放一个相关的比较参考图:
你可以在ghcr.io上存储和管理你的Docker和OCI镜像。
容器服务器支持外部layer,比如windows 镜像。
登陆ghcr.io建议使用GITHUB_TOKEN工作流来提高安全性。
$ export CR_PAT=YOUR_TOKEN
$ echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin
> Login Succeeded
$ docker push ghcr.io/OWNER/IMAGE_NAME:latest
or
$ docker push ghcr.io/OWNER/IMAGE-NAME:2.5
当第一次发布容器时,默认是私有的,需要改变可见性,需要自己去设置:Configuring a package's access control and visibility
$ docker inspect ghcr.io/OWNER/IMAGE_NAME
$ docker rmi ghcr.io/OWNER/IMAGE_NAME:latest
$ docker pull ghcr.io/OWNER/IMAGE_NAME@sha256:82jf9a84u29hiasldj289498uhois8498hjs29hkuhs
docker pull ghcr.io/OWNER/IMAGE_NAME
$ docker pull ghcr.io/OWNER/IMAGE_NAME:1.14.1
$ docker pull ghcr.io/OWNER/IMAGE_NAME:latest
$ docker build -t hello_docker .
$ docker images
> REPOSITORY TAG IMAGE ID CREATED SIZE
> ghcr.io/my-org/hello_docker latest 38f737a91f39 47 hours ago 91.7MB
> ghcr.io/my-username/hello_docker latest 38f737a91f39 47 hours ago 91.7MB
> hello-world latest fce289e99eb9 16 months ago 1.84kB
$ docker tag 38f737a91f39 ghcr.io/OWNER/NEW_IMAGE_NAME:latest
这两天瞎折腾,因为数据库不一致的问题,一气之下把baota image删掉了,很多跟数据库相关的服务都歇了。
宝塔自用,在nas环境配合下数据库,搞个网络环境还是很方便的。
再重新拉取baota镜像时,发现怎么也访问不了,看日志,也没发现什么线索,所以才萌生了自己搞个docker的念头,主要是想定位下问题。
根据官方 www.bt.cn 最新的安装脚本制作了最新的 docker镜像:
https://gitlab.com/hiproz/baota-centos7-docker
docker run -tid --name baota --restart always -v /your-local-dir:/www -p your-local-port:8888 registry.gitlab.com/hiproz/baota-centos7-docker
查看 run.log
查看映射路径下的default.txt, 注意要使用实际映射的端口,default.txt显示的是系统内部的端口。