详解修改docker时区及docker常用命令
前几天遇到这样一个业务场景,数据库运行在docker中,docker的市区是utc所以就跟北京时间相差8个小时。但是又不能重新运行一个容器,只能保证数据库运行状态,并把宿主机的时区复制给docker容器。很苦恼,
首先我先把宿主机的时区改成啦CST北京时间。然后把宿主机的时区复制给docker容器。命令如下
dockercp/etc/localtime:【容器ID或者NAME】/etc/localtime
当然也可以进入容器进行修改时区(不过我的容器修改的时候总是报/etc/localtime文件只读,不让修改。所以就用了上面的方法),命令如下
首先添加所有的时区
然后再修改时区
apkaddtzdata ln-sf/usr/share/zoneinfo/Asia/Shanghai/etc/localtime echo"Asia/Shanghai">/etc/timezone
当然,在容器内改,也很麻烦,每次启动新的容器那么就要修改,所以在dockerfile中修改更好啦。命令如下
ENVTZ=Asia/Shanghai RUNln-snf/usr/share/zoneinfo/$TZ/etc/localtime&&echo$TZ>/etc/timezone
最后附上docker常用命令
dockerps查看运行的容器
dockerps-a查看停止的容器
dockerps-q仅列出容器ID
dockerps-s显示容器大小。
dockerimages查看镜像
dockerimages-q仅列出镜像ID
dockerimages–tree以树状结构列出镜像的所有提交历史。
dockerpullIMAGE_ID下载image
dockerpushIMAGE_ID上传image
dockerrmiIMAGE_ID删除image
dockerrmi-f强行移除该镜像,即使其正被使用;
dockerlogs-f<容器名orID>查看容器日志
dockerstart|stop|restart启动、停止和重启一个或多个指定容器。
启动一个container并进入交互模式
dockerstart-icontainerID
显示一个镜像的历史;
dockerhistoryimage_name
进入容器
dockerexec-it容器idbin/bash
启动容器并启动bash(交互方式):
$dockerrun-i-t<image_name/continar_id>/bin/bash
启动容器以后台方式运行(更通用的方式):
$dockerrun-d-itimage_name
dockerrun命令解释
-d后台运行容器,并返回容器ID;
-i以交互模式运行容器,通常与-t同时使用;
-t为容器重新分配一个伪输入终端,通常与-i同时使用;
将container的端口映射到宿主机的端口
dockerrun-i-t-p<host_port:contain_port>
将一个container固化为一个新的image,后面的repo:tag可选
dockercommit<container>[repo:tag]
删除一个或多个container
dockerrm<container...>
删除所有的container
dockerrm`dockerps-a-q`
同上,删除所有的container
dockerps-a-q|xargsdockerrm
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。