Docker使用入门(二) —— Docker的基本使用
次访问
Docker的使用主要包括镜像的管理、容器的运行和管理以及使用docker构建各种服务。
Docker镜像管理
列出镜像
列出当前Docker主机上可用的镜像,保存在本机的/var/lib/docker下。
1 | docker images |
返回如下信息:
REPOSITORY:镜像来源的仓库名
TAG:镜像的标签(每个镜像可以对应多个标签,则会在docker images命令中显示为多行)
IMAGE_ID:镜像ID,镜像的唯一标志
CREATED:创建时间
SIZE:所占用的空间大小
查找镜像
查找Docker Hub所有公共的可用镜像
1 | docker search KEYWORD |
返回如下信息:
NAME:仓库名
DESCRIPTION:镜像描述
STARS:用户评价(受欢迎程度)
OFFICIAL:是否由开发团队官方管理
AUTOMATED:是否由Docker Hub的自动构建流程创建
拉取镜像
使用docker pull命令,可以从指定仓库将镜像拉取到本地
1 | docker pull [Registry地址]<仓库名>:<标签> |
如果不指定标签,则默认拉取最新版本的镜像。
若不指定Registry地址,则从Docker Hub进行拉取:
1 | docker pull ubuntu:14.04 //从Docker Hub拉取Ubuntu 14.04版本的镜像 |
若指定Registry地址,则从指定的私有库拉取镜像:
1 | docker pull 192.168.1.100/ubuntu/14.04.3.tar:latest |
删除镜像
可以使用docker rmi命令删除本地的镜像
1 | docker rmi IMAGE [IMAGE2 IMAGE3...] |
IMAGE可以为仓库名、仓库名:标签、镜像ID
Docker容器管理
创建并启动新容器
1 | docker run [OPTIONS] 镜像名 [执行命令] [命令参数] |
- OPTIONS常见选项:
- –name=”容器名” : 为容器指定名称
- -i : 以交互模式运行容器,通常与-t同时使用,使容器提供一个交互式shell
- -t : 为容器分配一个伪tty终端,通常与-i同时使用,使容器提供一个交互式shell
- -d : 在后台运行容器(创建守护式容器),并返回容器ID
- -h “hostname” : 为容器指定hostname
- -p [宿主机IP:]端口:容器端口 : 将容器的指定端口映射到宿主机(指定IP)的指定端口
- –dns IP : 指定容器使用的DNS服务器地址,不指定的情况下默认与宿主机一致
- 示例
1 | docker run -i -t -d --name="sayers_ubuntu" -h "sayers" -p 127.0.0.1:8080:80 --dns 8.8.8.8 ubuntu /bin/bash |
列出容器信息
1 | docker ps |
控制已创建的容器
启动已经停止的容器:
1
docker start 容器名|容器ID
停止运行中的容器:
1
docker stop 容器名|容器ID
强制停止运行中的容器:
1
docker kill 容器名|容器ID
关掉容器时优先使用stop命令,只有当容器内应用存在异常情况而无法正常停止时,才会考虑使用kill命令强制停止容器。
重新启动运行中的容器:
1
docker restart 容器名|容器ID
附着到容器上
当容器以后台模式运行时,可以通过docker attach命令附着到容器上,并在容器环境中执行任意命令。
1 | docker attach 容器名|容器ID |
当使用attach命令附着到容器之后,可以通过Ctrl + P + Q 组合键退出附着环境,此时容器仍会在后台继续运行。
在容器内执行命令
当容器以后台模式运行时,可以用docker exec在容器内执行命令
1 | docker exec 容器名|容器ID 命令 [命令参数] |
例如,使用docker exec命令在容器中创建一个文件:
1 | docker exec 18120f2d4c4d touch /tmp/1.txt |
docker attach和docker exec的区别:
attach:将本机的标准输入输出附着到容器上,本质上并没有在容器内创建进程执行命令
exec:在容器内创建进程执行命令,并返回执行结果
监控容器状态
查看容器内进程
1
docker top 容器名|容器ID
docker top命令类似于Linux操作系统中的ps命令,可以获取当前运行进程的各类信息。Linux操作系统下ps命令的各个参数,在docker top命令下均有效。
统计容器资源消耗
1
docker stats 容器名|容器ID [--no-stream=false|true]
docker stats命令会反馈容器的CPU、内存、网络I/O和存储I/O的使用情况。所有的使用情况指标都是基于对应的容器环境,而非主机环境。
docker stats命令支持统计多个容器的资源情况,只需要输入多个容器的名称或ID,中间用空格分开。
docker stats命令支持参数–no-stream,默认值为false。当–no-stream=false时,执行docker stats命令会实时统计资源使用状况。当–no-stream=true时,docker stats命令只会返回一次资源情况,并退出执行。
获取容器内部日志
1
docker logs [参数] 容器名|容器ID
docker logs命令可以获取容器内部stdout和stderr输出的日志信息。
可以使用以下参数:
- -f : 实时显示stdout追加输出的日志,不自动退出,这个参数默认为false
- -t : 在每条日志前加上时间输出,默认为false
- –since datetime : 用于截取输出日志范围的起始时间为datetime
- –until datetime : 用于截取输出日志范围的结束时间为datetime
- –tail N : 用于指定输出最后N条记录
容器和主机间的文件传输
1 | docker cp 容器名|容器ID:容器内文件路径 主机文件路径 |
例如,将容器内的/tmp/122.txt拷贝到主机下:
1 | docker cp sayers_ubuntu:/tmp/122.txt /tmp/ |