hello,大家好啊,今天给大家带来一篇在统信UOS服务器操作系统上迁移docker目录的文章,在工作中我们会发现,当我们没有将/var目录单独分区的时候,运行docker容器后,会将根目录挤压,因此我们可以通过迁移docker目录的方式,释放根路径的磁盘空间,文章内容仅供参考,生产环境请根据实际情况调整,话不多说,让我们开始吧。
1、查看系统版本
[root@localhost ~]# cat /etc/os-version
[Version]
SystemName=UnionTech OS Server
SystemName[zh_CN]=统信服务器操作系统
ProductType=Server
ProductType[zh_CN]=服务器
EditionName=e
EditionName[zh_CN]=e
MajorVersion=20
MinorVersion=1050
OsBuild=12038.101
[root@localhost ~]#
2、安装docker-ce
[root@localhost ~]# yum install docker-ce -y
Last metadata expiration check: 0:00:46 ago on 2023年06月20日 星期二 14时48分41秒.
Dependencies resolved.
===================================================================================
Package Arch Version Repo Size
===================================================================================
Installing:
docker-ce x86_64 20.10.7-3.uel20 repo 23 M
Installing dependencies:
container-selinux noarch 2:2.138.0-1.uel20 repo 36 k
containerd.io x86_64 1.5.5-1.uel20 repo 35 M
docker-ce-cli x86_64 20.10.7-3.uel20 repo 30 M
docker-ce-rootless-extras x86_64 20.10.7-3.uel20 repo 4.5 M
docker-scan-plugin x86_64 0.7.0-3.uel20 repo 3.7 M
libcgroup x86_64 0.42.2-3.uel20 repo 95 k
Transaction Summary
===================================================================================
Install 7 Packages
Total size: 96 M
Installed size: 400 M
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : docker-scan-plugin-0.7.0-3.uel20.x86_64 1/7
Installing : docker-ce-cli-20.10.7-3.uel20.x86_64 2/7
Running scriptlet: docker-ce-cli-20.10.7-3.uel20.x86_64 2/7
Running scriptlet: libcgroup-0.42.2-3.uel20.x86_64 3/7
Installing : libcgroup-0.42.2-3.uel20.x86_64 3/7
Running scriptlet: libcgroup-0.42.2-3.uel20.x86_64 3/7
Installing : docker-ce-rootless-extras-20.10.7-3.uel20.x86_64 4/7
Installing : containerd.io-1.5.5-1.uel20.x86_64 5/7
Running scriptlet: containerd.io-1.5.5-1.uel20.x86_64 5/7
Installing : container-selinux-2:2.138.0-1.uel20.noarch 6/7
Running scriptlet: container-selinux-2:2.138.0-1.uel20.noarch 6/7
Deprecated, use selabel_lookup
Installing : docker-ce-20.10.7-3.uel20.x86_64 7/7
Running scriptlet: docker-ce-20.10.7-3.uel20.x86_64 7/7
Verifying : container-selinux-2:2.138.0-1.uel20.noarch 1/7
Verifying : containerd.io-1.5.5-1.uel20.x86_64 2/7
Verifying : docker-ce-20.10.7-3.uel20.x86_64 3/7
Verifying : docker-ce-cli-20.10.7-3.uel20.x86_64 4/7
Verifying : docker-ce-rootless-extras-20.10.7-3.uel20.x86_64 5/7
Verifying : docker-scan-plugin-0.7.0-3.uel20.x86_64 6/7
Verifying : libcgroup-0.42.2-3.uel20.x86_64 7/7
Installed:
container-selinux-2:2.138.0-1.uel20.noarch
containerd.io-1.5.5-1.uel20.x86_64
docker-ce-20.10.7-3.uel20.x86_64
docker-ce-cli-20.10.7-3.uel20.x86_64
docker-ce-rootless-extras-20.10.7-3.uel20.x86_64
docker-scan-plugin-0.7.0-3.uel20.x86_64
libcgroup-0.42.2-3.uel20.x86_64
Complete!
3、启动docker查看状态
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset>
Active: active (running) since Tue 2023-06-20 14:51:27 CST; 3s ago
Docs: https://docs.docker.com
Main PID: 36834 (dockerd)
Tasks: 10
Memory: 44.0M
CGroup: /system.slice/docker.service
└─36834 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containe>
6月 20 14:51:26 localhost.localdomain dockerd[36834]: time="2023-06-20T14:51:26.51>
6月 20 14:51:26 localhost.localdomain dockerd[36834]: time="2023-06-20T14:51:26.51>
6月 20 14:51:26 localhost.localdomain dockerd[36834]: time="2023-06-20T14:51:26.57>
6月 20 14:51:27 localhost.localdomain dockerd[36834]: time="2023-06-20T14:51:27.22>
6月 20 14:51:27 localhost.localdomain dockerd[36834]: time="2023-06-20T14:51:27.35>
6月 20 14:51:27 localhost.localdomain dockerd[36834]: time="2023-06-20T14:51:27.53>
6月 20 14:51:27 localhost.localdomain dockerd[36834]: time="2023-06-20T14:51:27.58>
6月 20 14:51:27 localhost.localdomain dockerd[36834]: time="2023-06-20T14:51:27.58>
[root@localhost ~]#
4、配置阿里云docker镜像加速器
[root@localhost ~]# mkdir -p /etc/docker
[root@localhost ~]# tee /etc/docker/daemon.json <<-'EOF'
> {
> "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
> }
> EOF
{
"registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
}
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
[root@localhost ~]#
5、拉取nginx镜像
[root@localhost ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
a2abf6c4d29d: Pull complete
a9edb18cadd1: Pull complete
589b7251471a: Pull complete
186b1aaa4aa6: Pull complete
b4df32aa5a72: Pull complete
a0bcbecc962e: Pull complete
Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@localhost ~]#
6、查看nginx镜像
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 17 months ago 141MB
[root@localhost ~]#
7、启动nginx
[root@localhost ~]# docker run -d --name nginx -p 80:80 nginx
dcb11489260306d89e54608e0de1cc7efcce6c444b7f9c85b4018c3bef08a783
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dcb114892603 nginx "/docker-entrypoint.…" 4 seconds ago Up 3 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp nginx
[root@localhost ~]#
8、访问nginx网站,可以看到网站访问成功
[root@localhost ~]# curl http://192.168.122.236
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@localhost ~]#
9、停止docker服务
[root@localhost ~]# systemctl stop docker
Warning: Stopping docker.service, but it can still be activated by:
docker.socket
[root@localhost ~]# systemctl stop docker.socket
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset>
Active: inactive (dead)
Docs: https://docs.docker.com
6月 20 14:59:15 localhost.localdomain dockerd[37327]: time="2023-06-20T14:59:15.26>
6月 20 14:59:15 localhost.localdomain systemd[1]: Started Docker Application Conta>
6月 20 14:59:15 localhost.localdomain dockerd[37327]: time="2023-06-20T14:59:15.30>
6月 20 15:03:52 localhost.localdomain systemd[1]: Stopping Docker Application Cont>
6月 20 15:03:52 localhost.localdomain dockerd[37327]: time="2023-06-20T15:03:52.29>
6月 20 15:03:52 localhost.localdomain dockerd[37327]: time="2023-06-20T15:03:52.52>
6月 20 15:03:52 localhost.localdomain dockerd[37327]: time="2023-06-20T15:03:52.91>
6月 20 15:03:52 localhost.localdomain dockerd[37327]: time="2023-06-20T15:03:52.91>
6月 20 15:03:52 localhost.localdomain systemd[1]: docker.service: Succeeded.
6月 20 15:03:52 localhost.localdomain systemd[1]: Stopped Docker Application Conta>
[root@localhost ~]#
10、同步/var/lib/docker/目录到/home/docker
[root@localhost ~]# rsync -aP /var/lib/docker/ /home/docker/
runtimes/
swarm/
tmp/
trust/
volumes/
volumes/backingFsBlockDev
volumes/metadata.db
32,768 100% 41.29kB/s 0:00:00 (xfr#4432, to-chk=0/6359)
11、重新编辑docker服务配置文件
[root@localhost ~]# cp /usr/lib/systemd/system/docker.service /usr/lib/systemd/system/docker.service.bak
[root@localhost ~]# vi /usr/lib/systemd/system/docker.service
[root@localhost ~]# cat /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
mentation=https://docs.docker.com
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
Requires=docker.socket containerd.service
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd --data-root /home/docker
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
# Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.
# Both the old, and new location are accepted by systemd 229 and up, so using the old location
# to make them work for either version of systemd.
StartLimitBurst=3
# Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
# Both the old, and new name are accepted by systemd 230 and up, so using the old name to make
# this option work for either version of systemd.
StartLimitInterval=60s
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Comment TasksMax if your systemd version does not support it.
# Only systemd 226 and above support this option.
TasksMax=infinity
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
OOMScoreAdjust=-500
[Install]
WantedBy=multi-user.target
12、重新启动docker服务
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset>
Active: active (running) since Tue 2023-06-20 15:10:20 CST; 5s ago
Docs: https://docs.docker.com
Main PID: 38374 (dockerd)
Tasks: 9
Memory: 44.1M
CGroup: /system.slice/docker.service
└─38374 /usr/bin/dockerd --data-root /home/docker
6月 20 15:10:19 localhost.localdomain dockerd[38374]: time="2023-06-20T15:10:19.38>
6月 20 15:10:19 localhost.localdomain dockerd[38374]: time="2023-06-20T15:10:19.63>
6月 20 15:10:19 localhost.localdomain dockerd[38374]: time="2023-06-20T15:10:19.67>
6月 20 15:10:19 localhost.localdomain dockerd[38374]: time="2023-06-20T15:10:19.94>
6月 20 15:10:20 localhost.localdomain dockerd[38374]: time="2023-06-20T15:10:20.05>
6月 20 15:10:20 localhost.localdomain dockerd[38374]: time="2023-06-20T15:10:20.19>
6月 20 15:10:20 localhost.localdomain dockerd[38374]: time="2023-06-20T15:10:20.21>
6月 20 15:10:20 localhost.localdomain dockerd[38374]: time="2023-06-20T15:10:20.21>
[root@localhost ~]#
13、查看docker是否启用新的数据目录
[root@localhost ~]# docker info |grep "Docker Root Dir"
Docker Root Dir: /home/docker
[root@localhost ~]#
14、查看并清除历史的docker容器
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dcb114892603 nginx "/docker-entrypoint.…" 10 minutes ago Exited (0) 8 minutes ago nginx
[root@localhost ~]# docker rm nginx
nginx
15、重新启动nginx容器
[root@localhost ~]# docker run -d --name nginx -p 80:80 nginx
e7f77c08ed3705dabe8a4c8a21ab71f754ee8c5792aef139a7f089e12235c5c2
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e7f77c08ed37 nginx "/docker-entrypoint.…" 6 seconds ago Up 5 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp nginx
[root@localhost ~]#
16、访问nginx网站,发现访问正常
[root@localhost ~]# curl http://192.168.122.236
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@localhost ~]#
17、查看磁盘空间,docker数据在/home/docker下
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.7G 0 1.7G 0% /dev
tmpfs 1.7G 0 1.7G 0% /dev/shm
tmpfs 1.7G 9.1M 1.7G 1% /run
tmpfs 1.7G 0 1.7G 0% /sys/fs/cgroup
/dev/mapper/uos-root 70G 8.9G 62G 13% /
tmpfs 1.7G 28K 1.7G 1% /tmp
/dev/mapper/uos-home 125G 1.1G 124G 1% /home
/dev/sda1 1014M 191M 824M 19% /boot
tmpfs 343M 56K 343M 1% /run/user/0
/dev/loop0 522M 522M 0 100% /mnt
overlay 125G 1.1G 124G 1% /home/docker/overlay2/a1280bbc74922071fe57357fd7dc667e6821ca86ddce4edbb2b4619861cceae2/merged
[root@localhost ~]#
18、删除原有的/var/lib/docker目录,查看释放的磁盘空间大小
[root@localhost ~]# rm -rf /var/lib/docker
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.7G 0 1.7G 0% /dev
tmpfs 1.7G 0 1.7G 0% /dev/shm
tmpfs 1.7G 9.1M 1.7G 1% /run
tmpfs 1.7G 0 1.7G 0% /sys/fs/cgroup
/dev/mapper/uos-root 70G 8.7G 62G 13% /
tmpfs 1.7G 28K 1.7G 1% /tmp
/dev/mapper/uos-home 125G 1.1G 124G 1% /home
/dev/sda1 1014M 191M 824M 19% /boot
tmpfs 343M 56K 343M 1% /run/user/0
/dev/loop0 522M 522M 0 100% /mnt
overlay 125G 1.1G 124G 1% /home/docker/overlay2/a1280bbc74922071fe57357fd7dc667e6821ca86ddce4edbb2b4619861cceae2/merged
[root@localhost ~]#