一、Docker简介
- 什么是docker:
docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上, 也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口 - 什么是容器:一个容器就相当于一个虚拟机
- 为什么使用docker
1.提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境
2.提供弹性的云服务。因为 Docker容器可以随开随关,很适合动态扩容和缩容
3.组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构 - docker和虚拟机区别
隔离级别: docker进程级(隔离策略-CGroups) 虚拟机内核级(隔离策略-Hypervisor)
启动时间:docker容器-秒级, 虚拟机-分钟级
群集规模:docker容器-上万 虚拟机-上百
硬盘储存: docker容器-MB 虚拟机-GB
系统资源利用率:docker容器0-5% 虚拟机5-15%
高可用策略: 虚拟机-备份、容灾、迁移 docker-弹性、动态、负载
二、Docker安装
-
官网教程方法(一般默认安装到centos7系统上)
centos7官网教程安装方法: https://docs.docker.com/engine/install/centos/
ubanan官网教程安装方法:https://docs.docker.com/engine/install/ubuntu/查看内核版本(前提是必须是大于等于3.8):
uname -r
- 如果有之前安装过的先卸载干净
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
- 先设置一个yaml远程仓库
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 安装docker引擎(有y按y)
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- 启动docker
sudo systemctl start docker
- 试用docker命令(从远程仓库拉取并运行,先查看本地有没有hello-world,如果没有去远程仓库拉取并运行)
sudo docker run hello-world
或者使用(查看版本信息):
docker version
返回上图内容代表安装成功
三、docker加速
Tips:因为远程仓库在国外-安装包都在远程仓库,安装镜像比较慢,使用国内的镜像源替换
阿里云镜像地址及配置方法:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
- 在/etc/docker目录下新建daemon.json文件,加入以下内容,保存
{"registry-mirrors": ["https://c8ldi73s.mirror.aliyuncs.com/", "https://registry.docker-cn.com", "http://fl36db2.m.daocloud.io", "https://docker.mirrors.ustc.edu.cn"]}
- 查看:docker info 结尾有下列内容代表镜像替换成功
- 重启服务使其生效
systemctl daemon-reload
systemctl restart docker
四、docker常用命令
-
针对docker启动或重启等
docker --version 或 docker info 查看docker版本
systemctl start docker 启动docker
systemctl status docker 查看docker运行状态
systemctl stop docker 停止docker
systemctl restart docker 重启docker
systemctl enable docker 开机启动 -
针对docker镜像命令
docker image --help 或者 docker image rm --help 查看image帮助文档
docker images 查看镜像 或者 docker image ls docker images -a 查看更多的镜像
docker image rm 镜像id 或者 docker rmi mysql:5.7 删除未运行的镜像(可以同时删多个)
docker image rm -f 镜像id 或者 docker rmi -f mysql:5.7 强制删除正在运行镜像(可以同时删多个)docker search redis 搜索镜像(一般使用OFFICIAL 下面带OK官网安装包-安全和稳定性比较好)
docker pull mysql 从docker hub仓库下载mysql镜像,不加tag: mysql:latest是下载的是最新版
docker pull mysql:5.7 指定镜像版本下载 ,
一般会拉取镜像带alpine结尾的版本 docker pull nginx:alpine版本 容量会更小
docker inspect nginx:alpine docker inspect 镜像名称:查看镜像详细信息(包括版本,创建时间、储存地址等)
docker push mysql 推送一个镜像(本地仓库或者docker仓库)
docker tag 更改镜像
docker history python:alpine 查看镜像历史记录 -
针对docker容器
docker run 简写 或者 docker container run 全写
docker run --help
docker run centos 启动一个安装包,先查看本地有没有,如果本地没有,会自动取远程仓库拉取,如果不指定版本,默认是 centos:latest 没有-d只会启动1次
ls 可查看当前目录
docker ps 或者 docker container ps 查看正在运行的容器(容器id、镜像名称、路径、启动时长、启动状态Up、 PORTS-端口映射、容器名称)
容器名称如果不指定会随机生成
docker run --name centos_test centos:7 --name 指定容器的名称 容器名称不能和已有的容器名称重复(还想使用此名称必须把之前的容器名称删除)
docker ps -a 查看所有容器
docker pause 容器ID或者容器名称 暂停容器 docker unpause 容器ID或者容器名称 恢复暂停容器
docker stop 容器id或容器名称 停止一个或多个容器
docker start 容器id或容器名称 启动一个或多个容器
docker restart 容器ID或者容器名称 重启一个或多个容器
docker rm 容器ID或者容器名称 删除已停止的容器
docker rm -f 容器ID或者容器名称 强行删除正在运行的容器
docker inspect 容器ID或容器名称 查看容器内部细节
docker top 容器ID或容器名称 查看容器内运行的进程
docker logs 容器ID或容器名称 查看容器日志
docker stats 容器ID或容器名称 查看容器的资源利用率
docker cp 需要拷贝的文件或目录 容器名称:容器目录 拷贝文件到容器指定目录下
#Tips:还有很多命令和使用,例如数据卷、网络、和虚拟机进行切换、自己创建一个dockerfile及使用规范,docker commpose、docker_swarm群集命令等待后续补充