From cb4cf79e422228a4d3ec16645249c5aa09bcb9be Mon Sep 17 00:00:00 2001 From: jaywcjlove Date: Wed, 2 Nov 2022 05:22:02 +0000 Subject: [PATCH] doc: update `docker.md`. 2fbf2151b69ff253c0a894998efeb408c6a298d3 --- docs/docker.html | 454 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 453 insertions(+), 1 deletion(-) diff --git a/docs/docker.html b/docs/docker.html index 1f0b96c4..05d9fccb 100644 --- a/docs/docker.html +++ b/docs/docker.html @@ -41,7 +41,7 @@

这是 Docker 的快速参考备忘单。 你可以在这里找到最常见的 Docker 命令。

入门

入门

在后台创建和运行容器

@@ -607,6 +607,458 @@
:-:-
docker-machine create --driver virtualbox myvm1创建虚拟机(Mac、Win7、Linux)
docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm1Win10
docker-machine env myvm1查看有关您的节点的基本信息
docker-machine ssh myvm1 "docker node ls"列出集群中的节点
docker-machine ssh myvm1 "docker node inspect <node ID>"检查节点
docker-machine ssh myvm1 "docker swarm join-token -q worker"查看加入令牌
docker-machine ssh myvm1打开与 VM 的 SSH 会话; 输入“exit”结束
docker-machine ssh myvm2 "docker swarm leave"让工人离开群体
docker-machine ssh myvm1 "docker swarm leave -f"让主人离开,杀群
docker-machine start myvm1启动当前未运行的 VM
docker-machine stop $(docker-machine ls -q)停止所有正在运行的虚拟机
docker-machine rm $(docker-machine ls -q)删除所有虚拟机及其磁盘映像
docker-machine scp docker-compose.yml myvm1:~将文件复制到节点的主目录
docker-machine ssh myvm1 "docker stack deploy -c <file> <app>"部署应用
+

docker 主要命令

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:-:-
attach将本地标准输入、输出和错误流附加到正在运行的容器
build从 Dockerfile 构建镜像
commit从容器的更改创建新图像
cp在容器和本地文件系统之间复制文件/文件夹
create创建一个新容器
diff检查容器文件系统上文件或目录的更改
events从服务器获取实时事件
exec在正在运行的容器中运行命令
export将容器的文件系统导出为 tar 存档
history显示图像的历史
images列出图像
import从 tarball 导入内容以创建文件系统映像
info显示系统范围的信息
inspect返回有关 Docker 对象的低级信息
kill杀死一个或多个正在运行的容器
load从 tar 存档或 STDIN 加载图像
login登录到 Docker 注册表
logout从 Docker 注册表中注销
logs获取容器的日志
pause暂停一个或多个容器内的所有进程
port列出容器的端口映射或特定映射
ps列出容器
pull从注册表中提取图像或存储库
push将图像或存储库推送到注册表
rename重命名容器
restart重启一个或多个容器
rm移除一个或多个容器
rmi移除一张或多张图片
run在新容器中运行命令
save将一个或多个图像保存到 tar 存档(默认流式传输到 STDOUT)
searchDocker Hub 中搜索图像
start启动一个或多个停止的容器
stats显示容器资源使用统计的实时流
stop停止一个或多个正在运行的容器
tag创建一个引用 SOURCE_IMAGE 的标记 TARGET_IMAGE
top显示容器的运行进程
unpause取消暂停一个或多个容器中的所有进程
update更新一个或多个容器的配置
version显示 Docker 版本信息
wait阻塞直到一个或多个容器停止,然后打印它们的退出代码
+

docker run/create

+ +
    --add-host list            # 添加自定义主机到 IP 映射 (host:ip)
+-a, --attach list              # 连接到 STDIN、STDOUT 或 STDERR
+    --blkio-weight uint16      # 块 IO(相对权重),介于 10 和 1000 之间,或 0 禁用(默认 0)
+    --blkio-weight-device list # 块 IO 权重(相对设备权重)(默认 [])
+    --cap-add list             # 添加 Linux 功能
+    --cap-drop list            # 放弃 Linux 功能
+    --cgroup-parent string     # 容器的可选父 cgroup
+    --cgroupns string   # 要使用的 Cgroup 命名空间(主机|私有)
+                        #  'host':    在 Docker 主机的 cgroup 命名空间中运行容器
+                        #  'private': 在自己的私有 cgroup 命名空间中运行容器
+                        #  '':        使用由守护进程上的 
+                        #        default-cgroupns-mode 选项配置的 cgroup 命名空间(默认)
+    --cidfile string           # 将容器 ID 写入文件
+    --cpu-period int           # 限制 CPU CFS(完全公平调度器)周期
+    --cpu-quota int            # 限制 CPU CFS(完全公平调度器)配额
+    --cpu-rt-period int        # 以微秒为单位限制 CPU 实时周期
+    --cpu-rt-runtime int       # 以微秒为单位限制 CPU 实时运行时间
+-c, --cpu-shares int           # CPU 份额(相对权重)
+    --cpus decimal             # CPU 数量
+    --cpuset-cpus string       # 允许执行的 CPU (0-3, 0,1)
+    --cpuset-mems string       # 允许执行的 MEM (0-3, 0,1)
+    --device list              # 将主机设备添加到容器
+    --device-cgroup-rule list  # 将规则添加到 cgroup 允许的设备列表
+    --device-read-bps list     # 限制设备的读取速率(每秒字节数)(默认 [])
+    --device-read-iops list    # 限制设备的读取速率(每秒 IO)(默认 [])
+    --device-write-bps list    # 限制设备的写入速率(每秒字节数)(默认 [])
+    --device-write-iops list   # 限制设备的写入速率(每秒 IO)(默认 [])
+    --disable-content-trust    # 跳过图像验证(默认为 true)
+    --dns list                 # 设置自定义 DNS 服务器
+    --dns-option list          # 设置 DNS 选项
+    --dns-search list          # 设置自定义 DNS 搜索域
+    --domainname string        # 容器 NIS 域名
+    --entrypoint string        # 覆盖图像的默认入口点
+-e, --env list                 # 设置环境变量
+    --env-file list            # 读入环境变量文件
+    --expose list              # 公开一个端口或一系列端口
+    --gpus gpu-request         # 要添加到容器中的 GPU 设备(“全部”以传递所有 GPU)
+    --group-add list           # 添加其他组以加入
+    --health-cmd string        # 运行以检查运行状况的命令
+    --health-interval duration # 运行检查之间的时间 (ms|s|m|h) (默认 0s)
+    --health-retries int           # 需要报告不健康的连续失败
+    --health-start-period duration # 开始健康重试倒计时之前容器初始化的开始时间(ms|s|m|h)(默认 0s)
+    --health-timeout duration      # 允许运行一项检查的最长时间 (ms|s|m|h) (默认 0s)
+    --help                     # 打印使用
+-h, --hostname string          # 容器主机名
+    --init                     # 在容器内运行一个 init 来转发信号并收获进程
+-i, --interactive              # 即使没有连接,也保持 STDIN 打开
+    --ip string                # IPv4 地址(例如 172.30.100.104)
+    --ip6 string               # IPv6 地址(例如,2001:db8::33)
+    --ipc string               # 要使用的 IPC 模式
+    --isolation string         # 容器隔离技术
+    --kernel-memory bytes      # 内核内存限制
+-l, --label list               # 在容器上设置元数据
+    --label-file list          # 读入以行分隔的标签文件
+    --link list                # 添加到另一个容器的链接
+    --link-local-ip list       # 容器 IPv4/IPv6 链路本地地址
+    --log-driver string        # 容器的日志记录驱动程序
+    --log-opt list             # 日志驱动程序选项
+    --mac-address string       # 容器 MAC 地址(例如 92:d0:c6:0a:29:33)
+-m, --memory bytes             # 内存限制
+    --memory-reservation bytes # 内存软限制
+    --memory-swap bytes        # 交换限制等于内存加上交换:'-1' 启用无限交换
+    --memory-swappiness int    # 调整容器内存交换(0 到 100)(默认 -1)
+    --mount mount              # 将文件系统挂载附加到容器
+    --name string              # 为容器分配名称
+    --network network          # 将容器连接到网络
+    --network-alias list       # 为容器添加网络范围的别名
+    --no-healthcheck           # 禁用任何容器指定的 HEALTHCHECK
+    --oom-kill-disable         # 禁用 OOM 杀手
+    --oom-score-adj int        # 调整主机的 OOM 首选项(-1000 到 1000)
+    --pid string               # 要使用的 PID 命名空间
+    --pids-limit int           # 调整容器 pids 限制(设置 -1 表示无限制)
+    --platform string          # 如果服务器支持多平台,则设置平台
+    --privileged               # 授予此容器扩展权限
+-p, --publish list             # 将容器的端口发布到主机
+-P, --publish-all              # 将所有暴露的端口发布到随机端口
+    --pull string              # 创建前拉取图像("always"|"missing"|"never")(默认"missing")
+    --read-only                # 将容器的根文件系统挂载为只读
+    --restart string           # 容器退出时应用的重启策略(默认“否”)
+    --rm                       # 容器退出时自动移除
+    --runtime string           # 用于此容器的运行时
+    --security-opt list        # 安全选项
+    --shm-size bytes           # /dev/shm 的大小
+    --stop-signal string       # 停止容器的信号(默认“SIGTERM”)
+    --stop-timeout int         # 停止容器的超时(以秒为单位)
+    --storage-opt list         # 容器的存储驱动程序选项
+    --sysctl map               # Sysctl 选项(默认 map[])
+    --tmpfs list               # 挂载 tmpfs 目录
+-t, --tty                      # 分配一个伪 TTY
+    --ulimit ulimit            # ulimit 选项(默认 [])
+-u, --user string              # 用户名或 UID(格式:<name|uid>[:<group|gid>])
+    --userns string            # 要使用的用户命名空间
+    --uts string               # 要使用的 UTS 命名空间
+-v, --volume list              # 绑定挂载卷
+    --volume-driver string     # 容器的可选卷驱动程序
+    --volumes-from list        # 从指定容器挂载卷
+-w, --workdir string           # 容器内的工作目录
+
+

run/create 大部分参数一致

+

docker 全局参数

+
    --config string     # 客户端配置文件的位置(默认“~/.docker”)
+-c, --context string    # 用于连接到守护程序的上下文的名称(
+                        # 覆盖 DOCKER_HOST 环境变量和使用“docker context use”设置的默认上下文)
+-D, --debug             # 启用调试模式
+-H, --host list         # 要连接的守护进程套接字
+-l, --log-level string  # 设置日志级别("debug"\|"info"\|"warn"\|"error"\|"fatal") (默认“info”)
+    --tls               # 使用 TLS; 由 --tlsverify 暗示
+    --tlscacert string  # 仅由该 CA 签署的信任证书(默认为“~/.docker/ca.pem”)
+    --tlscert string    # TLS证书文件路径(默认“~/.docker/cert.pem”)
+    --tlskey string     # TLS 密钥文件的路径(默认为“~/.docker/key.pem”)
+    --tlsverify         # 使用 TLS 并验证远程
+-v, --version           # 打印版本信息并退出
+
+

docker 管理命令

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:-:-
docker builder管理构建
docker buildx*Docker Buildx(Docker Inc.,v0.7.1)
docker compose*Docker Compose(Docker Inc.,v2.2.3)
docker config管理 Docker 配置
docker container管理容器
docker context管理上下文
docker image管理图像
docker manifest管理 Docker 镜像清单和清单列表
docker network管理网络
docker node管理 Swarm 节点
docker plugin管理插件
docker scan*Docker 扫描(Docker Inc.,v0.16.0)
docker secret管理 Docker 机密
docker service管理服务
docker stack管理 Docker 堆栈
docker swarm管理群
docker system管理 Docker
docker trust管理对 Docker 映像的信任
docker volume管理卷
+

docker images

+
-a, --all             显示所有图像(默认隐藏中间图像)
+    --digests         显示摘要
+-f, --filter filter   根据提供的条件过滤输出
+    --format string   使用 Go 模板打印漂亮的图像
+    --no-trunc        不要截断输出
+-q, --quiet           仅显示图像 ID
+
+

Docker 示例

+ +

Docker Web 管理工具 portainer

+
docker run -d --name portainer \
+  -p 8000:8000 \
+  -p 9443:9443 \
+  --restart=always \
+  -v /var/run/docker.sock:/var/run/docker.sock \
+  -v portainer_data:/data \
+    portainer/portainer-ee:latest
+
+

在线代码编辑器 Code Server

+
$ mkdir -p ~/.config
+$ docker run -it --name code-server  \
+  -p 127.0.0.1:8080:8080 \
+  -v "$HOME/.config:/home/coder/.config" \
+  -v "$PWD:/home/coder/project" \
+  -u "$(id -u):$(id -g)" \
+  -e "DOCKER_USER=$USER" \
+    codercom/code-server:latest
+
+

MySQL

+
$ docker run --name mysql \
+  -p 3306:3306 \
+  -v $HOME/mysql/conf.d:/etc/mysql/conf.d \
+  -v $HOME/mysql/data:/var/lib/mysql \
+  -v /etc/localtime:/etc/localtime:ro \
+  -e MYSQL_ROOT_PASSWORD=123456 \
+  -d mysql:5.7.23
+
+

Redis

+
$ docker run -d --name myredis \
+  -v $HOME/redis/conf:/usr/local/etc/redis \
+  -v /etc/localtime:/etc/localtime:ro \
+    redis redis-server /usr/local/etc/redis/redis.conf
+
+

Nginx

+
$ docker run --name my-nginx \ 
+  -v "$HOME/nginx/nginx.conf:/etc/nginx/nginx.conf:ro" \
+  -v "$HOME/nginx/html:/usr/share/nginx/html:ro" \
+  -p 8080:80 \
+  -d nginx
+
+

PostgreSQL

+
docker run --name my-postgres \
+  -e POSTGRES_PASSWORD=mysecretpassword \
+	-e PGDATA=/var/lib/postgresql/data/pgdata \
+	-v $HOME/nginx/mount:/var/lib/postgresql/data \
+  -d postgres
+
+

媒体管理工具 Dim

+
docker run --name my-dim \
+   -p 8000:8000/tcp \
+   -v $HOME/.config/dim:/opt/dim/config \
+   -v $HOME/dim/media:/media:ro \
+   -d ghcr.io/dusk-labs/dim:dev
+
+

Github

+

Gitlab

+
sudo docker run -d --name gitlab \
+  --hostname gitlab.example.com \
+  --publish 8443:443 --publish 8081:80 -p 2222:22 \
+  --restart always \
+  --volume $HOME/gitlab/config:/etc/gitlab \
+  --volume $HOME/gitlab/logs:/var/log/gitlab \
+  --volume $HOME/gitlab/data:/var/opt/gitlab \
+  -v /etc/localtime:/etc/localtime \
+  --shm-size 256m \
+    gitlab/gitlab-ce:latest
+

另见