Docker入门
Docker简介
Docker是一种虚拟容器技术,是伴随PaaS(平台即服务)产生的,常用的虚拟化容器技术有两种:全虚拟化和操作系统虚拟化(OS)。VMvare workstation是全虚拟化的实现,而Docker是基于操作系统虚拟化技术的一种。
Docker与VMvare对比,有显著的优势:
- 启动速度快。Docker容器的启动操作在秒级就可以完成。
- 系统消耗资源低。一台Linux机器可以运行上千个Docker容器。
- 迁移扩展更便捷。Docker比VMvare占更少的磁盘空间,对安装好的Docker容器迁移更便捷,且兼容性好,支持物理机、云平台等几乎任意平台。
Docker核心概念
Docker包含四个基本概念:镜像(Image)、容器(Container)、仓库(Repository)、仓库注册中心(Registry)
Docker镜像是一个模板,可以用来创建Docker容器,容器是从镜像创建的运行实例,它们间的关系类似于Java中的类和对象,Docker通过容器运行应用。
Registry是存放镜像的地方,Repository是Registry中对镜像进行分类存放的地方。即一个Registry中会有多个Repository,而一个Repository中会存放多个不同tag的Image。
Registry分为公有和私有两种,Docker默认的Registry是Dokcer Hub,国内公开的Registry有USTC、网易云、AliCloud等,此外用户可搭建私有Registry。
Docker命令
Docker安装
Docker默认操作系统是Ubuntu,此处讲Centos上Docke的安装。
docker卸载:yum -y remove docker
docker安装:yum install -y docker
docker启动:systemctl start docker 或 systemctl start docker.service
docker重启:systemctl restart docker
Docker镜像
列出镜像:docker images
其中:Repository:镜像所在仓库;Tag:镜像版本;ImageID:镜像ID;Created:镜像创建时间;Size:镜像大小。
搜索镜像:docker search 镜像名称
拉取镜像:docker pull 镜像名称:tag 例子:docker pull centos:7
注意:默认拉取镜像是从dokcer hub拉取,速度慢,可改为从ustc拉取
在docker宿主机:vi /etc/docker/daemon.json
添加如下记录后重启docker
{ "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"] }
删除指定镜像:docker rmi repository:tag 或 docker rmi imageID
删除所有镜像:docker rmi $(docker images -q)
若镜像ImageID一致 ,镜像之间有关联,需按照一定顺序删除
导出镜像1:docker save repository:tag/imageID > /root/xx.tar.gz`
导入镜像1:docker load < /root/xx.tar.gz
导出镜像2:docker save repository:tag/imageID -o /root/xx.tar
导入镜像2:docker load -i /root/xx.tar
Docker容器
创建容器命令:docker run
参数:
- -i 表示运行容器
- -t 表示容器启动后可进入其命令行,即分配了伪终端
- --name 容器创建名称
- -v 表示宿主机目录与容器目录的映射
- -d 会创建守护式进程在后台运行,这种方式创建的容器不会自动登录
- -p 表示宿主机端口和容器内端口的映射,可用多个-p做映射
交互式运行容器:
docker run -i -t --name 容器名称 repository:tag /bin/bash
docker -it --name 容器名称 imageID /bin/bash
守护式进程方式运行容器:(推荐使用)
docker run -di --name 容器名称 repository:tag
docker run -di --name 容器名称 imageID
注意:通过run创建并进入容器后,可通过exit退出容器,此时容器停止。再次进入,需start启动容器,再进入容器。
启动容器:docker start 容器名称/容器ID
进入容器:
docker exec -it 容器名称/容器ID /bin/bash (推荐使用)
docker attach 容器名称/容器ID
attach进入容器,exit退出,容器停止运行;exec进入容器,exit退出,容器依旧运行。
查看正在运行容器:docker ps
查看历史运行过的容器:docker ps -a
查看醉经运行过的容器:docker ps -l
停止容器:docker stop 容器名称/容器ID
删除指定容器:docker rm 容器名称/容器ID
删除所有容器:docker rm 'docker ps -a -q'
复制文件:docker cp 源文件 目标文件
源文件和目标文件既可以为宿主机中的文件,也可为容器中的文件。若为容器中文件格式为:容器名称:路径
例:docker cp /root/test.war mycentos:/usr/local