【docker】入门及常用命令-镜像,容器管理
docker原理了解
和vm原理对比
镜像是?
定义: Docker 镜像是一个特殊的文件系统, 除了提供容器运行时所需的程序、 库、 资源、 配置等文件外, 还包含了一些为运行时准备的一些配置参数( 如匿名卷、 环境变量、 用户等) 。 镜像不包含任何动态数据, 其内容在构建之后也不会被改变。
特点: 分层存储。镜像构建时, 会一层层构建, 前一层是后一层的基础。 每一层构建完就不会再发生改变, 后一层上的任何改变只发生在自己这一层。
容器是?
定义: 镜像( Image ) 和容器( Container ) 的关系, 就像是面向对象程序设计中的类和实例 一样, 镜像是静态的定义, 容器是镜像运行时的实体。 容器可以被创建、 启动、 停止、 删除、 暂停等。
本质: 是一个拥有自己独立命名空间的进程。可以拥有自己的 root 文件系统、 自己的网络配置、自己的进程空间, 甚至自己的用户 ID 空间。
仓库(Docker Registry)是?
定义: 网络中的镜像注册中心,宿主机(不同地域,不同网络)可以在仓库中拉取镜像。
一个 Registry可以有多个仓库(repository),每个仓库多个镜像(一个镜像一个tag便签)。我们可以通过 <仓库名>:<标签>
的格式来指定具体是这个软件哪个版本的镜像。 如果不给出标签, 将以 latest 作为默认标签。
以 Ubuntu 镜像 为例, ubuntu 是仓库的名字, 其内包含有不同的版本标签,如, 16.04 , 18.04 。 我们可以通过 ubuntu:16.04 , 或者 ubuntu:18.04来具体指定所需哪个版本的镜像。 如果忽略了标签, 比如 ubuntu , 那将视为ubuntu:latest
配置
ubuntu
/etc/docker/daemon.json
文件配置镜像加速
{
“registry-mirrors”: [
“https://hub-mirror.c.163.com”
]
}
重新启动
sudo systemctl daemon-reload
sudo systemctl restart docker
docker 启动和关闭
启动 systemctl start docker
守护进程重启 sudo systemctl daemon-reload
重启docker服务 systemctl restart dock
重启docker服务 sudo service docker restart
关闭docker service docker stop
闭docker systemctl stop docker
镜像操作相关
获取
docker pull [选项] [Docker Registry 地址[:端口号]/] 仓库名[:标签]
eg: docker pull ubuntu:18.04
运行
docker run -it --rm ubuntu:18.04 bash
分析:
- -i 交互式操作,保持容器的标准输入
- -t 终端 分配一个为终端用于交互
- ubuntu:18.04 镜像作为基础
- –rm 容器退出后就将它删除
- bash 进入bash命令
退出容器
exit
列出镜像
docker image ls
docker images
docker system df //查看镜像,容器,数据卷所占用的空间
删除镜像
docker image rm [选项] <镜像1> [<镜像2> …]
其中,镜像可以用短id(前3-4位),仓库名:标签等表示
容器操作相关
新建并启动
docker run
-i
-t
-d 后台运行,返回container id
docker run的后台操作
- 检查本地是否存在指定的镜像, 不存在就从公有仓库下载
- 利用镜像创建并启动一个容器
- 分配一个文件系统, 并在只读的镜像层外面挂载一层可读写层
- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
- 从地址池配置一个 ip 地址给容器
- 执行用户指定的应用程序
- 执行完毕后容器被终止
容器管理
docker container ls 查看容器
docker container logs [id] 查看后台容器的输出
停止容器
docker container stop [id] 强制-f
docker container ls -a 查看已经停止的容器
docker container start 重新启动已经终止的容器
docker container restart 重新启动正在运行的容器
容器进入
docker attach [id] 进入容器后,exit会导致容器终止
docker exec [id] 进入容器后,exit不会导致容器终止 eg:docker exec -it d9a1 bash
导入导出
导出
docker export [id] >ubuntu.tar
本地位置一般是当前文件夹下
导入
指定文件
docker import
指定url
docker import http://xxx/xx/xx example/imagerepository
删除容器
docker container rm [id/name] 删除单个
docker container prune 删除所有终止状态容器
仓库管理
登录自己账号
docker login
docker logout