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  

docker 查看启动失败容器 docker查看启动参数_docker 查看启动失败容器

 解决日志过大全局永久配置

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

docker 查看启动失败容器 docker查看启动参数_tomcat_02

 

将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