15AH, San Francisco

California, United States.

Send Your Mail At:

tianyingkejishe@sina.cn

Working Hours

Mon-Sat: 9.30am To 7.00pm

分类标题

Autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et dolore feugait.

分类归档 DOCKER

【docker】docker迁移位置

在系统长期运行器件,会出现硬盘使用占满的情况。这时候需要考虑docker容器迁移。步骤如下:

一、增加硬盘,挂载位置

1、创建硬盘

fdisk /dev/sdb

2、格式化硬盘

mkfs.ext4 /dev/sdb1

3、挂载硬盘

mkdir /mnt/tHDD
mount /dev/sdb1 /mnt/tHDD

4、自动挂载硬盘

blkid /dev/sdb1

vim /etv/fstab

UUID=e3746c50-ace6-4c88-bcf7-175ebbdcf13f /mnt/tHDD   ext4 error=remount-ro 0 

二、迁移docker文件

1、拷贝文件

cp -rfp /var/lib/docker /mnt/tHDD

注意:cp 指令需要添加p参数,防止拷贝过程中被修改文件权限。

2、修改配置

vim /etc/docker/daemon.json

{

"data-root": "/mnt/tHDD/docker",
"registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]

}

3、重启docker

sudo systemctl daemon-reload
sudo systemctl restart docker

注意:如果是多dockers,最好重启机器。

【docker】容器更换软件源

1、在镜像内部更换

# 备份原来的文件
cp  /etc/apt/sources.list /etc/apt/sources.list.bak

# 更换覆盖原来的文件
mv /home/sources.list /etc/apt/sources.list

apt-get update

2、用Dockerfile构建时更换

FROM python:3.6.7

WORKDIR /home/code/
RUN cp /etc/apt/sources.list /etc/apt/sources.list.bak
COPY . .
ADD sources.list /etc/apt/ 
RUN apt-get update 

【Dockers】启动问题排查

1、尝试启动docker

root@DESKTOP-3TQ8K9B:~# systemctl start docker
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xeu docker.service" for details.

2、查看启动log

root@DESKTOP-3TQ8K9B:~# sudo dockerd --debug
INFO[2022-08-05T23:05:51.543106408+08:00] Starting up
......
failed to start daemon: Error initializing network controller: error obtaining controller instance: unable to add return rule in DOCKER-ISOLATION-STAGE-1 chain:  (iptables failed: iptables --wait -A DOCKER-ISOLATION-STAGE-1 -j RETURN: iptables v1.8.7 (nf_tables):  RULE_APPEND failed (No such file or directory): rule in chain DOCKER-ISOLATION-STAGE-1
 (exit status 4))

3、解决问题

sudo update-alternatives --set iptables /usr/sbin/iptables-legacy