概述
docker是个开源的应用容器引擎。可让开发者快速打包应用到一个容器中,实现快速移植,可发布到任何一个linux机器上,可以实现虚拟化。
容器是沙箱机制,互相独立,性能开销低。
docker分为EE(社区版)、CE(企业版)
架构
三个基本概念:
- 镜像(image):相当于一个root文件系统
- 容器(container):镜像与容器相当于类与实例的关系,容器是镜像运行的实例,可以被创建(create)、启动(start)、停止(kill)、删除(delete)、暂停(stop)
- 仓库(repository):保存镜像
其他概念
- Registry:分公有(DockerHub)和私有(private),包含多个repositories,每个reponsitory包含多个tags(标签),每个tag对应一个image
- Hosst(主机):一个物理或虚拟主机用于执行docker守护进程和容器
docker安装
!!!64位系统
第一次装遇到一个坑,其实是自己坑自己,因为官方文档或者任何一篇博客都写得很清楚要64位系统支持。
装docker时一直遇到镜像报错问题,一直以为是墙的原因,换了好久的国内源都不成功,后来灵光乍现,去查了查云主机的系统版本,发现是32位的centos6.9,不说了,都是泪。
系统centos7 64位
# 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置yum源,换了阿里云的源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装
yum install docker-ce
# 启动docker服务
systemctl start docker
docker镜像加速
国内从DockerHub拉取镜像过慢可配置镜像加速器
各厂商镜像加速器:
网易:https://hub-mirror.c.163.com/
阿里云:https://<你的ID>.mirror.aliyuncs.com
七牛云加速器:https://reg-mirror.qiniu.com
腾讯云:https://mirror.ccs.tencentyun.com
ubuntu
vim /etc/default/docker
DOCKER_OPTS="--registry-mirror=https://mirror.ccs.tencentyun.com"
centos
vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com"
]
}
检查加速器是否生效
$ docker info
Registry Mirrors:
https://reg-mirror.qiniu.com
docker使用
docker常用命令
# 启动docker服务
systemctl start docker
# 关闭docker服务
systemctl stop docker
# 重启docker服务
systemctl restart docker
# 获取镜像
docker search ubuntu //查找镜像见下方
docker pull ubuntu
# 创建/运行容器
//如果镜像在本地中不存在,docker就会自动从docker镜像仓库中下载
docker run --name 容器名
-d nginx:latest //使用镜像nginx:latest后台运行容器
-p 8080:80 //将容器的 80 端口映射到主机的 8080 端口
--link 容器名 //连接另一个容器,比如mysql数据库
-e //设置环境变量,mysql通过设置环境变量设置初始密码
# 进入容器
docker exec -it ubuntu /bin/bash
//-i 交互式操作
//-t 终端
// /bin/bash 获取交互式shell
// exit 退出
# 启动/重启容器
docker start 容器ID或容器名
docker restart 容器ID或容器名
# 查看当前运行容器
docker ps
# 查看当前所有容器
docker ps -a
# 停止容器
docker stop 容器ID或容器名
# 关闭容器
docker kill 容器ID或容器名
# stop和kill的主要区别:stop给与一定的关闭时间交由容器自己保存状态,kill直接关闭容器
# 删除容器
docker rm
# 导出容器快照
docker export 容器id > 容器.tar
# 导入容器快照
docker import 镜像路径/本地快照 docker镜像名
docker import bayonet.tar bayonet:v1
docker 容器内的文件与本地互传
# 复制容器内的文件到本地
docker cp -a 容器id:/etc/ngnix /home
# 复制本地文件到容器内
docker cp -a /home/test.txt 容器id:/home/test
清理docker
# 清除所有处于终止状态的容器
docker container prune
查找镜像
Docker Hub搜索,可查看镜像具体tag,网址为:https://hub.docker.com/
docker compose
可以使用配置文件YML的方式来创建docker,Vulhub就使用了这种方式
windows和mac环境都无需安装,linux需要单独安装
centos安装docker compose
# 需先安装python、pip
yum install python-pip
yum install epel-release -y
yum install python -y
# 安装 docker-compose
pip install docker-compose
# 测试是否安装成功
docker-compose --version