docker 基础

命令

打镜像(最后有个点代表当前路径)docker build -t XXXXXXX .
运行镜像docker run -d -p 8850:8850 XXXXXX 或者 docker run -it XXXXXX
查看镜像docker images
镜像重命名docker tag a:0.0.1 b:0.0.2
删除镜像docker rmi IMAGE ID 或 REPOSITORY:TAG
查看所有的容器,包括未运行的docker ps -a
终止容器docker stop ID
启动&重启容器docker start ID 以及 docker restart ID
删除容器docker rm ID (需要先停止) docker rm -f ID
删除镜像docker rmi ID
进入容器docker attach ID 或者 docker exec -it ID /bin/bash (表示shell类型)
登录私库docker login -u username -p pwd repository.xxxx.com
打标签docker tag b8b371ec6a52 image1:v1.0.1
推送到私库docker push image1:v1.0.1
镜像导出成tardocker save -o c:\x.tar xxxx
tar文件导入镜像docker load -i my.tar
删除所有已经停止的容器docker rm $(docker ps -a -q)
删除所有未被容器使用的镜像docker image prune -a
删除所有none的镜像docker rmi `docker images | grep “<none>” | awk ‘{print $3}’`
按规则批量删除资料
docker system df -vdocker各种东西磁盘占用情况
docker volume prune清理未被容器使用的volume
docker volume rm $(docker volume ls -qf dangling=true)删除所有未被任何容器关联引用的卷
docker system prune( -a)自动清理资源:已停止的container、未被容器使用的volume、未被容器关联的network、悬空image

部分命令详细可参考:https://www.cnblogs.com/ivictor/archive/2015/09/08/4791274.html

Dockerfile

基础:
http://www.dockerinfo.net/dockerfile%e4%bb%8b%e7%bb%8d

样例:

FROM maven:3.6.3-jdk-8-buster AS build

COPY . /build/

WORKDIR /build
RUN mvn clean package -Dskiptests
RUN ls /build/XxxService/target/

FROM openjdk:8-jdk-alpine

#create workdir
RUN mkdir -p /usr/local/service
WORKDIR /usr/local/service

#add jar file
COPY --from=build /build/XxxService/target/XxxService.jar app.jar

#set time zone
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone

#port
EXPOSE 80

#run app
ENTRYPOINT ["java","-server","-jar","app.jar"]

以上样例中出现了多阶段构建的方法,目的是减小最终镜像的大小,不将源码和编译工具放进最终镜像中。
多阶段构建:https://www.qikqiak.com/post/multi-stage-build-for-docker/
减小镜像体积的方法:https://www.jb51.net/article/194887.htm

原理

a. FROM java8 是使用本地镜像

b. 如果我想在一个已经运行的容器中 临时修改时间,可能出现以下情况:

date -s '2020-01-07 15:00:40'
date: cannot set date: Operation not permitted

docker容器的隔离是基于Linux的Capability机制实现的, Capability机制将超级用户的高级权限划分成为不同的单元. 目前Docker容器默认只用到了以下的Capability:
CHOWN, DAC_OVERRIDE, FSETID, FOWNER, MKNOD, NET_RAW, SETGID, SETUID, SETFCAP, SETPCAP, NET_BIND_SERVICE, SYS_CHROOT, KILL, AUDIT_WRITE

后续内容待补充。。。

registry可视化

  1. pull镜像docker-registry-web:latest
  2. docker run -d -p 28882:8080 -e REGISTRY_URL=http://127.0.0.1:28881/v2 -e REGISTRY_READONLY=false docker-registry-web:latest
  3. 访问 28882端口即可
    在这里插入图片描述
    如果该镜像运行在windows,URL不是localhost:28882.而是这个IP->在这里插入图片描述

磁盘不够问题

1.节点磁盘不够
干掉无用容器和镜像等。
2.registry容器volume占用过大
由于数据卷大小自动增加,即使删掉无用镜像,volume也不会变小。
registry容器内部清理垃圾命令:docker exec -it registry /bin/registry garbage-collect /etc/docker/registry/config.yml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值