Docker使用
Docker 安装
下载: https://docs.docker.com/get-docker/
Win 10(家庭版)
需要安装Hyper-V才可以。将如下代码添加到记事本中,并另存为 Hyper-V.cmd
文件。右键以管理员身份运行,然后等待安装,最后输入 Y 进行重启即可
|
|
重启完后双击 docker 安装包安装,再次重启,启动 docker,可能提示 wsl 版本低,wsl --update
Win 10 (专业版)
启用Hyper-V进行安装:在控制面板—启用或关闭 Windows 功能,勾选Hyper-V和容器两个选项,两个都要,不然报错。然后重启,双击 exe 文件。
注意:如果使用安卓虚拟机的话,二者会有冲突。安卓虚拟机需要关闭 Hyper-V,docker 需要开启 Hyper-V。有文章说在控制面板—启用或关闭 Windows 功能—启用 Windows 虚拟机监控程序平台,勾选这个可以解决冲突,但我试了没有用。我用夜神模拟器有冲突,改用蓝叠 4 模拟器(hyper-v)版本
配置阿里云镜像: https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
修改默认位置:默认是在 C 盘
打开设置,选择存储位置
之前眼瞎没找见设置里的 Disk image location 选项,找了另一篇文章里的方法。
|
|
参考: https://blog.csdn.net/u013948858/article/details/111464534
Debian 10
安装 Docker
1)直接使用脚本安装:
|
|
2)执行以下步骤从 Docker 的存储库安装最新的稳定 Docker 版本。root 用户下执行
|
|
3)离线安装
因网络问题,导致 docker 无法联网安装,所以使用离线安装的方式。直接参考这个文章: https://blog.csdn.net/weixin_42571882/article/details/134015815
下载 docker 安装包: https://download.docker.com/linux/static/stable/x86_64/ ,网盘下载:docker-25.0.5.tgz
|
|
赋予文件执行权限
|
|
将 docker 注册成系统服务
|
|
添加如下内容,然后保存退出(我也不知道这些内容的具体含义,反正目前用着没问题)
|
|
赋予文件执行权限
|
|
修改 docker 的存储路径
方法一:使用软连接(个人常用)
|
|
方法二:修改配置文件
因为我这里没有 /etc/docker/daemon.json
这个文件,遂放弃。
安装 docker-compose
|
|
Docker 命令
镜像仓库
login/logout
|
|
search
参数说明:
NAME: 镜像仓库源的名称
DESCRIPTION: 镜像的描述
OFFICIAL: 是否 docker 官方发布
stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
AUTOMATED: 自动构建。
|
|
build
docker build:用于使用 Dockerfile 创建镜像
–tag,-t:镜像的名字及标签
-f:指定要使用的 Dockerfile 路径
|
|
注意:最后要加路径,这里最后有个空格和点,代表上下文路径。
pull
语法:docker pull [OPTIONS] NAME[:TAG|@DIGEST]
OPTIONS 选项:
–all-tags, -a: 用于下载该存储库中具有不同标签的所有镜像。
–disable-content-trust: 它会在拉取之前跳过镜像验证。
–platform: 用于设置平台。
–quiet, -q: 用于静默拉取镜像(不冗长)。
–help: 了解更多有关命令的信息
|
|
push
注意:发布镜像时,需要将 image 重新命名,命名格式应为: dockerhub 用户名/镜像名
|
|
本地镜像管理
images
docker images:列出本地镜像。
语法:docker images [OPTIONS] [REPOSITORY[: TAG]]
OPTIONS 说明:
- -a : 列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
- –digests : 显示镜像的摘要信息;
- -f : 显示满足条件的镜像;
- –format : 指定返回值的模板文件;
- –no-trunc : 显示完整的镜像信息;
- -q : 只显示镜像 ID。
rmi
docker rmi : 删除本地一个或多个镜像。
语法:docker rmi [OPTIONS] IMAGE [IMAGE…]
OPTIONS 说明:
- -f : 强制删除
- –no-prune : 不移除该镜像的过程镜像,默认移除
例如:docker rmi -f runoob/ubuntu:v4
tag
docker tag:为本地镜像添加一个新的标签
|
|
注意:它们是同一个镜像,只是别名不同而已。
inspect
docker inspect:获取镜像的详细信息,其中,包括创建者,各层的数字摘要等。
-f ,–format:指定返回值的模板文件。Go 模板格式化输出
|
|
save
docker save:将指定镜像保存成 tar 归档文件。
-o :输出到的文件。
|
|
load
docker load:导入使用 docker save 命令导出的镜像。
-i:指定导入的文件
-q:精简输出信息
|
|
export 和 import 导出的是一个容器的快照, 不是镜像本身, 也就是说没有 layer。你的 dockerfile 里的 workdir, entrypoint 之类的所有东西都会丢失,commit 过的话也会丢失。快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也更大。
docker save 保存的是镜像(image),docker export 保存的是容器(container);docker load 用来载入镜像包,docker import 用来载入容器包,但两者都会恢复为镜像;docker load 不能对载入的镜像重命名,而 docker import 可以为镜像指定新名称。
容器操作
ps
docker ps : 列出容器
- -a : 显示所有的容器,包括未运行的。
- -f : 根据条件过滤显示的内容。
- –format : 指定返回值的模板文件。
- -l : 显示最近创建的容器。
- -n : 列出最近创建的 n 个容器。
- –no-trunc : 不截断输出。
- -q : 静默模式,只显示容器编号。
- -s : 显示总的文件大小。
run
docker run : 创建一个新的容器并运行一个命令
- -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
- -d: 后台运行容器,并返回容器 ID;
- -i: 以交互模式运行容器,通常与 -t 同时使用;
- -P: 随机端口映射,容器内部端口随机映射到主机的端口
- -p: 指定端口映射,格式为:主机 (宿主)端口: 容器端口
- -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
- –name=“nginx-lb”: 为容器指定一个名称;
- –dns 8.8.8.8: 指定容器使用的 DNS 服务器,默认和宿主一致;
- –dns-search example. com: 指定容器 DNS 搜索域名,默认和宿主一致;
- -h “mars”: 指定容器的 hostname;
- -e username=“ritchie”: 设置环境变量;
- –env-file=[]: 从指定文件读入环境变量;
- –cpuset=“0-2” or –cpuset=“0,1,2”: 绑定容器到指定 CPU 运行;
- -m : 设置容器使用内存最大值;
- –network=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
- **–link=[]: 添加链接到另一个容器;
- –expose=[]: 开放一个端口或一组端口;
- –volume , -v: 绑定一个卷
start/stop/restart
docker start:启动一个或多个已经被停止的容器
docker stop:停止一个运行中的容器
docker restart:重启容器
exec
docker exec :在运行的容器中执行命令
- -d : 分离模式: 在后台运行
- -i : 即使没有附加也保持 STDIN 打开
- -t : 分配一个伪终端
例如:
|
|
cp
docker cp : 用于容器与主机之间的数据拷贝。
语法:docker cp [OPTIONS] srcPath destPath
例如:
将主机/ www/runoob目录拷贝到容器 96f7f14e99ab
的/ www目录下 。
|
|
将主机/ www/runoob目录拷贝到容器 96f7f14e99ab
中,目录重命名为 www 。
|
|
将容器 96f7f14e99ab
的/ www目录拷贝到主机的/tmp目录中 。
|
|
rm
docker rm:删除一个或多个容器。
强制删除容器 db01
、db02
:docker rm -f db01 db02
update
docker update:更新一个或多个容器的配置
|
|
rename
将容器重命名
|
|
logs
docker logs : 获取容器的日志
–since:显示某个开始时间的所有日志
-t:显示时间戳
–tail:仅列出最新 N 条容器日志
|
|
网络管理
docker network create:创建一个 docker 局域网络
|
|
docker network connnet:将某个容器连接到一个 docker 网络
|
|
docker network disconnect:将某个容器退出某个局域网络
docker network ls:显示所有 docker 局域网络
docker network inspect:显示某个局域网络信息
docker network rm:删除 docker 网络
docker network prune:删除所有未引用的 docker 局域网络
Docker-Compose
Docker-Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。
安装
|
|
简单使用
docker-compose up :该命令可以自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。
默认情况下,docker-compose up 启动的容器都在前台,控制台将会同时打印所有容器的输出信息,可以很方便进行调试。当通过 Ctrl+c 停止命令时,所有容器将会停止。如果希望在后台启动并运行所有的容器,使用 docker-compose up -d
。
docker-compose ps :列出项目中目前的所有容器
docker-compose pull :拉取服务依赖的镜像
docker-compose restart :重启项目中的服务
docker-compose start :启动已经存在的服务容器。
docker-compose stop :停止正在运行的容器,可以通过 docker-compose start 再次启动
docker-compose rm :删除所有(停止状态的)服务容器。选项包括: –f, –force,强制直接删除,包括非停止状态的容器 -v,删除容器所挂载的数据卷
stop 是只停掉容器不删除;down 是停掉容器然后删除掉二者区别