前言
最近在工作中,接手了不少歷史遺留的項目,有一些依賴是使用的Docker啟動,可以正常使用。但是由于優化服務器資源的緣故,需要將這些依賴遷移到其他服務器,這時候問題出現了。此類依賴都是直接使用docker run啟動一個容器運行,沒有使用docker-compose這樣的編排工具,也沒有保存docker run的命令,給遷移造成了麻煩。如果我們無法找到docker run的啟動參數,那么遷移完成后,有大概率會出現不一致的情況。
那么,能不能找回之前的run命令呢,答案是可以的。
方法很多,筆者一般使用的是runlike命令來查看。
安裝pip
# yum install -y Python-pip
安裝runlike
# pip install runlike
命令安裝完成,下面來看一下如何通過runlike命令來找回docker run的啟動參數。
發布一個測試容器
# docker run -d -v /data/Nginx:/data/nginx -v /etc/hosts:/etc/hosts -p 8080:80 --name nginx nginx:1.18
# netstat -lntup | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 5357/docker-proxy
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
76a49h8f017c nginx:1.18 "nginx -g 'daemon of…" 2 seconds ago Up 2 seconds 0.0.0.0:8080->80/tcp nginx
使用runlike查看啟動參數
格式:runlike -p <容器名>|<容器ID>
# runlike -p nginx
docker run
--name=nginx
--hostname=76a49h8f017c
--env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
--env=NGINX_VERSION=1.18.3
--env=NJS_VERSION=0.3.9
--env='PKG_RELEASE=1~buster'
--volume=/data/nginx:/data/nginx
--volume=/etc/hosts:/etc/hosts
-p 8080:80
--restart=no
--label maintainer="NGINX Docker Maintainers <docker-maint@nginx.com>"
--detach=true
nginx:1.18
nginx -g 'daemon off;'
至此,再也不用擔心找不到docker run參數了。
后記
工作中經常遇到此類需求,順便記錄下,供之后翻閱,養成好習慣^_^