容器:
【1】列出容器
docker ps [OPTIONS]
OPTIONS说明:
- -a :显示所有的容器,包括未运行的。
- -f :根据条件过滤显示的内容。
- --format :指定返回值的模板文件。
- -l :显示最近创建的容器。
- -n :列出最近创建的n个容器。
- --no-trunc :不截断输出。
- -q :静默模式,只显示容器编号。
- -s :显示总的文件大小。
示例:
#查看正在运行的容器
docker ps
#查看所有的容器
docker ps –a
#检索所有包含peer0的容器
docker ps -a | grep peer0
【2】查看容器日志
docker logs [OPTIONS] CONTAINER_ID
Options:
- --details 显示更多的信息
- -f, --follow 跟踪实时日志
- --since string 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
- --tail string 从日志末尾显示多少行日志, 默认是all
- -t, --timestamps 显示时间戳
- --until string 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)
示例:
#查看容器baa8ca7f50f5的日志
docker logs baa8ca7f50f5 | tail -20
【3】杀死正在运行的容器
杀死某个容器
docker kill 容器ID
杀死所有正在运行的容器
docker kill $(docker ps -a -q)
【4】删除容器
删除某个容器
docker rm 容器ID
删除所有已经停止的容器
docker rm $(docker ps -a -q)
【5】重启容器
docker restart 容器ID
【6】启动和停止容器
#停止容器
docker stop 容器id或者容器名
#启动容器
docker start 容器id或者容器名
【7】创建容器
实际上是有docker create方法的,这样就是创建一个容器,并不会运行,run相当于create+start,新版docker推荐使用run
docker run [OPTIONS]
- -i:表示创建并运行容器
- -t:表示容器启动后会进入其命令行。通常于-i一起使用:-it表示创建并运行容器,且运行之后自动进入为当前应用打开一个默认终端
- --name :为创建的容器命名。
- -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。
- -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行,与-t相反。
- -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口,程序访问是通过宿主机映射端口来访问容器的。可以使用多个-p做多个端口映射。
- -e:表示添加容器的环境变量。
- --rm:让容器在退出时,自动清除挂在的卷,以便清除数据。等价于在容器退出后,执行docker rm -v。
(1)交互式的方式创建容器:
这样的方式我们直接就进入了容器内部
docker run -it --name=容器名称 镜像名称:标签 /bin/bash
(2)后台式创建容器:
这样的方式创建成功之后没有进入容器内部
docker run -id --name=容器名称 镜像名称:标签
如果想要进入容器内部可以用下面的命令:
docker exec -it 容器名称(或者容器ID) /bin/bash
(3)目录映射
我们可以在创建容器的时候通过 -v参数,将宿主机的目录文件与容器内的目录文件进行映射,这样我们就可以通过修改宿主机目录文件从而去影响容器。
#格式:创建容器 –v 宿主机的目录:容器的目录
docker run -id -v /usr/local/dunm.rdb:/data/dunm.rdb --name=myRedis redis:latest
(4)通过镜像文件创建容器
docker run -id --name=docker_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=rootcentos/mysql-57-centos7
MYSQL_ROOT_PASSWORD参数表示登录MySQL的root用户的密码。
(5)配置容器磁盘使用空间大小
docker run -it --storage-opt size=120G fedora /bin/bash
【8】拷贝容器文件
#把宿主机的文件拷贝到容器里
docker cp 需要拷贝的文件或目录 容器名称:容器目录
#从容器中拷贝文件到宿主机
docker cp 容器名称:容器目录 需要拷贝的文件或目录
【9】查看容器的数据
docker inspect 容器名称(容器ID)
【10】把容器保存为镜像
docker commit 容器名 保存的镜像名
【11】容器备份
docker save –o 打包的后的文件名.tar 镜像名
【12】容器恢复
docker load –i 你的备份镜像tar包
【13】监控容器使用的系统资源
docker stats
默认情况下,stats 命令会每隔 1 秒钟刷新一次输出的内容直到你按下 ctrl + c。下面是输出的主要内容:
[CONTAINER]:以短格式显示容器的 ID。
[CPU %]:CPU 的使用情况。
[MEM USAGE / LIMIT]:当前使用的内存和最大可以使用的内存。
[MEM %]:以百分比的形式显示内存使用情况。
[NET I/O]:网络 I/O 数据。
[BLOCK I/O]:磁盘 I/O 数据。
[PIDS]:PID 号。
如果不想持续的监控容器使用资源的情况,可以通过 --no-stream 选项只输出当前的状态:
docker stats --no-stream
只输出指定的容器:
docker stats --no-stream 容器的名称或容器ID
注意,多个容器的名称或者是 ID 之间需要用空格进行分割
格式化输出的结果:
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
docker stats 命令支持我们通过 --format 选项自定义输出的内容和格式
上面的命令中我们只输出了 Name, CPUPerc 和 Memusage 三列。下面是自定义的格式中可以使用的所有占位符:
.Container 根据用户指定的名称显示容器的名称或 ID。
.Name 容器名称。
.ID 容器 ID。
.CPUPerc CPU 使用率。
.MemUsage 内存使用量。
.NetIO 网络 I/O。
.BlockIO 磁盘 I/O。
.MemPerc 内存使用率。
.PIDs PID 号。
有了这些信息我们就可以完全按照自己的需求或者是偏好来控制 docker stats 命令输出的内容了。
除了以 table 格式输出结果,还可以通过 format 选项输出 json 格式的结果:
docker stats --no-stream --format "{\"container\":\"{{ .Container }}\",\"memory\":{\"raw\":\"{{ .MemUsage }}\",\"percent\":\"{{ .MemPerc }}\"},\"cpu\":\"{{ .CPUPerc }}\"}"
【14】导出容器
docker export -o export123.tar a404c6c174a2
docker export [OPTIONS] CONTAINER
OPTIONS说明:
- -o :将输入内容写到文件。
镜像:
【1】列出镜像
docker images
字段说明:
REPOSITORY:镜像名称
TAG:镜像标签
IMAGE ID:镜像ID
CREATED:镜像的创建日期(不是获取该镜像的日期)
SIZE:镜像大小
【2】删除镜像
删除某个镜像
docker rmi 镜像ID
删除所有镜像
docker rmi $(docker images -q)
【3】强制删除所有镜像
docker rmi -f $(docker images -q)
【4】搜索镜像
docker search 镜像名
【5】拉取镜像
docker pull 镜像名:版本
如果不加版本默认会为我们下载latest版本
【6】制作镜像
docker build -t 镜像名 .
最后是有个“.”的,表示使用当前目录的Dockerfile构建;
-t参数表示制成的镜像名,可任意定义。
【7】将镜像保存为归档文件
docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3
docker save [OPTIONS] IMAGE [IMAGE...]
OPTIONS 说明:
- -o :输出到的文件。
【8】从归档文件创建镜像
docker import my_ubuntu_v3.tar runoob/ubuntu:v4
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
OPTIONS说明:
- -c :应用docker 指令创建镜像;
- -m :提交时的说明文字;
【9】从归档文件导入镜像
docker load --input fedora.tar
docker load < busybox.tar.gz
docker load [OPTIONS]
OPTIONS 说明:
- --input , -i : 指定导入的文件,代替 STDIN。
- --quiet , -q : 精简输出信息。
docker load和docker import的区别:
实际上,既可以使用docker load命令来导入镜像库存储文件到本地镜像库,也可以使用docker import命令来导入一个容器快照到本地镜像库。
两者的区别在于容器快照将会丢弃所有的历史记录和元数据信息,而镜像存储文件将保存完整记录,体积也会更大。此外从容器快照文件导入时,也可以重新指定标签等元数据。
【10】修改镜像的tag和name
docker tag 9aed1ced115f imagename:1.0.4
【11】清理Build缓存
docker builder prune