Docker学习笔记

Docker学习笔记

参考资料:《Docker-从入门到实践》

镜像

创建镜像

从仓库下载
# 简略版,默认从官方Docker Hub上下载镜像
docker pull ubuntu:16.04(镜像标签)
# 完全版,指定镜像仓库下载镜像
docker pull [Docker Registry 地址[:端口号]/]仓库名[:标签]
通过Dockerprofile创建
Dockerprofile指令
  • COPY 复制文件:
    • COPY <源路径>... <目标路径>
    • COPY ["<源路径1>",... "<目标路径>"]
  • ADD 更高级的复制文件
    • 格式于COPY相同
    • 原路径可以是URL,自动下载,文件权限为600,压缩文件不解压
    • 源路径如果是tar压缩文件,将自动解压至目标路径
  • CMD 容器启动命令
    • shell格式: CMD <命令>
    • exec格式: CMD ["可执行文件", "参数1", "参数2"...]
    • 注意:由于一个容器实际上就是一个进程,使用shell格式,实际的命令会被包装成shell -c参数的形式进行执行。比如:CMD echo $HOME,在实际过程中被解释为CMD ["sh", "-c", "echo $HOME"]
  • ENTRYPOINT 入口点
    • ENTRYPOINT的格式和RUN指令格式一样,分为exec格式和shell格式。
    • *
  • ENV 设置环境变量
    • ENV <key> <value>
    • ENV <key1>=<value1> <key2>=<value2>...
  • ARG 构建参数
    • 格式: ARG <参数名>[=<默认值>]
    • 构建参数和ENV的效果一样,都是设置环境变量。ARG,所设置的构建环境的环境变量,在将来容器运行时是不会存在这些环境变量的。但是不要因此就使用ARG保存密码之类的信息,因为docker history还是可以看到所有值的。 Dockerfile 中的ARG指令是定义参数名称,以及定义其默认值。该默认值可以在构建命令 docker build 中用 --build-arg <参数名>=<值>来覆盖。
  • VOLUME 定义匿名卷
    • 格式为:
      • VOLUME ["<路径1>", "<路径2>"...]
      • VOLUME <路径>
    • 容器运行时应该尽量保持容器存储层不发生写操作,对于数据库类需要保存动态数据的应用,其数据库文件应该保存于卷(volume)中
    • Dockerfile中,我们可以事先指定某些目录挂载为匿名卷,这样在运行时如果用户不指定挂载,其应用也可以正常运行,不会向容器存储层写入大量数据
  • EXPOSE 声明端口
    • 格式为 EXPOSE <端口1> [<端口2>...]
    • EXPOSE指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务。在Dockerfile中写入这样的声明有两个好处,一个是帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射;另一个用处则是在运行时使用随机端口映射时,也就是 docker run -P时,会自动随机映射EXPOSE的端口。
  • WORKDIR 指定工作目录
    • 格式为 WORKDIR <工作目录路径>
    • 使用 WORKDIR 指令可以来指定工作目录(或者称为当前目录),以后各层的当前目录就被改为指定的目录,如该目录不存在,WORKDIR会帮你建立目录。
  • USER 指定当前用户
    • 格式:USER <用户名>
    • USER 指令和 WORKDIR 相似,都是改变环境状态并影响以后的层。WORKDIR 是改变工作目录,USER 则是改变之后层的执行 RUN, CMD 以及 ENTRYPOINT 这类命令的身份。
  • HEALTHCHECK 健康检查
    • 格式:
      • HEALTHCHECK [选项] CMD <命令>:设置检查容器健康状况的命令
      • HEALTHCHECK NONE:如果基础镜像有健康检查指令,使用这行可以屏蔽掉其健康检查指令
    • HEALTHCHECK 指令是告诉 Docker 应该如何进行判断容器的状态是否正常,这是 Docker 1.12 引入的新指令。
  • ONBUILD 为他人做嫁衣裳
    • 格式:ONBUILD <其它指令>
    • ONBUILD 是一个特殊的指令,它后面跟的是其它指令,比如 RUN, COPY 等,而这些指令,在当前镜像构建时并不会被执行。只有当以当前镜像为基础镜像,去构建下一级镜像的时候才会被执行。
    • Dockerfile 中的其它指令都是为了定制当前镜像而准备的,唯有 ONBUILD 是为了帮助别人定制自己而准备的。
创建命令
docker builder -t 仓库名[:标签] [Dockerprofile的路径]

查看镜像

docke images 

删除镜像

docker image rm [选项] <镜像1> [<镜像2> ...]

容器

创建并启动容器

# 创建容器并进入bash交互界面
docker run -i -t 仓库名[:标签] /bin/bash
  • docker run 命令参数
    • -i: 让容器的标准输入保持打开
    • -t: 让docker分配一个伪终端(pseudo-TTY),并绑定到容器的标准输入上
    • -p 8080:8080: 内部端口8080映射到外部端口8080
    • -d: 让容器后台运行,并返回container id,通过docker container logs [container ID or NAMES]查看输出信息
    • --name: 指定容器名称

查看容器

# 查看容器
docker container ls
# 查看所有已创建的容器,包括终止状态
docker container ls -la

进入后台运行的容器

  • attach: 退出时会关闭容器

    docker attach [id or name]
  • exec: 退出时不关闭容器

    docker exec -it [id or name]

终止容器

docker container stop [id or name]

在启动时进入容器终端,exitCtrl+d退出终端时,该容器立刻终止

导出容器

导出某个镜像快照

docker export [id or name] > name.tar

导入容器

将容器快照导入本地镜像库

docker import [source] []

删除容器

  • 单个删除容容器

    docker container rm [容器ID或Name]
  • 清空所有处于终止状态的容器

    docker container prune
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值