Docker命令总结

发布于:2024-04-27 ⋅ 阅读:(21) ⋅ 点赞:(0)

目录

一.Docker常用命令总结

1.镜像命令管理

2.容器命令管理

二.Docker镜像命令

1.docker search:搜索镜像

2.docker pull:下载镜像

3.docker push:上传镜像

4.docker images:查看本地镜像

5.docker inspect:获取镜像详细信息

6.docker tag:添加镜像标签

7.docker rmi:删除镜像

8.docker save:导出镜像

9.docker load:导入镜像

三.Docker容器操作命令

1.docker ps:查询容器运行状态

2.docker create:创建容器

3.docker start:启动容器

4.docker stop:停止容器

5.docker rm:删除容器

6.docker run:创建并启动容器

(1)加 -d 选项让Docker容器以守护形式在后台运行且容器所运行的程序不能结束

(2)执行后退出

(3)执行后不退出,以守护进程方式执行持续性任务

7.docker inspect:查看容器ip地址

8.docker exec:进入容器

9.docker stop:终止容器运行

10.docker logs:查看容器日志

11.docker export:容器导出

12.docker import:容器导入

13.docker cp:宿主机文件与容器文件复制

14.docker stats:查看docker消耗的资源状态 


一.Docker常用命令总结

1.镜像命令管理

指令 描述
ls 列出镜像
build 构建镜像来自Dockerfile
history 查看历史镜像
inspect 显示一个或多个镜像的详细信息
pull 从镜像仓库拉取镜像
push 推送一个镜像到仓库
rm 移除一个或多个镜像
prune 一处未使用的的镜像,没有被标记或被任何容器引用的
tag 创建一个引用源镜像标记目标镜像
export 到处容器文件系统到tar归档文件
import 导入容器文件系统tar归档文件创建镜像
save 保存一个或多个镜像到一个tar归档文件
load 加载镜像来自tar归档或标准输入
#查询 docker 版本和信息
docker version
docker info
 
#搜索镜像(可以自己制作镜像上传本地或官网仓库 dockerfile)
docker search <镜像名>
 
#下载镜像
docker pull <镜像名>
 
#查看镜像列表
docker images
 
#查看镜像详细信息
docker inspect <镜像 ID>
 
#给镜像打标签
docker tag <镜像名>:<原标签> <镜像名>:<新标签>
#docker tag nginx:latest nginx:lnmp
 
#删除镜像
docker rmi <镜像名>
docker rmi <镜像标签>
docker rmi <镜像 ID>
docker rmi `docker images -aq`		#删除所有镜像
docker images | awk 'NR>=2{print "docker rmi -f "$3}' | bash
 
#镜像导出
docker save -o <导出的文件名> <镜像名>
#docker save -o nginx_v1 nginx:latest
 
#镜像导入
docker load < [镜像文件]
#docker load < nginx_v1

2.容器命令管理

指令 描述
ls 列出容器
inspect 显示一个或多个容器详细信息
attach 附加本地标准输入,输出和错误到一个运行的容器
attach 在运行容器中执行命令
commit 构建一个新镜像来自一个容器
cp 拷贝文件(夹)到一个容器
logs 获取一个容器日志
port 列出或指定容器端口映射
stats 显示一容器资源使用统计
top 显示一个或多个容器运行的进程
update 更新一个或多个容器配置
stop/start/rstart 停止/启动/重启一个或多个容器
rm 删除一个或多个容器
#查询容器
docker ps -a
 
#查看容器占用系统资源信息
docker stats
 
#创建容器
docker create -it nginx:latest /bin/bash
#常用参数说明
> -i 让容器的标准输入保持打开
> -t 分配一个伪终端
> -d 以后台守护进程的方式运行
 
#开启/停止/重启 容器
docker start <容器 ID>
docker stop <容器 ID>
docker restart <容器 ID>
 
#后台运行,指定容器名称为 test
docker run -itd --name test nginx:latest /bin/bash
 
#进入容器
docker exec -it <容器 ID> /bin/bash		#exit 退出
 
#容器 导出/导入
docker export [容器 ID] > [文件名]
docker import [容器文件名] [指定镜像名称]		#导入的是镜像
 
#批量停止容器
docker ps -a | awk 'NR>=2{print "docker stop "$1}' | bash
docker ps -a | awk 'NR>=2{print $1}' | xargs docker stop
 
#批量删除容器
docker rm -f `docker ps -aq`
docker ps -a | awk 'NR>=2{print "docker rm "$1}' | bash
docker ps -a | awk 'NR>=2{print $1}' | xargs docker rm -f
 
#批量删除 "exit" 状态(指定状态)的容器
for i in `docker ps -a | grep -i exit | awk '{print $1}'`; do docker rm -f $i;done
 
#查看容器进程号
docker inspect -f '{{.State.Pid}}' <容器名>
docker inspect -f '{{.State.Pid}}' <容器 ID>
 
##进入容器没有 systemctl 命令解决
添加 --privileged=true(指定此容器是否为特权容器),使用此参数,则不能用 attach。
> 示例:
docker run -itd --name test3 --privileged=true centos /sbin/init
 
`/sbin/init 内核启动时主动呼叫的第一个进程`
 
可以使用 docker inspect <容器ID>
docker ps -a
docker exec -it <容器ID> /bin/bash
yum install httpd -y
systemctl status httpd

二.Docker镜像命令

1.docker search:搜索镜像

2.docker pull:下载镜像

格式:docker pull 仓库名称[:标签]
#如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签。
例:docker pull nginx

3.docker push:上传镜像

docker push 命令用于将本地的 Docker镜像 上传到 Docker镜像仓库

docker官方公有仓库地址https://hub.docker.com/注册

默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。
可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。
在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传。
 
docker tag nginx:latest wzyonline/nginx:kang	#添加新的标签
docker login						        	#登录docker官网公共仓库
Username:                                      #用户ID
password:                                      #网站用户登录密码
docker push wzyonline/nginx:zhuo				#上传镜像
docker logout                                   #登出docker官网公共仓库

4.docker images:查看本地镜像

docker images        #查看本地所有镜像
docker images -q     #只显示本地所有镜像的ID
 
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
nginx        latest    ae2feff98a0c   9 days ago   133MB
--------------------------------------------------------
REPOSITORY:镜像属于的仓库;
TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像;
CREATED:镜像创建时间;
SIZE:镜像大小;

5.docker inspect:获取镜像详细信息

格式:docker inspect 镜像ID号/容器ID     
#根据镜像的唯一标识 ID 号,获取镜像详细信息

6.docker tag:添加镜像标签

格式:docker tag 名称:[旧标签] 新名称:[新标签]
例:
#给nginx打上标签web,原来的标签是latest
docker tag nginx:latest nginx:web
docker images | grep nginx

7.docker rmi:删除镜像

格式:
docker rmi 仓库名称:标签				#当一个镜像有多个标签时,只是删除其中指定的标签
docker rmi 镜像ID号					#会彻底删除该镜像
 
注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。普通删除无法删除时,可以加-f选项强制删除。
docker rmi id -f
#-f:id号一样强删(慎用)
 
例如:
docker rmi nginx:web

#docker images -q 可以加载镜像id
#批量删除所有镜像
docker rmi `docker images -q`
 
#批量删除nginx镜像
docker rmi `docker images|grep "nginx"`

8.docker save:导出镜像

格式:docker save -o 存储文件名 存储的镜像
 
#-o:指定镜像文件名因为是导出来的文件一般是压缩包文件以tar为后缀
#另外一台主机安装好docker使用scp传输到另外一台主机
scp xx.tar 192.168.79.230:`pwd`
#另外一台主机查看并将文件加载到系统中
 
例:
docker save -o nginx.tar nginx:latest	#存出镜像命名为nginx.tar存在当前目录下
ls -lh
scp nginx.tar root@192.168.227.101:/opt   #存出镜像命名为nginx.tar存在另一台机器opt目录下227

9.docker load:导入镜像

格式:
docker load < 存出的文件
docker load -i 存出的文件
例:
docker load < nginx.tar

三.Docker容器操作命令

1.docker ps:查询容器运行状态

格式:
docker  ps [选项]
常见选项:​
docker ps        #查看当前运行状态的容器
docker ps -q     #只显示运行状态的容器的ID
docker ps -a     #-a 选项可以显示所有的容器
docker ps -aq    #只显示所有容器的ID
 
例如:
docker ps -a			#-a 选项可以显示所有的容器
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS    PORTS     NAMES
8b0a7be0ff58   nginx:latest   "/docker-entrypoint.…"   57 seconds ago   Created             inspiring_swanson
 
容器的ID号	   加载的镜像     运行的程序               创建时间       当前的状态  端口映射  名称

2.docker create:创建容器

格式:docker create [选项] 镜像
常用选项:
-i:让容器开启标准输入
-t:让docker分配一个伪终端tty
-it:合起来用实现和容器交互的作用,运行一个交互式会话shell
--name:指定容器名称:不指定会随机生成
示例:
docker create -it nginx:latest /bin/bash

3.docker start:启动容器

格式:docker start 容器的ID/名称
例如:docker start adda1e1ba37e

4.docker stop:停止容器

格式:docker stop 容器的ID/名称
例如:docker stop adda1e1ba37e

5.docker rm:删除容器

格式:docker rm 容器的id/名称
-f:强制删除正在运行的容器
例如:docker rm 52b280e1320c

补充:批量删除容器

法一:
docker ps -a |awk 'NR>=2 {print $1}' | xargs docker rm
#查看容器运行状态从第二行开始查看第一个字段并将结果传参给docker rm 删除
法二:
docker rm $(docker ps -aq) 
#将命令的结果付给变量进行删除
 
示例:
#格式:docker rm [-f] 容器ID/名称
 
1.#不能删除运行状态的容器,只能-f强制删除,或者先停止再删除
docker rm 3224eb044879
 
2.#已经退出的容器,可以直接删除
docker rm 1270a6791069 
 
3.#基于名称匹配的方式删除
docker rm -f distracted_panini
 
 
4.#删除所有运行状态的容器
docker rm -f `docker ps -q`
 
5.#删除所有容器
docker rm -f `docker ps -aq`
 
6.#有选择性的批量删除 (正则匹配)
docker ps -a l awk ' {print "docker rm "$1}'l bash
 
7.#删除退出状态的容器
for i in `dockef ps -a l grep -i exit / awk '{print $1}' '; do docker rm -f $i;done

6.docker run:创建并启动容器

可以直接执行docker run命令,等同于先执行docker create命令,再执行docker start 命令
注意:容器是一个与其中运行的shell命令共存亡的终端,命令运行容器运行,命令结束,容器退出

格式:docker run [命令] [--name 容器名称] 镜像 [bash]  [-c 操作]
bash:指定运行环境
-c:不入容器执行指定命令
-d:后台运行并返回容器id
前台运行
docker run -it centos:7 bash -c ls /
docker run -i --name test1 centos:7 bash -c ls /
docker ps -a
 
加 -d 选项让Docker容器以守护形式在后台运行且容器所运行的程序不能结束
docker run -itd --name test2 centos:7  /bin/bash
 
#示例1:
docker run -itd nginx:latest /bin/bash
 
#示例2:执行后退出
docker run centos:7 /usr/bin/bash -c ls /   
 
#示例3:执行后不退出,以守护进程方式执行持续性任务
docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done" 

(1)加 -d 选项让Docker容器以守护形式在后台运行且容器所运行的程序不能结束

(2)执行后退出

(3)执行后不退出,以守护进程方式执行持续性任务

7.docker inspect:查看容器ip地址

格式:docker inspect 容器id 
例如:
docker ps -a   #先查看运行时容器的id
docker inspect 7903adbc4ff9 

8.docker exec:进入容器

进入容器的容器状态必须是up状态

和shell 是两种运行模式

docker run -it会创建前台进程,但是会在输入exit后终止进程
docker attach会通过连接stdin,连接到容器内输入输出流,会在输入exit后终止容器进程
docker exec -it 会连接到容器,可以像SSH一样进入容器内部,进行操作,可以通过exit退出容器,不影响容器运行

格式:
docker exec -it id号/名称 bash/sh
#进去容器并指定运行环境
docker exec -it id号/名称 -c 命令
#不进入容器使用命令
 
选项:
-i 选项表示让容器的输入保持打开;
-t 选项表示让 Docker 分配一个伪终端
 
#先运行容器
docker ps -a 
#示例一:使用run进入,可以使用ctrl+d退出,直接退出终端
docker run -it centos:7 /bin/bash 
 
#示例二:想永久性进入,退出后还是运行状态,用docker exec
docker ps -a 
docker exec -it b99e0771c4e1  /bin/bash
exit #退出容器后,容器仍在运行
 
#示例三:docker attach,会通过连接stdin,连接到容器内输入输出流,公在输入exit后终止容器进程
(临时性的,不推荐)

9.docker stop:终止容器运行

格式:docker stop 容器的ID/名称
例如:docker stop 38b5218ca96f 

10.docker logs:查看容器日志

格式:docker logs 容器id
例如:
#后台启动容器,并使用-P随机映射一个端口
docker run -id -P nginx:latest
docker ps -a       #映射端口为32768
 
#浏览器使用宿主机IP和映射端口号,访问容器
 ​
#查看容器日志
docker logs f90ba006d88a 

11.docker export:容器导出

用户可以将任何一个 Docker 容器从一台机器迁移到另一台机器。在迁移过程中,可以使用docker export 命令将已经创建好的容器导出为文件,无论这个容器是处于运行状态还是停止状态均可导出。可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移。

导出格式:docker export 容器ID/名称 > 文件名
docker export 2592d3fad0fb > nginxtar

12.docker import:容器导入

导入格式:cat 文件名 | docker import - 镜像名称:标签
cat nginxtar | docker import - nginx:wsk
#导入后会生成镜像,但不会创建容器

13.docker cp:宿主机文件与容器文件复制

将宿主机文件复制到容器中

格式:docker cp 文件路径  容器id:目录
 
#当前家目录下有一个zhuo.txt文件 复制到容器里
docker cp ./zhuo.txt 38b5218ca96f:/opt

将容器文件复制到宿主机中

格式:docker cp 容器id:文件路径 目标目录
 
#当前容器有一个zhuo.txt文件 复制到宿主机data文件夹里
docker cp 38b5218ca96f:/opt/zhuo.txt /root/data

14.docker stats:查看docker消耗的资源状态 

docker stats