Docker 的基本操作及迁移
最近一直在捣鼓 VPS ,发现用 Docker 来部署应用很简便,并且迁移起来也方便。因此在这里记录下 Docker 的一些基本操作以及迁移和卸载的方法。
Docker 及 Docker compose 的安装与配置
Docker的安装
-
升级 packages
1
apt update -y
-
安装一些必要软件(Debian 系统比较干净)
1
apt install wget curl sudo vim git -y
-
Docker 安装(这里及下面所指都是大陆外的 vps)
1
wget -qO- get.docker.com | bash
-
使 Docker 开机自启动
1
systemctl enable docker
注意如要卸载 Docker ,则只需执行下面的代码
1 2 3 4
apt-get purge docker-ce docker-ce-cli containerd.io rm -rf /var/lib/docker rm -rf /var/lib/containerd
-
这里我们还要修改一下 Docker 的配置
以下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘。——来自烧饼博客
1 2 3 4 5 6 7 8 9 10 11 12 13
cat > /etc/docker/daemon.json <<EOF { "log-driver": "json-file", "log-opts": { "max-size": "20m", "max-file": "3" }, "ipv6": true, "fixed-cidr-v6": "fd00:dead:beef:c0::/80", "experimental":true, "ip6tables":true } EOF
-
然后重启 Docker 便可生效
1
systemctl restart docker
Docker compose 的安装
-
命令安装:
1 2 3
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
注意如要卸载 Docker compose ,则只需执行下面的代码
1 2 3
cd /usr/local/bin/ rm -rf docker-compose
-
为了管理及迁移的方便,我们一般把所有的 Docker 数据统一放在一处,所以这里我们新建一个路径为
/root/data/docker_data
的文件:1 2
cd ~ mkdir -p /root/data/docker_data
Docker 的迁移
当我们要换服务器时,Docker 的优势便体现了出来。这里我们以将原服务器 A 的 Docker 项目 doc 迁移至新服务器 B 为例:
doc 项目的传输
|
|
开启 B 服务器上的 doc 项目
|
|
- 若 doc 是以 Docker 命令形式部署的项目: 只需把之前部署的命令再敲一次就行(但是注意路径的映射)
- 若 doc 是以 Docker compose 部署的项目:
1 2
cd /root/data/docker_data/doc docker-compose up -d
停止 A 服务器上的 doc 项目并删除
这一步,可见 Docker 项目的停止及删除
Docker 项目的停止及删除
以 Docker 命令部署的项目的停止及删除
以 Docker compose 部署的项目也适用
我们要停止一个正在运行的 Docker 容器,首先要知道容器的名字或 ID ,所以可以通过下面命令,列出所有在运行的容器信息:
|
|
-
容器的停止
1 2
docker stop <name_or_id> # <name_or_id> 为容器名或 ID
如果我们只是想把项目停下,但保留数据,以便下次打开的话,到那么到这一步就可以了。但如果我们要将整个项目删除,则可以继续下面的步骤。
-
容器的删除
1
docker rm -f <name_or_id>
-
镜像的删除
虽然我们删除了容器,但最占空间的镜像我们并没有删除。
注意这里我们就算我们使用docker ps -a
,也无法查看已删除容器的信息,但这并不意味着这个项目已经删干净了。1
docker image ls -a
找到与删除容器所对应的镜像,执行下面的命令便可删除镜像:
1 2
docker rmi -f <image_name_or_id> # 这里 <image_name_or_id> 为镜像名或 ID
-
删除本地映射文件
我们在运行 Docker 项目时常常会将本地文件与容器中文件做一个映射,然后容器的数据便会在映射的本地文件中储存,这也是我们要删除的一部分,我们可以执行下面的命令:
1 2 3
rm -rf <your_path> # <your_path>为本地映射文件的路径 # 如果按照之前的规范,该路径一般为 /root/data/docker_data/doc ,把 doc 换为你的项目名即可
提示其实一般来说,我们只要留着映射文件,就能重新部署出一模一样的 Docker 项目,这正如我们在项目迁移的过程中所做的。所以尽量不要删除比较好。 -
其他
还有网络配置等的数据需要删除,但一般而言,它们占空间并不大,如要细究可见这里。
-
总结
总体而言,这种删除方法比较复杂,如果没啥要保留的镜像,我们可以直接使用Docker 数据的清理介绍的方法来清除这些数据(但是映射文件无法通过该方法清除)。
以 Docker compose 部署的容器的停止及删除
以 Docker 命令部署的项目并不适用
这里仍以上面的 doc 项目为例
|
|
这里我们只能停止并删除容器,而其他操作参考以 Docker 命令部署的项目的停止及删除的镜像删除及其之后的操作。
Docker 数据的清理
使用 Docker 就不得不面对一个问题,那就是磁盘空间的清理,因为我们有时会忘记删除不用的 Docker 容器及镜像。
我们一般可以通过下面的代码来查看 Docker 镜像与容器的占用情况:
|
|
我们可能会看到一个很可怕的数据,因此我们应当定期地删除一些已停止的容器,未使用的网络和悬挂的镜像,即执行下面的命令:
|
|
或者,更激进一点,直接删除所有与正在运行的容器无关的镜像:
|
|
参考文章: