修改国内镜像源

国内使用dockerhub拉去镜像速度缓慢,为提升效率可切换国内镜像仓库。

编辑daemon.json,如果没有则创建

vi /etc/docker/daemon.json

内容如下:

{
    "registry-mirrors": [
        "https://mirror.ccs.tencentyun.com"
    ]
}

此处我配置的是腾讯的镜像仓库,再提供几个常用的国内仓库,可根据实际情况选择最优的:

编辑完成后重启docker服务

systemctl daemon-reload
systemctl restart docker

镜像编码格式

有些镜像的编码格式不支持中文,想要使其支持中文,需要修改为C.UTF-8格式。

临时修改
查看所有支持的编码格式:

locale -a

修改编码:

LANG=C.UTF-8
source /etc/profile

有些系统没有C.UTF-8,那就修改为zh_CN.UTF-8

永久修改
重新制作镜像,在Dockerfile中添加一行:

ENV LANG C.UTF-8

镜像时区修改

一般docker镜像的时间与系统的时间是不一致的,原因是使用的时区不同,系统时区一般为Asia/Shanghai,需要对镜像的时区进行更改。

复制本机时区文件
将系统/usr/share/zoneinfo/Asia/Shanghai文件拷贝到Dockerfile所在的目录

修改Dockerfile

删除基础镜像的时间文件

RUN rm -rf /etc/localtime

创建目录(可能有些基础镜像没有该目录)

RUN mkdir -p /usr/share/zoneinfo/Asia

拷贝文件Shanghai/usr/share/zoneinfo/Asia/

COPY Shanghai /usr/share/zoneinfo/Asia/

创建软连接

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

镜像的导入与导出

有时需要在一些特殊的环境下(如不能连接外网)使用docker,这就需要在一台能联网的机器上将镜像拉取后进行导出,拷贝到目标机器上再进行导入。

导出镜像
使用save指令将镜像导出到tar文件。

docker save -o 导出文件名.tar 镜像名:tag

示例:

docker save -o flink-image.tar apache/flink:1.12.4-scala_2.12

加载镜像
使用load指令将tar文件加载为docker镜像。

docker load < 导出文件名.tar

示例:

docker load < flink-image.tar

批量删除docker镜像/容器

有时我们需要批量删除docker中的容器或镜像,比如删库跑路的时候(不是)

直接删除所有镜像

docker rmi `docker images -q`

直接删除所有容器

docker rm `docker ps -aq`

按条件筛选之后删除镜像

docker rmi `docker images | grep xxxxx | awk '{print $3}'`

按条件筛选之后删除容器

docker rm `docker ps -a | grep xxxxx | awk '{print $1}'`

删除所有停止的容器

docker rm `docker ps -a | grep Exited | awk '{print $1}'`