镜像和容器的关系可以看做是 java 中类和实例的关系。镜像时静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
镜像使用的是分层存储,容器也是一样的。每一个容器运行时是以镜像为基础层,在其上创建一个当前容器的存储层,我们可以称这个容器运行时读写而准备存储层为容器存储层。
容器存储层的生命周期和容器一样,容器消亡时,容器存储层也会消失。因此任何保存于容器存储层的信息都会随着容器的删除而丢失。
按照Docker最佳实践的要求,容器不应该向存储层内写任何数据,容器存储层要保持无状态化。所有文件的写入操作都应该使用volume 数据卷、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或者网络存储)发生读写,其性能和稳定性更高。
数据卷的生命周期独立于容器,容器消亡,数据卷不会消亡。因此使用数据卷之后,容器删除或者重新运行之后数据不会丢失。
容器的基本命令
# 查看容器
docker ps -a
docker ps -a -q # 查看所有停止的容器
# 创建容器
docker create -it nginx
# 启动
docker start nginx
# 创建并启动
docker run nginx
# 当使用docker run命令创建启动容器时,Docker在后台运行的标准操作有下面几个步骤
# 1、检测本地是否存在指定的镜像,不存在就从公有仓库下载
# 2、利用镜像创建并启动一个容器
# 3、分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
# 4、从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
# 5、从地址池配置一个IP地址给容器
# 6、执行用户指定的应用程序
# 7、执行完毕后终止容器
# 重启
docker restart nginx
# 进入容器中 几种方式
# 1.docker attach 命令、
docker attach nginx
# 2.docker exec 命令、
docker exec -ti nginx /bin/bash
# 3.nsenter工具
# 停止
docker stop nginx
# 移除
docker rm nginx
# -f, --force=false:强项终止并删除一个运行中的容器。
# -l, --link=false:删除容器的连接,但保留容器。
# -v, --volumes=false:删除容器挂载的数据卷。
# 显示 细节
docker inspect nginx
# 清理所有处于终止状态的容器
docker container prune
# 启动一个容器,容器结束运行即删除
docker run -it --rm nginx
# 导出
docker export nginx
# 导入
docker import nginx
# 查询帮助
docker container --help
点波关注 系统搭建(docker)
网友评论