1.docker是啥
Docker 提供轻量的虚拟化,通过docker镜像能创建出多个容器,一个容器相当于一个虚拟机。可以把镜像快速部署到无数台服务器上。
2.docker与虚拟机对比
- 虚拟机:资源全部隔离,cpu、内存、磁盘相互独立,一台宿主机中可以安装的虚拟机数量是一定的,有限的,移植性不强(文件很大,拷贝传输困难)。
- Docker:部分共享部分隔离,共享cpu,内存,磁盘甚至操作系统,极为轻量,如图所示:
3.Docker五大要素
- 沙箱:隔离,将应用之间的必要资源隔离开,防止互相影响,应用之间互相独立。
- 镜像:模板,使用dockerfile制作镜像,通过镜像创建容器。
- 容器:镜像的实例,镜像只读,容器可写,容器中可以保存应用产生的零时文件
- 数据卷:挂载到容器上,用于保存必要数据。比如容器中数据库的数据,但是不建议用,因为重启容器需要挂载同步数据,效率较慢,解决方式:数据库拆分
- 仓库:与maven仓库概念一致,应用都会保存在仓库中,创建容器是根据镜像的规定进行拉取,可以共享。
docker的仓库和镜像:
4.docker的版本及要求
Docker分为docker-ce(社区版-开源)和docker-ee(企业级-收费)
Docker基于linux3.8及以上版本64bit内核开发,所以在使用docker前需要确认linux内核版本,一般centos7以上。
查看linux版本命令:
uname -a
5.docker安装
如不想安装可以直接下载.
https://download.youkuaiyun.com/download/weixin_42610529/11267286
1. 卸载老版本的 docker 及其相关依赖
sudo yum remove docker docker-common container-selinux docker-selinux docker-engine
2. 安装 yum-utils,它提供了 yum-config-manager,可用来管理yum源
sudo yum install -y yum-utils
3. 添加yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
4. 更新索引
sudo yum makecache fast
5. 安装 docker-ce
sudo yum install docker-ce
6. 验证docker是否安装好
执行docker version 命令查看docker的版本。
[root@localhost /]# docker version
Client:
Version: 17.12.1-ce
API version: 1.35
Go version: go1.9.4
Git commit: 7390fc6
Built: Tue Feb 27 22:15:20 2018
OS/Arch: linux/amd64
Server:
Engine:
Version: 17.12.1-ce
API version: 1.35 (minimum version 1.12)
Go version: go1.9.4
Git commit: 7390fc6
Built: Tue Feb 27 22:17:54 2018
OS/Arch: linux/amd64
Experimental: false
6.启动docker
//查看docker状态
systemctl status docker
Active: inactive (dead)
//启动docker
systemctl start docker
systemctl status docker
//停止docker
service docker stop
//重启docker
service docker restart
7.docker命令
命令 | 用法 |
yum -y install docker-ce | 下载最新版的docker |
service docker start | 启动Docker服务 |
service docker stop | 停止Docker服务 |
service docker restart | 重新启动Docker服务 |
docker version | 查看Docker的版本号 |
docker pull 镜像地址:版本 | 从镜像仓库中下载 |
docker save a2a69ca5184a > jt-centOS6.tar | 根据镜像id导出镜像 |
docker save -o redis-3.2.8.tar redis:3.2.8 | 根据镜像名称导出镜像 |
docker load -i docker-centos-6.5.tar | 指定jar包导入镜像文件 |
docker rmi a2a69ca5184a | 根据Id号删除镜像文件 |
docker rmi -f a2a69ca5184a | 强制删除镜像文件 删除镜像前需要先关闭容器 |
docker images | 查询所有镜像文件 |
docker inspect index.alauda.cn/tutum/centos:6.5 | 查看镜像文件细节信息 |
docker tag 旧镜像名称和端口 redis-ali:0.0.1 | 修改镜像的名称 |
docker build -t 镜像名称:版本号 | 根据dockerfile来创建镜像文件 |
docker run -d --name 容器名 镜像名:版本号 | 根据镜像名称启动容器 |
docker run -d --name 容器名(自定) 镜像id号 | 根据镜像id启动容器 |
docker run -d -p 虚拟机端口:镜像端口 --name 容器名 镜像名:版本号 | 启动容器,并指定暴露端口 |
docker ps | 查看活动的docker容器进程 |
Docker ps -a/-all | 查看全部的容器 |
docker exec -it 容器id bash | 进入指定的容器 |
docker stop 容器Id号 | 停止指定容器 |
docker start 容器Id号 | 启动创建好的容器 |
docker stop $(docker ps -q) & docker rm $(docker ps -aq) | 关闭和删除所有的容器 |
docker rm 容器Id | 删除指定的容器 |
8.docker中安装redis
将redis镜像上传到/usr/local/src/redis中然后执行下列命令:
redis的镜像请自己下载
https://download.youkuaiyun.com/download/weixin_42610529/11267332
cd /usr/local/src/redis
docker load -i redis-3.2.8.tar
9.创建容器
docker run -d --name redis7000 -p 7000:6379 redis:3.2.8
参数说明:
-d,则containter将会运行在后台模式(Detached mode)
--name 实例名称
-p 对外程序访问端口7000,宿主机映射的redis端口6379
最后的redis为镜像的名称
查看容器
docker ps -a
10.删除容器
docker stop redis7000
//容器状态是exit
docker ps -a
docker rm redis7000
docker ps -a
docker run -d --name redis7000 -p 7000:6379 redis:3.2.8
docker stop redis7000
docker start redis7000