Docker 核心操作解析

镜像

  • docker images [REPOSITORY[:TAG]] 查看所有/[指定]镜像
  • docker rmi <image> 删除指定镜像
  • docker tag <image> <REPOSITORY>:<TAG> 重命名镜像
  • docker build <路径> 在指定路径下搜索Dockerfile文件, 并利用其创建镜像
    (路径输入-表示从标准输入中读取Dockerfile内容)
    -f 允许使用非名为Dockerfile的文件进行创建
    --build-arg <key>=<value> 传递参数给Dockerfile(用ARG <key>接收)
    --no-cache 不使用缓存, 每次构建都会重新执行所有步骤(在确保镜像最新性或当Dockerfile变化时很有用)
    -t <name>:<tag> 给镜像命名

容器

  • docker ps 查看所有容器(运行中)
    -a 查看所有容器(包含未运行的)
  • docker run [option] <image> [COMMAND] [ARG...] 创建容器
    -p <host_port>:<container_port> 指定端口映射
    -P 将Dockerfile中指定的所有暴露的端口 自动随机映射到主机的 高端口上(大于1023)
    -it 创建一个有交互式终端的容器, 要在COMMAND中指定使用的终端
    -e <key>=<value> 设置容器中的环境变量
    --name <name> 为容器设置名称
    -d 在后台运行
    -v <host_path>:<container_path> 将主机的目录或文件挂载到容器内
    挂载:容器在挂载目录中可以访问主机上的被挂载目录,并且对容器内挂载目录的修改也会反映在主机目录上
    [COMMAND] [ARG...] 在创建容器后, 在容器中运行指定的命令
  • docker start|stop|restart|pause|unpause <container> 启动|停止|重启|停止|取消停止 容器
  • docker rm <container> 删除容器
    -f 强制删除一个运行中的容器
    -v 删除与容器关联的卷(默认不会删除卷)
  • docker exec <container> [OPTIONS] <COMMAND> [<ARG>...] 在容器中执行指定命令
    -d 在后台运行指令
    -it 分配一个交互式伪终端, 要在COMMAND中指定使用的终端

镜像仓库

  • 登录 login|登出 logout
    • docker login
    • docker logout
  • 上传镜像 push
    • docker push 容器名[:TAG]
    • 注:容器要改为 用户名/名字 后才可以上传
  • 下载镜像 pull
      • docker pull 名字[:TAG]
  • 搜索镜像 search

Dockerfile

FROM <image>[:<tag>=latest]
#指定基础镜像,必须要有
LABEL <key>=<value> ...
#为所创建的镜像添加元数据,如作者、版本、描述等信息, 可以有多个LABEL指令,它们会合并成一个元数据集合
WORKDIR <path>
#指定在容器中执行各种命令的工作目录(容器中没有该目录会自动创建),后续的COPY ADD RUN都会在该路径下执行
COPY [--chown=<user>:<group>] <host_path>... <container_path>
ADD [--chown=<user>:<group>] <host_path>... <container_path>
#两个都是复制主机文件到容器中,提供--chown可在复制文件的同时更改文件的所有者和所有组
#相比COPY,ADD还可以处理远程文件 并 自动解压压缩文件, 在<container_path>处可填入url下载远程文件
RUN <command>
#运行命令,若想运行多个命令,可用&&连接
#每个RUN都会创建一个镜像层,每个层中都包含了该层操作所产生的文件系统变化,若有过多镜像层会导致镜像变得臃肿
EXPOSE <port>[/<protocol>=tcp] ... 
#暴露指定端口,使其可在创建容器时进行 端口映射, protocol可指定端口对应的协议
ENV <key>=<value> [<key>=<value>...]
#设置环境变量
CMD ["<executable>", "<param1>", ...] 或 CMD <command> <param1> ...
#指定容器启动时要执行的默认命令,如果在docker run命令中指定了其他命令,那么CMD指令中的命令会被覆盖
#第二种形式会在/bin/sh -c下执行
#若有多个CMD, 则只有最后一个会生效
ENTRYPOINT ["<executable>", "<param1>", ...] 或 ENTRYPOINT <command> <param1> ...
#与CMD相似,但不会被docker run命令指定的命令覆盖,而是将docker run命令中的参数作为参数传递给ENTRYPOINT指令中的命令
#ENTRYPOINT主要用于创建可执行的容器镜像,使得容器像一个独立的可执行程序

多阶段构建:允许在一个Dockerfile中使用多个FROM指令,将构建过程分为多个阶段, 并且可以在阶段之间传递文件,从而实现将构建过程和运行过程分离,构建出更精简、更安全的 Docker 镜像
FROM <image>[:<tag>=latest] as <name>
#给该阶段构建设置名字
COPY --from=<name> <name_path>... <this_path>
#可在其它阶段中将该阶段的文件复制过来

docker-compose.yml

#docker-compose是一个用于定义和运行多容器Docker应用程序的工具,适合用于复杂的、由多个容器组成的应用场景
version: "<version>"
services:
    <service_name>:
        build: <dockerfile_dirpath>
        ports: 
        - "<host_port>:<container_port>"

--终端中--
docker-compose up 启动程序
    -d 后台运行
docker-compose down 关闭程序
    --volumes 删除所有卷
    --rmi 删除镜像(不会删基础镜像)
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇