1.查看docker启动时的命令
rekcod可以将以下任何内容转换为docker run命令:
yum install npm -y && npm i -g rekcod
docker ps -qa|rekcod
2.rekcod backendapp #输入命令得到以下结果
[root@iZj6c7bzufsptcxdksnhdlZ ~]# rekcod backendapp
docker run --name backendapp --runtime runc -v /home/applications/backend/newbackendapp:/home/tomcat/webapps/ROOT -p 8888:8080/tcp --restart always -h 5a9ee8aaceae --expose 443/tcp --expose 8080/tcp -l org.label-schema.build-date='20181006' -l org.label-schema.license='GPLv2' -l org.label-schema.name='CentOS Base Image' -l org.label-schema.schema-version='1.0' -l org.label-schema.vendor='CentOS' -e 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/data/jdk7/bin' -e 'LC_ALL=zh_CN.utf8' -e 'JAVA_HOME=/data/jdk7' -e 'CLASSPATH=.:/data/jdk7/jre/lib/rt.jar:/data/jdk7/lib/tools.jar' -e 'TZ=Asia/Shanghai' -d bedc9e79a12b '/home/tomcat/bin/catalina.sh' 'run'
3.通过上面结果还原出原始命令为
docker run -d --name=backendapp -v /home/applications/backend/newbackendapp:/home/tomcat/webapps/ROOT -p 8888:8080 --restart=always jinbian/c7-jdk7-t7:0.3
4.更新docker启动时参数
docker container update --restart=always nginx_ht
5.docker安装反查docker启动时命令参数
6.runlike
推荐使用上面第一种方式,那个一目了然些
# 常规语法
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike YOUR-CONTAINER
# 使用别名运行它,例如,将其保存在~/.profile或中~/.bashrc
alias runlike="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike"
runlike YOUR-CONTAINER #以本地命令运行[root@iZj6c7bzufsptcxdksnhdlZ ~]# runlike backendapp
docker run --name=backendapp --hostname=5a9ee8aaceae --mac-address=02:42:ac:11:00:02 --env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/data/jdk7/bin
--env=LC_ALL=zh_CN.utf8 --env=JAVA_HOME=/data/jdk7 --env=CLASSPATH=.:/data/jdk7/jre/lib/rt.jar:/data/jdk7/lib/tools.jar --env=TZ=Asia/Shanghai
--volume=/home/applications/backend/newbackendapp:/home/tomcat/webapps/ROOT --expose=443 -p 8888:8080 --restart=always --label='org.label-schema.license=GPLv2'
--label='org.label-schema.name=CentOS Base Image' --label='org.label-schema.build-date=20181006' --label='org.label-schema.schema-version=1.0'
--label='org.label-schema.vendor=CentOS' --runtime=runc --detach=true bedc9e79a12b /home/tomcat/bin/catalina.sh run
docker cp -L /usr/share/zoneinfo/Asia/Shanghai rabbitmq-3.7-management:/etc/localtime
正在运行的容器,时间如何同步?
有些同学看到这里,不禁会问,如果是一个正在运行的docker容器,如何同步时间呢?
这种方式同样适用于,构造镜像完成后,时间不同步的状况
在宿主机执行命令如下:
docker cp -L /usr/share/zoneinfo/Asia/Shanghai 【容器名】:/etc/localtime
docker 镜像仓库镜像查看和版本获取
curl http://127.0.0.1:5000/v2/_catalog
curl http://127.0.0.1:5000/v2/pro-mall_swarm-portal/tags/list
docker常用命令
docker 镜像上传
docker build -t docker.io/jinbian/centos7-jdk7-resin3.2 . #制作镜像
docker run -d -it --name=ceshi -p 9090:8080 03dd580e06f1 #启动镜像
docker logs ceshi #查看日志
docker logs -f -t --tail 100 logstash #查看容器最后十行日志
docker exec -it ceshi bash #进入容器
docker system df -v #查看镜像和容器占用磁盘大小
docker exec -it shard1_3 mongo --port 27018 bash
docker start $(docker ps -qa) #这个命令可以用来服务器关机以后docker启动旧服务
docker rmi $(docker images -qa) #删除镜像
docker login: jinbian #登入私人账号
passwd: liujia192316
docker commit 58c5c56789cd docker.io/jinbian/centos7-jdk7-resin3-paygate:1.3 将修改后的容积打包成新的镜像
CMD ["/home/tomcat/bin/catalina.sh","run"] #制作镜像不知道启动方式可以看官方仓库镜像的启动方式
docker tag docker.io/noyes21/huanyin-http-c6-r3-j7:1.0 docker.io/jinbian/huanyin-http-c6-r3-j7:1.0 #重新打上标签,改成账号的用户名
docker tag f07b9830ea9b docker.io/jinbian/centos6-http-c6-r3-j7:1.0
docker push docker.io/jinbian/centos6-http-c6-r3-j7:1.0 #上传到私人仓库只能两根划线,要有自己的用户名
docker push docker.io/jinbian/centos7-jdk7-tomcat7:1.0 #上传私人仓库钱不需要改成自己的用户名,斜划线只能两根
docker 日志拷贝
docker cp 3ec8d66e7a4f:/home/logs/lobbyweb_bxyl.log ./ 拷贝本地
COPY jdkkk b28041776acd:/data/jdk7/jre/lib/security 拷贝docker
docker logs -f -t --tail 1000 3ec8d66e7a4f > logs #导出日志最后输出的行
docker logs --tail 5000 b465122264c3 > logs
docker image rm -f $(docker images -qa) 删除所有镜像
docker rm -f $(docker ps -qa) 删除所有容器
docker run -it -v /root/html:/usr/share/nginx/html -p 8080:80 --name=nginx -d nginx #-v挂载磁盘
docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
sed -i "s/oldString/newString/g" `grep oldString -rl /path` #-r(目录) -l 列出文件内容符合指定的范本样式的文件名称,过滤掉内容
sed -i "s/oss_room_v2/oss_bi_all_room/g" `grep oss_room_v2 -rl /home/hadoop/nisj/automationDemand/idfaQuery`
sed -i “s/原字符串/新字符串/g” `grep -rl 原字符串 所在目录`
该命令主要是为了详细展示查看运行时的command参数
docker ps -a --no-trunc | grep container_name # 通过docker --no-trunc参数来详细展示容器运行命令
docker inspect container_name #输出容器信息
docker history container_name #输出镜像构建信息
解决docker占用磁盘过大,docker systemctl df -v 查看镜像和容器磁盘占用都不高,最好查到是/var/lib/docker/containers/container_id/container-json.log过大,临时解决方案清空日志,下次还是会过大,cat /dev/null >json.log 清空这个文件的内容,释放磁盘空间; 需要重启容器,才能继续记录日志。
#添加max-size参数来限制文件大小
docker run -it --log-opt max-size=10m --log-opt max-file=3 alpine ash #最大不超过10m,不超过三个日志文件
cat /dev/null > 9cb7650c139325cacf1973151220139cf273c9458ba3e95f51eca0ec8cf5a395-json.log
解决日志过大全局永久配置
vi /etc/docker/daemon.json
{
"log-driver": "json-file",
"log-opt": {
"max-size": "10m",
"max-file": "3"
}
容器运行时 每个日志文件最大为10M ,每个容器 最多可以保存3份日志文件
批量删除Docker中已经停止的容器,和未打标签的镜像
#显示所有的容器,过滤出Exited状态的容器,取出这些容器的ID,
sudo docker ps -a|grep Exited|awk '{print $1}'
#查询所有的容器,过滤出Exited状态的容器,列出容器ID,删除这些容器
sudo docker rm `docker ps -a|grep Exited|awk '{print $1}'`
删除未打标签的镜像
docker images | grep '<none>' |awk '{print $3}'
k8s镜像管理命令
查出k8s中pod在使用的镜像
kubectl get -o wide deploy -n yxyw-uat |awk '{print $7}'
查出镜像地址,勾选正则开头配上镜像推送命令
gem-acr-p-a01-registry-vpc.cn-shenzhen.cr.aliyuncs.com/osale/gyx-admin:yxyw-pre-2023-06-05-11-18-10
将pod在使用的镜像推送到镜像仓库
ctr -n k8s.io i push -u lj@gemdale-ali:passwd gem-acr-p-a01-registry-vpc.cn-shenzhen.cr.aliyuncs.com/osale/gyx-admin:yxyw-pre-2023-06-05-11-18-10