1 docker中镜像和容器的概念
首先我们从网上拉取的都是docker的镜像,镜像运行后就是一个docker容器,
一个镜像可以有多个容器。
镜像和容器的关系类似Java中的类和对象
docker --help
查看docker命令
docker的命令使用方式为docker [OPTIONS] COMMAND
查看docker的信息,包括容器,镜像,版本,代理等信息
docker info
2 镜像命令
查看本地所有镜像
docker images
-
REPOSITORY 镜像的仓库源
-
TAG 标签 类似于版本 latest表示最新版本
-
IMAGE ID 镜像ID
-
CREATED 镜像创建时间
-
SIZE 镜像大小
同一仓库源可以有多个TAG,表示仓库源的不同版本,使用**REPOSITORY :TAG **来定义不同的镜像。
在拉取镜像或运行镜像时,如果不指定版本标签,将默认使用latest 版本。例如mysql,docker将默认使用mysql:latest镜像
docker images 的可选参数
docker images options
options:
-a | 列出本地所有的镜像(含中间镜像层) |
-q | 只显示镜像ID |
--digests | 显示镜像的摘要信息 |
--no-trunc | 显示完整的IMAGE ID信息 |
-a -q 可以连用 docker images -qa
显示所有镜像的ID
docker search 镜像名称
使用docker search 会从docker仓库https://hub.docker.com/中搜索镜像
以下搜索mysql示例
docker search mysql
其中OFFICIAL为**[OK]**表示的是官方镜像
下载镜像
搜索到镜像后就可以下载镜像了,使用命令
docker pull 镜像名称
例如 docker pull mysql
就会下载mysql的docker镜像了,不过版本是latest版本
命令等价于docker pull mysql:latest
docker pull mysql:5.7
拉取mysql5.7的镜像
删除镜像
删除单个镜像
docker rmi 镜像ID
或者docker rmi 镜像名称:TAG
删除刚刚下载的mysql版本,使用命令docker rmi mysql
就相当于docker rmi mysql:latest
删除其他版本docker rmi mysql:5.7
删除安装docker下载的helloworld镜像
docker rmi hello-world
出现错误提示无法删除镜像hello-world,因为有容器使用它。此时我们可以添加选项**-f**强制删除镜像
docker rmi -f hello-world
删除多个镜像
docker rmi -f 镜像名1:TAG 镜像名2:TAG
例如 删除本地的hello-world镜像和nginx镜像
删除全部镜像
docker rmi -f $(docker images -qa)
利用之前查询所有镜像的ID,配合rmi命令可以删除全部镜像
3 容器命令
启动一个容器
docker run [OPTIONS] image
image可以是镜像名称+tag,也可以是image ID
OPTIONS 选项,此处只讲解常用选项
--name | 为容器指定一个名称 |
-d | 后台运行容器并返回容器ID,即启动守护式容器 |
-i | 以交互模式运行容器,通常与-t同时使用 |
-t | 为容器重新分配一个伪输入终端,通常与-i同时使用 |
-P | 随机端口映射 |
-p | 指定端口映射,有四种格式 |
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort #最常用
containerPort
以交互方式进入docker容器
docker run -it centos`
查看运行的docker进程
docker ps [options]
- CONTAINER ID 是镜像运行产生的容器ID
- IMAGE 是使用的镜像
- STATUS 容器的状态 UP表示运行
- PORT 容器映射的端口
- NAMES 容器的名称 这里容器运行时没有指定–name ,docker自动生成了一个名称
-a | 列出当前所有正在运行的容器+历史运行过的 |
-l | 显示最近创建的容器 |
-n | 显示最近几个创建的容器 个数由-n后指定数字 |
-q | 静默模式,只显示容器编号 |
--no-trunc | 不截断输出 |
退出容器
两种方式
- exit 容器停止退出
- ctrl+P+Q 容器不停止退出
容器启动后会产生容器ID和容器名称,容器名称是–name指定的名称或docker自动创建的名称
启动docker容器
docker start 容器ID或容器名称
重启docker容器
docker restart 容器ID或容器名称
停止docker容器
docker stop 容器ID或容器名称
强制停止docker容器
docker kill 容器ID或容器名称
删除docker容器 加上**-f**参数可以强制删除
docker rm 容器ID或容器名称
一次性删除多个容器
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
查看容器日志
docker logs [OPTIONS] 容器ID
- -t 显示时间戳
- -f 跟随最新的日志打印
- –tail 数字 显示最后多少条
docker logs -t -f --tail 容器ID
查看docker内的进程
docker top 容器ID
查看docker内部细节
docker inspect 容器ID
进入运行的容器并以命令行交互
docker exec -it 容器ID bashShell
docker exec -t f0af994bd42f /bin/bash
重新进入
docker attach 容器ID
区别
- attach 直接进入容器启动命令的终端,不会启动新的进程
- exec 在容器中打开新的终端,并且可以启动新的进程
复制文件到主机或容器
从容器内拷贝文件到主机上
docker cp 容器ID:容器路径 本地路径
docker cp f0af994bd42f:/tmp/yum.log ./
从主机上复制文件到容器内
docker cp 本地路径 容器ID:容器路径
docker镜像重命名
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
例如docker tag centos mycentos:7