docker学习笔记

常用命令

# 批量操作
docker container stop cd3 269 34b 751    # 跟上多个容器ID
docker container stop $(docker container ps -aq)   # 批量操作
docker container rm $(docker container ps -aq)

# 批量清理所有退出的容器
docker system prune -f
# 批量清理所有未使用的镜像
docker image prune -a

# 拉取镜像
docker pull nginx:1.20.0

# 查看镜像详情
docker image inspect dda9cfa9f451

# 镜像导入、导出,以便内网节点间传递
docker image save nginx:1.20.0 -o nginx.image
docker image load -i ./nginx.image

# 查看镜像构建历史
docker image history 97b

# 查看容器运行日志
docker logs af945

Dockerfile

基础镜像的选择 (FROM)
  • 官方镜像优于非官方的镜像,如果没有官方镜像,则尽量选择Dockerfile开源的
  • 固定版本tag而不是每次都使用latest
  • 尽量选择体积小的镜像
通过 RUN 执行指令

RUN 主要用于在Image里执行指令,比如安装软件,下载文件等。

将多条命令写在一个RUN中。每一行RUN命令都会产生一层image layer, 导致镜像的臃肿

文件复制和目录操作 (ADD,COPY,WORKDIR)

COPYADD 都可以把local的一个文件复制到镜像里,如果目标目录不存在,则会自动创建

ADD 比 COPY高级一点的地方就是,如果复制的是一个gzip等压缩文件时,ADD会帮助我们自动去解压缩文件。

所有的文件复制均使用 COPY 指令,仅在需要自动解压缩的场合使用 ADD。

FROM python:3.9.5-alpine3.13
COPY hello.py /app/hello.py

FROM python:3.9.5-alpine3.13
ADD hello.tar.gz /app/
构建参数和环境变量 (ARG vs ENV)

两者区别在于生效范围

ENV设置的变量还可以在Image中保持,作为容器中的环境变量

FROM ubuntu:20.04
ENV VERSION=2.0.1
RUN apt-get update && \
    apt-get install -y wget && \
    wget https://github.com/ipinfo/cli/releases/download/ipinfo-${VERSION}/ipinfo_${VERSION}_linux_amd64.tar.gz && \
    tar zxf ipinfo_${VERSION}_linux_amd64.tar.gz && \
    mv ipinfo_${VERSION}_linux_amd64 /usr/bin/ipinfo && \
    rm -rf ipinfo_${VERSION}_linux_amd64.tar.gz

ARG仅在镜像构建时生效。另外ARG参数可以通过 --build-arg 动态修改对应的value

 docker image build -f .\Dockerfile-arg -t ipinfo-arg-2.0.0 --build-arg VERSION=2.0.0 .
容器启动命令 CMD

CMD可以用来设置容器启动时默认会执行的命令。

  • 容器启动时默认执行的命令
  • 如果docker container run启动容器时指定了其它命令,则CMD命令会被忽略
  • 如果定义了多个CMD,只有最后一个会被执行。
容器启动命令 ENTRYPOINT

ENTRYPOINT也可以设置容器启动时要执行的命令,但是和CMD是有区别的。

  • CMD 设置的命令,可以在docker container run 时传入其它命令,覆盖掉 CMD 的命令,但是 ENTRYPOINT 所设置的命令是一定会被执行的。
  • ENTRYPOINTCMD 可以联合使用,ENTRYPOINT 设置执行的命令,CMD传递参数
FROM ubuntu:20.04
ENTRYPOINT ["echo", "hello docker"]

$ docker container run -it --rm demo-entrypoint
hello docker

# echo "hello world" 被整体当成参数传递给ENTRYPOIN
  • 13
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值