docker 学习笔记
🪞docker 学习笔记
自学笔记|2024-12-13|Last edited: 2024-12-14
type
status
date
slug
summary
tags
category
icon
password

Basic commands

image 和 container 的关系

  • 镜像是容器的蓝图:镜像就像是一个静态的模板,而容器是这个模板的一个动态实例。每次启动容器时,Docker 都会基于指定的镜像创建一个新的容器。
  • 容器是镜像的运行时实例:镜像本身并不会执行任何操作,只有通过容器才能运行应用程序。因此,镜像相当于应用程序的“静态包装”,容器则是应用程序的“执行环境”。
  • 容器可以基于镜像进行修改:容器运行时可以对其内部文件系统进行更改,如修改配置文件、安装软件等。这些修改只会影响当前容器,容器被销毁时,所有修改也会丢失。若要保留这些修改,可以将容器的状态保存为一个新的镜像。

list containers

  • docker ps 列出所有正在运行的容器
  • docker ps -a 列出所有容器(无论是否正在运行)

stop a container

  • docker stop container_name

remove a container

  • docker rm container_name

list images

  • docker images

remove images

  • docker rmi image_name

download an image

  • docker pull image_name

append a command

  • docker run ubuntu sleep 5

execute a command

  • docker exec container_name cat /etc/hosts

attach and detach

  • docker run -d image_name
  • docker attach container_name

Docker run

tag

  • docker run redis:4.0

stdin

  • -i 选项使容器保持标准输入(STDIN)打开,从而可以与容器进行交互。
    • 它允许你通过命令行与容器通信,比如输入命令或提供输入数据。
    • 即使你不附加终端,i 也会确保容器的 STDIN 处于开启状态。
    • 常用于需要与容器内部进程交互的场景,如通过容器运行一个交互式 shell。
  • -t 选项分配一个伪终端(pseudo-TTY)并将其附加到容器中。
    • 它让你感觉像是在一个真实的终端中工作。
    • 常用于交互式的命令行工具,例如 Bash。
    • 如果没有 t,即使你使用了 i,终端显示的内容可能格式混乱(比如没有换行符等)。
  • 将 -i 和 -t 一起使用,提供了一个完全交互式的终端体验。
    • docker run -it ubuntu bash

port mapping

Docker 的 -p 参数用于将容器的端口映射到主机的端口,使主机上的用户可以通过特定的端口访问容器中的服务。
  • docker run -p 8080:80 nginx
  • docker run -p 127.0.0.1:8080:80 nginx
  • docker run -p 80 nginx
    • 如果不指定 host_port,Docker 会为容器的 80 端口随机分配一个主机端口。
    • 使用 docker ps 查看随机分配的端口。

Volume mapping

docker run -v [主机路径]:[容器路径][:权限] image_name

inspect container

docker inspect container_name

container logs

docker logs container_name

Docker image

Dockerfile

notion image

build

docker build . -t image_name:image_tag

layered architecture

notion image

Environment Variables

docker run -e XXXXX=xxx image_name

command & entrypoint

  • command:
    • 💡
      CMD 如果用 json 格式给出命令,第一个参数必须是可执行的,后面的参数是第一个参数的 argument
  • entrypoint
    • 这时候的docker run 就会变成:
      docker run ubuntu-sleeper 12
  • command & entrypoint
    • 这时候的docker run 就会变成
    • docker run ubuntu-sleeper
    • docker run ubuntu-sleeper 5
    • docker run --entrypoint
TOG 2022 | ControlVAE: Model-Based Learning of Generative Controllers for Physics-Based Characters2024 | FICTION: 4D Future Interaction Prediction from Video
Loading...