安装 Docker

1
2
3
4
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
# 或者使用阿里云的镜像安装
sh get-docker.sh --mirror Aliyun

清理镜像

1
docker image prune -f

清理停止的容器

1
docker container prune -f

清理未使用的数据卷

1
docker volume prune

清理 Build Cache

1
docker builder prune

清理所有

1
docker system prune

查看磁盘占用情况

1
docker system df

安装 docker-compose

1
2
3
4
5
6
7
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

docker-compose --version

docker-compose build 不留下 none 的 image

1
docker-compose build --force-rm

使用 alpine 镜像出现not found的原因及解决方法

使用 alpine 作为基础镜像的时候, 偶尔会出现not found的错误, 但文件却是存在的.

使用其他发行版的镜像的时候, 不会出现这个错误. 就查找资料寻找了下原因.

原因

Go 编译默认其实并不是静态编译, 会依赖系统中的一些动态链接库, 比如glibc.

大部分发行版默认都会带glibc, 但 alpine 并没有自带, 而是自带了musl libc.

所以执行依赖了glibc的二进制文件的时候, 就会出现not found的错误. (这个错误的描述是真的很有迷惑性 😂)

解决方法

  1. 编译不依赖glibc的二进制文件, 比如 Go 编译的时候指定CGO_ENABLED=0.
  2. 编译一个依赖musl libc的二进制文件.