前幾天遇到這樣一個業務場景,數據庫運行在docker 中,docker 的市區是utc 所以就跟北京時間相差8個小時。但是又不能重新運行一個容器,只能保證數據庫運行狀態,并把宿主機的時區復制給docker 容器。很苦惱,
首先我先把宿主機的時區改成啦CST 北京時間。然后把宿主機的時區復制給docker 容器。命令如下
docker cp /etc/localtime:【容器ID或者NAME】/etc/localtime
當然也可以進入容器進行修改時區(不過我的容器修改的時候總是報/etc/localtime 文件只讀,不讓修改。所以就用了上面的方法),命令如下
首先添加所有的時區
然后再修改時區
apk add tzdata ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime echo "Asia/Shanghai" > /etc/timezone
當然,在容器內改,也很麻煩,每次啟動新的容器那么就要修改,所以在dockerfile 中修改更好啦。命令如下
ENV TZ=Asia/ShanghaiRUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
最后附上docker 常用命令
docker ps 查看運行的容器
docker ps -a 查看停止的容器
docker ps -q 僅列出容器ID
docker ps -s 顯示容器大小。
docker images 查看鏡像
docker images -q 僅列出鏡像ID
docker images –tree 以樹狀結構列出鏡像的所有提交歷史。
docker pull IMAGE_ID 下載image
docker push IMAGE_ID 上傳image
docker rmi IMAGE_ID 刪除image
docker rmi -f 強行移除該鏡像,即使其正被使用;
docker logs -f <容器名orID> 查看容器日志
docker start|stop|restart 啟動、停止和重啟一個或多個指定容器。
啟動一個container并進入交互模式
docker start -i containerID
顯示一個鏡像的歷史;
docker history image_name
進入容器
docker exec -it 容器id bin/bash
啟動容器并啟動bash(交互方式):
$docker run -i -t <image_name/continar_id> /bin/bash
啟動容器以后臺方式運行(更通用的方式):
$docker run -d -it image_name
docker run 命令解釋
-d 后臺運行容器,并返回容器ID;
-i 以交互模式運行容器,通常與 -t 同時使用;
-t 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;
將container的端口映射到宿主機的端口
docker run -i -t -p <host_port:contain_port>
將一個container固化為一個新的image,后面的repo:tag可選
docker commit <container> [repo:tag]
刪除一個或多個container
docker rm <container...>
刪除所有的container
docker rm `docker ps -a -q`
同上, 刪除所有的container
docker ps -a -q | xargs docker rm
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答
圖片精選