Docker 入门教程(2)——image与container
image镜像
Definition of: image
Docker images are the basis of containers. An Image is an ordered collection of root filesystem changes and the corresponding execution parameters for use within a container runtime. An image typically contains a union of layered filesystems stacked on top of each other. An image does not have state and it never changes
引用docker官网的定义,大意是:
docker images是container的基础。镜像定义了容器运行所需要的文件和参数。镜像没有状态也不会改变。
下载镜像
<!--tag表示版本-->
docker pull 镜像名:tag
查看镜像
docker iamges
删除镜像
<!-- -f强制删除-->
docker image rm -f 镜像id或者镜像名:tag
container容器
Definition of: container
A container is a runtime instance of a docker image.
A Docker container consists of
- A Docker image
- An execution environment
- A standard set of instructions
The concept is borrowed from Shipping Containers, which define a standard to ship goods globally. Docker defines a standard to ship software.
引用docker官网的定义,大意是:
容器是镜像的一个运行实例。由镜像、运行环境、指令集组成。
ps:镜像和容器的关系,就像类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。一个镜像可以启动多个容器,启动一次镜像就是创建一个容器,每个容器都是一个隔离环境,不会相互影响。
基于镜像新建一个容器并启动
docker run --name 容器名 -i -t -p 主机端口:容器端口 -d -v 主机目录:容器目录:ro 镜像id或镜像名:TAG
# --name 指定容器名,可自定义,不指定自动命名
# -i 以交互模式运行容器
# -t 分配一个伪终端,即命令行,通常与-i组合来使用
# -p 指定映射端口,将主机端口映射到容器内的端口
# -d 后台运行容器
# -v 指定挂载主机目录到容器目录,默认为rw读写模式,ro表示只读
查看容器
docker ps -a -q
docker container ls -a -q
# -a 查看所有容器,包含运行中、未运行的
# -q 只查看容器id
启动、停止、重启、删除
# 启动
docker start 容器id
# 停止
docker stop 容器id
# 重启
dockers start 容器id
# 删除 -f 强制删除
docker rm -f 容器id
查看日志
docker logs -f 容器id --tail 100
# -f 保持输出
# --tail 输出尾部多少行,默认所有
进入正在运行的容器
# 将后台运行的容器展示到前台,不能执行其他命令
docker attach 容器id
# 可以执行指定的cmd命令,如bash、curl等
docker exec -i -t 容器id cmd
拷贝文件
# 主机中文件拷贝到容器中
docker cp 主机文件路径 容器ID或容器名:容器路径
# 容器中文件拷贝到主机中
docker cp 容器ID或容器名:容器路径 主机文件路径
Docker registry
Docker registry是一个集中存储、管理镜像的远程服务,类似与maven的远程仓库。最常用的Docker registry就是官方的Docker Hub。
以镜像名:Tag
指定哪个版本的镜像,来从Docker registry拉取指定镜像。如果不指定Tag,将以lastest
作为默认标签。
例如我们拉取java 8的镜像,使用docker pull java:8
。
总结
参考资料
纯洁的微笑:Docker(一):Docker入门教程