一、安装与卸载
安装
系统:ubuntu(windows虚拟环境)
// 卸载旧版
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
// 安装
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 安装特定版本
# 列出存储库可用版本
sudo apt-cache madison docker-ce | awk '{ print $3}'
# 选择需要的版本并安装
VERSION_STRING=5:25.0.3-1~ubuntu.22.04~jammy
sudo apt-get install docker-ce=$VERSION_STRING ......
sudo docker run hello-world
//
ps: 以下命令是在windows的虚拟环境中运行的,需要使用sudo命令,与正常环境没有什么不同,
卸载
// 卸载 Docker Engine、CLI、containerd 和 Docker Compose 软件包:
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
// 主机上的映像、容器、卷或自定义配置文件不会自动删除。要删除所有映像、容器和卷:
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
二、镜像
镜像列表
sudo docker images [options];
| REPOSITORY | TAG | IMAGE ID | CREATED | SIZE |
|---|---|---|---|---|
| hello-world | latest | d2c94e258dcb | 9 months ago | 13.3kB |
options:
- -a : 列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
- --digests : 显示镜像的摘要信息;
- -f : 显示满足条件的镜像;
- --format : 指定返回值的模板文件;
- --no-trunc : 显示完整的镜像信息;
- -q : 只显示镜像ID。
删除镜像
sudo docker rmi [options] IMAGE_ID [... ...]
sudo docker rmi d2c94e258dcb;
sudo docker images;
| REPOSITORY | TAG | IMAGE ID | CREATED | SIZE |
|---|---|---|---|---|
| 暂无数据 | ||||
options:
- -f: 强制删除
- --no-prune: 不移除该镜像的过程镜像,默认移除
镜像查找
sudo docker search [options ]imageName
sudo docker search nginx
options:
- --automated : 只列出 automated build类型的镜像;
- --no-trunc : 显示完整的镜像描述;
- -f <过滤条件>: 列出收藏数不小于指定值的镜像。
镜像拉取
sudo docker pull imageName
sudo docker pull nginx:lat
创建容器并运行
sudo docker run [options] imageName
// 运行nginx
sudo docker run --name nginx_one -p 10000:80 nginx
// 浏览器地址栏输入127.0.0.1:10000,默认是127.0.0.1
options:
- -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 : 设置容器使用内存最大值;
- --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
- --link=[]: 添加链接到另一个容器;
- --expose=[]: 开放一个端口或一组端口;
- --volume , -v: 绑定一个卷
标签
标记本地镜像,将其归入某一个仓库
sudo docker tag [options] IMAGE[:tag] [registryhost/][username/]name[:tag]
构建
sudo docker build [options]
- --build-arg=[] : 设置镜像创建时的变量;
- --cpu-shares : 设置 cpu 使用权重;
- --cpu-period : 限制 CPU CFS周期;
- --cpu-quota : 限制 CPU CFS配额;
- --cpuset-cpus : 指定使用的CPU id;
- --cpuset-mems : 指定使用的内存 id;
- --disable-content-trust : 忽略校验,默认开启;
- -f : 指定要使用的Dockerfile路径;
- --force-rm : 设置镜像过程中删除中间容器;
- --isolation : 使用容器隔离技术;
- --label=[] : 设置镜像使用的元数据;
- -m : 设置内存最大值;
- --memory-swap : 设置Swap的最大值为内存+swap,"-1"表示不限swap;
- --no-cache : 创建镜像的过程不使用缓存;
- --pull : 尝试去更新镜像的新版本;
- --quiet, -q : 安静模式,成功后只输出镜像 ID;
- --rm : 设置镜像成功后删除中间容器;
- --shm-size : 设置/dev/shm的大小,默认值是64M;
- --ulimit : Ulimit配置。
- --squash : 将 Dockerfile 中所有的操作压缩为一层。
- --tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
- --network: 默认 default。在构建期间设置RUN指令的网络模式
历史
查看指定镜像的创建历史
sudo docker history [options] image
- -H : 以可读的格式打印镜像大小和日期,默认为true;
- --no-trunc : 显示完整的提交记录;
- -q : 仅列出提交记录ID。
镜像归档
将指定镜像保存成 tar 归档文件。
sudo docker save [options] image [... ...]
options:
-o : 输出到的文件。
load导入使用
导入使用 docker save 命令导出的镜像。
sudo docker [options]
options:
-
--input , -i : 指定导入的文件,代替 STDIN。
-
--quiet , -q : 精简输出信息。
import创建镜像
从归档文件中创建镜像。
sudo docker [options] { file | url | - } [repository[:tag]]
options:
- -c : 应用docker 指令创建镜像;
- -m : 提交时的说明文字;
三、镜像仓库
登录
sudo docker login [options] [server]
options:
- -u : 登陆的用户名
- -p : 登陆的密码
退出
sudo docker logout [options] [server]
options: 同登录
拉取或更新
sudo docker pull [options] name[:tag|@digest]
options:
- -a : 拉取所有 tagged 镜像
- --disable-content-trust : 忽略镜像的校验,默认开启
推送远程
sudo docker [options] name[:tag]
options:
- --disable-content-trust : 忽略镜像的校验,默认开启
四、容器
容器列表
sudo docker ps [options]
sudo docker ps -a
| CONTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORTS | NAMES |
|---|---|---|---|---|---|---|
| a65dc316bc5f | hello-world | "/hello" | 2 minutes ago | Exited (0) 2 minutes ago | boring_einstein |
options:
- -a : 显示所有的容器,包括未运行的。
- -f : 根据条件过滤显示的内容。
- --format : 指定返回值的模板文件。
- -l : 显示最近创建的容器。
- -n : 列出最近创建的n个容器。
- --no-trunc : 不截断输出。
- -q : 静默模式,只显示容器编号。
- -s : 显示总的文件大小。
删除容器
sudo docker [options] container_id [ ... ... ]
sudo docker rm a65dc316bc5f
| CONTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORTS | NAMES |
|---|---|---|---|---|---|---|
| 暂无数据 | ||||||
创建容器
sudo docker create [options] image {name[:tag]}
运行容器
sudo docker start { container_id | name }
停止容器
sudo docker stop { container_id | name }
重启容器
sudo docker restart { container_id | name }
杀掉进程
sudo docker [options] kill { container_id | name }
options:
- -s : 向容器发送一个信号
暂停容器进程
sudo docker pause { container_id | name }
查看已暂停的容器
sudo docker ps -a | grep Paused
恢复已暂停的容器
sudo docker unpause { container_id | name }
进入容器-attach
// attach链接容器,退出后终止容器
sudo docker attach [options] { container_id | name }
// --sig-proxy=false可以在退出后保持容器运行
sudo docker attach --sig-proxy=false { container_id | name }
进入容器-exec
sudo docker exec [options] { container_id | name }
options:
- -d: 分离模式,在后台运行
- -i: 即使没有附加也保持STDIN(标准输出)打开
- -t: 分配一个伪终端
获取容器/镜像的元数据
sudo docker inspect [options] { ID | name } [{ ID | name }]
options:
- -f: 指定返回值的模板文件
- -s: 显示总的文件大小
- --type: 为指定类型返回的JSON
日志
sudo docker logs { container_id | name }
阻塞
sudo docker wait [options] { container_id | name }
导出
sudo docker [options] { container_id | name }
options:
- -o: 将输入内容写到文件里
查端口映射
sudo docker port { container_id | name }
显示容器状态
sudo docker stats [options] { container_id | name }
options:
- --all , -a : 显示所有的容器,包括未运行的。
- --format : 指定返回值的模板文件。
- --no-stream : 展示当前状态就直接退出了,不再实时更新。
- --no-trunc : 不截断输出。
查看容器进程
sudo docker top [options] { container_id | name }
检查容器中文件结构的变更
sudo docker diff [options] { container_id | name }
创建镜像
sudo docker commit [options] { container_id | name }[repository[:tag]]
options:
- -a : 提交的镜像作者;
- -c : 使用Dockerfile指令来创建镜像;
- -m : 提交时的说明文字;
- -p : 在commit时,将容器暂停。
五、其他
拷贝
容器和主机之间的数据拷贝
// 从容器移动到主机
sudo docker cp [options] container:src_path dest_path|-
// 从主机拷贝到容器
sudo docker cp [options] src_path|- container:src_pathc
// desc_path参数中,尾部字符串带有"/"是拷贝到目录中,没有则是重命名
options:
- -L : 保持源目标中的链接
查看系统信息
sudo docker info [options]
查看docker版本
sudo docker version