docker常用命令与配置
@ 姜波 | 星期五,三月 20 日,2020 年 | 3 分钟阅读 | 更新于 星期五,三月 20 日,2020 年

docker常用命令

镜像管理常用命令

指令 描述
ls 列出镜像
build 构建镜像来自Dockerfile
history 查看镜像历史
inspect 显示一个或多个镜像详细信息
pull 从镜像仓库拉取镜像
push 推送一个镜像到镜像仓库
rm 移除一个或多个镜像
prune 移除未使用的镜像。没有被标记或被任何容器引用的。
tag 创建一个引用源镜像标记目标镜像
export 导出容器文件系统到tar归档文件
import 导入容器文件系统tar归档文件创建镜像
save 保存一个或多个镜像到一个tar归档文件
load 加载镜像来自tar归档或标准输入

创建容器常用选项

选项 描述
-i, –interactive 交互式
-t, –tty 分配一个伪终端
-d, –detach 运行容器到后台
-e, –env 设置环境变量
-p, –publish list 发布容器端口到主机
-P, –publish-all 发布容器所有EXPOSE的端口到宿主机随机端口
–name string 指定容器名称
-h, –hostname 设置容器主机名
–ip string 指定容器IP,只能用于自定义网络
–network 连接容器到一个网络
–mount mount 将文件系统附加到容器
-v, –volume list 绑定挂载一个卷
–restart string 容器退出时重启策略,默认no,可选值:[always|on-failure]

容器资源限制

选项 描述
-m,–memory 容器可以使用的最大内存量
–memory-swap 允许交换到磁盘的内存量
–memory-swappiness=<0-100> 容器使用SWAP分区交换的百分比(0-100,默认为-1)
–oom-kill-disable 禁用OOM Killer
–cpus 可以使用的CPU数量
–cpuset-cpus 限制容器使用特定的CPU核心,如(0-3, 0,1)
–cpu-shares CPU共享(相对权重)

管理容器常用命令

选项 描述
ls 列出容器
inspect 查看一个或多个容器详细信息
exec 在运行容器中执行命令
commit 创建一个新镜像来自一个容器
cp 拷贝文件/文件夹到一个容器
logs 获取一个容器日志
port 列出或指定容器端口映射
top 显示一个容器运行的进程
stats 显示容器资源使用统计
stop/start/restart 停止/启动一个或多个容器
rm 删除一个或多个容器

管理应用程序数据

Volume

//管理卷
docker volume create nginx-vol 
docker volume ls
docker volume inspect nginx-vol 
//用卷创建一个容器
docker run -d --name=nginx-test --mount src=nginx-vol,dst=/usr/share/nginx/html nginx 
docker run -d --name=nginx-test -v nginx-vol:/usr/share/nginx/html nginx
//清理
docker stop nginx-test
docker rm nginx-test
docker volume rm nginx-vol
  1. 如果没有指定卷,自动创建。
  2. 建议使用–mount,更通用。

Bind Mounts

//用卷创建一个容器
docker run -d -it --name=nginx-test --mount type=bind,src=/app/wwwroot,dst=/usr/share/nginx/html nginx 
docker run -d -it --name=nginx-test -v /app/wwwroot:/usr/share/nginx/html nginx
//验证绑定
docker inspect nginx-test
//清理
docker stop nginx-test # docker rm nginx-test
  1. 如果源文件/目录没有存在,不会自动创建,会抛出一个错误。
  2. 如果挂载目标在容器中非空目录,则该目录现有内容将被隐藏。

网络模式

  • bridge

–net=bridge

默认网络,Docker启动后创建一个docker0网桥,默认创建的容器也是添加到这个网桥中。

  • host

–net=host

容器不会获得一个独立的network namespace,而是与宿主机共用一个。这就意味着容器不会有自己的网卡信息,而是使用宿主机的。容器除了网络,其他都是隔离的。

  • none

–net=none

获取独立的network namespace,但不为容器进行任何网络配置,需要我们手动配置。

  • container

–net=container

Name/ID与指定的容器使用同一个network namespace,具有同样的网络配置信息,两个容器除了网络,其他都还是隔离的。

  • 自定义网络

与默认的bridge原理一样,但自定义网络具备内部DNS发现,可以通过容器名或者主机名容器之间网络通信。

Dockerfile指令

指令 描述
FROM 构建新镜像是基于哪个镜像
MAINTAINER 镜像维护者姓名或邮箱地址
RUN 构建镜像时运行的Shell命令
COPY 拷贝文件或目录到镜像中
ENV 设置环境变量
USER 为RUN、CMD和ENTRYPOINT执行命令指定运行用户
EXPOSE 声明容器运行的服务端口
HEALTHCHECK 容器中服务健康检查
WORKDIR 为RUN、CMD、ENTRYPOINT、COPY和ADD设置工作目录
ENTRYPOINT 运行容器时执行,如果有多个ENTRYPOINT指令,最后一个生效
CMD 运行容器时执行,如果有多个CMD指令,最后一个生效

公众号

Image text

QQ

Image text

微信

Image text

微信打赏

Image text

社交链接