【docker集群应用】Docker常用命令
文章目录
- Docker常用命令
- Docker 镜像操作
- 搜索镜像
- 获取镜像
- 查看镜像信息
- 添加镜像标签
- 删除镜像
- 存出与载入镜像
- 上传镜像
- Docker 容器操作
- 容器创建
- 查看容器状态
- 启动容器
- 创建并启动容器
- 后台持续运行容器
- 终止容器运行
- 进入容器
- 文件复制
- 容器导出与导入
- 删除容器
- 批量操作
Docker常用命令
Docker 镜像操作
搜索镜像
- 命令格式:
docker search 关键字
- 示例:搜索 nginx 镜像
docker search nginx
获取镜像
- 命令格式:
docker pull 仓库名称[:标签]
- 示例:拉取 nginx 镜像(默认 latest 标签)
docker pull nginx
- 镜像加速:编辑
/etc/docker/daemon.json
文件,添加镜像加速地址
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.1panel.live", "https://docker.m.daocloud.io"]
}
EOF
systemctl daemon-reload
systemctl restart docker
查看镜像信息
-
查看本地所有镜像:
docker images
-
字段解释:
- REPOSITORY:镜像仓库名称
- TAG:镜像标签
- IMAGE ID:镜像唯一标识
- CREATED:镜像创建时间
- SIZE:镜像大小
-
查看镜像详细信息:
docker inspect 镜像ID号
lowerdir
:镜像层,只读upperdir
:容器层,可读可写MergedDir
:表现层,容器挂载点
添加镜像标签
- 命令格式:
docker tag 名称:[标签] 新名称:[新标签]
- 示例:为 nginx:latest 添加新标签 nginx:web
docker tag nginx:latest nginx:web
删除镜像
- 命令格式:
docker rmi 仓库名称:标签
:删除指定标签的镜像docker rmi 镜像ID号
:彻底删除镜像
- 注意:如果镜像被容器使用,需要先删除依赖该镜像的容器
- 示例:删除 nginx:web 镜像
docker rmi nginx:web
存出与载入镜像
-
存出镜像:
docker save -o 存储文件名 存储的镜像
- 示例:存出 nginx:latest 镜像为 nginx 文件
docker save -o nginx nginx:latest
- 示例:存出 nginx:latest 镜像为 nginx 文件
-
载入镜像:
docker load < 存出的文件
或
docker load -i 存出的文件
- 示例:载入 nginx 文件中的镜像
docker load < nginx
- 示例:载入 nginx 文件中的镜像
上传镜像
- 步骤:
- 登录 Docker Hub 公共仓库
输入用户名、密码和邮箱。docker login
- 为本地镜像添加新标签(包含 Docker Hub 用户名)
docker tag 镜像名称:标签 用户名/镜像名称:新标签
- 示例:为 nginx:latest 添加新标签 soscscs/nginx:web
docker tag nginx:latest soscscs/nginx:web
- 示例:为 nginx:latest 添加新标签 soscscs/nginx:web
- 上传镜像到 Docker Hub
docker push 用户名/镜像名称:新标签
- 示例:上传 soscscs/nginx:web 镜像到 Docker Hub
docker push soscscs/nginx:web
- 示例:上传 soscscs/nginx:web 镜像到 Docker Hub
- 登录 Docker Hub 公共仓库
Docker 容器操作
容器创建
容器创建就是将镜像加载到容器的过程。
新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器。
- 格式:
docker create [选项] 镜像
- 常用选项:
-i
:开启标准输入接受用户输入命令。-t
:分配一个伪终端 tty。-it
:合起来实现和容器交互的作用,运行一个交互式会话 shell。
docker create -it nginx:latest /bin/bash
查看容器状态
- 命令:
docker ps -a
- 输出示例:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8b0a7be0ff58 nginx:latest "/docker-entrypoint.…" 57 seconds ago Created inspiring_swanson
启动容器
- 格式:
docker start 容器的ID/名称
docker start 8b0a7be0ff58
创建并启动容器
docker 容器默认会把容器内部第一个进程,也就是 pid=1 的程序作为docker容器是否正在运行的依据,如果docker容器中 pid = 1 的进程挂了,那么docker容器便会直接退出,也就是说Docker容器中必须有一个前台进程,否则认为容器已经挂掉。
可以直接执行 docker run
命令, 等同于先执行 docker create
命令,再执行 docker start
命令。
当利用 docker run 来创建容器时, Docker 在后台的标准运行过程是:
(1)检查本地是否存在指定的镜像。当镜像不存在时,会从公有仓库下载;
(2)利用镜像创建并启动一个容器;
(3)分配一个文件系统给容器,在只读的镜像层外面挂载一层可读写层;
(4)从宿主主机配置的网桥接口中桥接一个虚拟机接口到容器中;
(5)分配一个地址池中的 IP 地址给容器;
(6)执行用户指定的应用程序,执行完毕后容器被终止运行。
- 命令:
docker run [选项] 镜像 [命令]
- 注意:容器是一个与其中运行的 shell 命令/进程共存亡的终端。命令/进程运行容器运行, 命令/进程结束容器退出。
docker run centos:7 /usr/bin/bash -c ls /
后台持续运行容器
- 选项:
-d
docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"
终止容器运行
- 格式:
docker stop 容器的ID/名称
docker stop 2592d3fad0fb
进入容器
- 命令:
docker exec -it 容器ID/名称 /bin/bash
docker exec -it 2592d3fad0fb /bin/bash
文件复制
- 复制到容器:
echo abc123 > ~/test.txt docker cp ~/test.txt 2592d3fad0fb:/opt/
- 从容器复制到主机:
docker cp 2592d3fad0fb:/opt/test.txt ~/abc123.txt
容器导出与导入
用户可以将任何一个 Docker 容器从一台机器迁移到另一台机器。在迁移过程中,可以使用docker export 命令将已经创建好的容器导出为容器快照文件,无论这个容器是处于运行状态还是停止状态均可导出。可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移。
- 导出:
docker export 2592d3fad0fb > centos7.tar
- 导入:
cat centos7.tar | docker import - centos7:test
删除容器
- 格式:
docker rm [-f] 容器ID/名称
- 删除已终止容器:
docker stop 2592d3fad0fb docker rm 2592d3fad0fb
- 强制删除运行容器:
docker rm -f 2592d3fad0fb
批量操作
- 批量停止容器:
docker ps -a | awk 'NR>=2{print "docker stop "$1}' | bash docker ps -a | awk 'NR>=2{print $1}'| xargs docker stop
- 批量删除所有容器:
docker ps -a | awk 'NR>=2{print "docker rm "$1}' | bash docker ps -a | awk 'NR>=2{print $1}'| xargs docker rm
- 批量删除镜像:
docker images | awk 'NR>=2{print "docker rmi "$3}' | bash docker images | grep none | awk '{print $3}' | xargs docker rmi
- 批量清理后台停止的容器:
docker rm $(docker ps -a -q)