常用指令
安装
shell
curl -fsSL https://get.docker.com | sh
Dockerfile给ubuntu换源
dockerfile
RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
macOS运行容器时同步宿主机时间
shell
-e TZ=`ls -la /etc/localtime | cut -d/ -f8-9`
MacOS中容器访问宿主机
可以用host.docker.internal
来访问宿主机
https://docs.docker.com/desktop/networking/#use-cases-and-workarounds
构建跨平台镜像
docker buildx
shell
# 创建builder
docker buildx create --name cross-platform-builder --driver docker-container --use
# 执行构建
docker buildx build --platform linux/amd64,linux/arm64 -t 镜像名:tag [-o type=registry | --push] .
# 查看推送到远程的镜像信息
docker buildx imagetools inspect 镜像名:tag
buildx 实例通过两种方式来执行构建任务,两种执行方式被称为使用不同的「驱动」:
docker
驱动:使用 Docker 服务程序中集成的 BuildKit 库执行构建。docker-container
驱动:启动一个包含 BuildKit 的容器并在容器中执行构建。
docker
驱动无法使用一小部分 buildx
的特性(如在一次运行中同时构建多个平台镜像),此外在镜像的默认输出格式上也有所区别:docker
驱动默认将构建结果以 Docker 镜像格式直接输出到 docker
的镜像目录(通常是 /var/lib/overlay2
),之后执行 docker images
命令可以列出所输出的镜像;而 docker container
则需要通过 --output
选项指定输出格式为镜像或其他格式。
docker buildx build
支持丰富的输出行为,通过--output=[PATH,-,type=TYPE[,KEY=VALUE]
选项可以指定构建结果的输出类型和路径等,常用的输出类型有以下几种:
- local:构建结果将以文件系统格式写入
dest
指定的本地路径, 如--output type=local,dest=./output
。 - tar:构建结果将在打包后写入
dest
指定的本地路径。 - oci:构建结果以 OCI 标准镜像格式写入
dest
指定的本地路径。 - docker:构建结果以 Docker 标准镜像格式写入
dest
指定的本地路径或加载到docker
的镜像库中。同时指定多个目标平台时无法使用该选项。 - image:以镜像或者镜像列表输出,并支持
push=true
选项直接推送到远程仓库,同时指定多个目标平台时可使用该选项。 - registry:
type=image,push=true
的精简表示。
https://waynerv.com/posts/building-multi-architecture-images-with-docker-buildx/
docker pull配置代理
shell
vim /etc/systemd/system/docker.service.d/http-proxy.conf
# [Service]
# Environment="HTTP_PROXY=http://ip:port"
# Environment="HTTPS_PROXY=http://ip:port"
systemctl daemon-reload
systemctl restart docker
# 可以通过下面命令检查是否生效
systemctl show --property=Environment docker
# 或
docker info