Docker使用
一,Docker基础命令
1 |
|
你可以使用docker –help来查看所有可用的Docker命令。
查看Docker版本和信息
1 |
|
镜像管理
1 |
|
容器管理
1 |
|
二,RUN docker镜像命令及相关参数
常用参数
option | 作用 |
---|---|
-i | 以交互模式运行容器,通常与 -t 同时使用 |
-t | 启动容器后,为容器分配一个命令行,通常与 -i 同时使用 |
-v | 目录映射,容器目录挂载到宿主机目录,格式: <host目录>:<容器目录> |
-d | 守护进程,后台运行该容器 |
-p | 指定端口映射,格式:主机(宿主)端口:容器端口 |
-P | 随机端口映射,容器内部端口随机映射到主机的端口(49153起始 49153到65535) |
-u | 以什么用户身份创建容器 |
–-name | 容器名字 |
-m,–-memory bytes | 设置容器使用内存最大值 |
-h, –hostname string | 指定容器的 host name |
–dns 8.8.8.8 | 指定容器 dns 服务器 |
-e username=“ritchie” | 设置环境变量 |
–-restart Docker | 重启后,容器是否自动重启 |
–-privileged | 容器内是否使用真正的 root 权限 |
例如,要运行一个名为tomcat,tag为7的镜像,并设置容器名为tomcat_hogwarts,可以使用以下命令:
1 |
|
shell通常启动参数-itd一起使用这样将会后台运行容器,如果你想在后台运行容器并使用exec进入容器,可以这样做:
1 |
|
如果你想将容器的某个端口映射到主机的端口,可以使用-p参数,将容器端口映射到主机,将容器的8080映射到主机的8888
1 |
|
如果你想将容器的目录挂载到宿主机的目录,可以使用-v参数,容器目录挂载到宿主机目录,将容器的/usr/local/webapps映射到主机的/usr/local/webapps。重点:挂载的容器目录有文件时,会被覆盖,导致容器内目录被清空。可以使用数据卷的方式解决
1 |
|
如果你想以root权限运行容器,可以使用–privileged参数,一般是用不上
1 |
|
进入容器,c1d2579d46fb为容器id。以bash进行交互,-i :即使没有附加也保持STDIN 打开, -t :分配一个伪终端
1 |
|
三,commit 将正在运行的容器进行打包
你可以使用docker commit命令将正在运行的容器打包成一个新的镜像。以下是基本语法和示例:
基础语法:
1 |
|
OPTIONS说明:
- -a :提交的镜像作者;
- -c :使用Dockerfile指令来创建镜像;
- -m :提交时的说明文字;
- -p :在commit时,将容器暂停。
将容器ID为a404c6c174a2,新建镜像,为mymysql:v1
1 |
|
四,build构建镜像
常用参数
选项 | 描述 |
---|---|
-f, –file string | Dockerfile的名称(默认为’路径/Dockerfile’) |
–build-arg list | 设置构建时的变量 |
–cache-from strings | 将镜像视为缓存源 |
–disable-content-trust | 跳过镜像验证(默认为true) |
-t, –tag list | 镜像的名称和标签,格式为’name:tag’(默认为[]) |
–target string | 设置目标构建阶段 |
-m, –memory string | 内存限制 |
–network string | 设置构建过程中的网络模式(默认为”default”) |
–no-cache | 在构建过程中不使用缓存 |
–pull | 总是尝试拉取基础镜像的新版本 |
–quiet | 隐藏构建输出,在成功后只打印镜像ID |
–rm | 在成功构建后删除中间容器(默认为true) |
–shm-size string | /dev/shm 的大小,默认值为64MB |
–squash | 将新构建的层压缩成单个新层 |
–ulimit ulimit | Ulimit选项(默认为[]) |
–compress | 使用gzip压缩构建上下文 |
基础操作,更具当前项目下的Dockerfile,进行打包,镜像名为my-image,tag为tag,使用push进行上传至git仓库
1 |
|
Dockerfile示例
1 |
|
FROM 指定基础镜像 使用ubuntu:23.10
ADD 指令和 COPY
的格式和性质基本一致。但是在 COPY
基础上增加了一些功能。在 COPY
和 ADD
指令中选择的时候,可以遵循这样的原则,所有的文件复制均使用 COPY
指令,仅在需要自动解压缩的场合使用 ADD
。
RUN 指令是用来执行命令行命令的。由于命令行的强大能力,RUN
指令在定制镜像时是最常用的指令之一。
WORKDIR 指令可以来指定工作目录(或者称为当前目录),以后各层的当前目录就被改为指定的目录,如该目录不存在,WORKDIR
会帮你建立目录。
ENTRYPOINT 的目的和 CMD
一样,都是在指定容器启动程序及参数。ENTRYPOINT
在运行时也可以替代,不过比 CMD
要略显繁琐,需要通过 docker run
的参数 --entrypoint
来指定。
五,Docker清理
一、概述
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。然而,随着Docker使用时间的增长,无用的数据(如停止的容器、无用的网络和挂载卷等)可能会占用大量的磁盘空间。因此,定期清理Docker系统变得非常重要。本文档将介绍如何使用Docker命令行工具进行Docker系统清理。
二、Docker系统清理命令
Docker提供了一个非常有用的命令docker system prune,用于清理未使用的数据。这个命令可以删除所有停止的容器、所有未使用的网络、所有悬空的镜像以及所有未使用的构建缓存。
命令的基本语法如下:
1 |
|
例如,要删除所有未使用的数据(包括容器、网络、镜像和挂载卷),可以运行以下命令:
1 |
|
三、注意事项
在运行docker system prune命令之前,请确保您不再需要任何停止的容器、未使用的网络、悬空的镜像或未使用的挂载卷。一旦这些数据被删除,就无法恢复。
如果您正在使用Docker Compose,并且希望删除由Compose创建的所有未使用的数据,可以使用docker-compose down –volumes命令。这个命令会停止并删除Compose定义的所有服务,同时删除关联的网络、挂载卷和容器。
四、总结
Docker系统清理是保持Docker运行环境高效、整洁的重要步骤。通过使用docker system prune命令,您可以轻松地删除所有未使用的数据,释放磁盘空间,提高Docker的运行效率。但是,请注意在删除数据之前进行确认,以免误删重要信息。