docker的初步使用
导读
本文不追求严谨的措辞,仅为没有用过docker的用户提供快速的概览
docker是一个轻量的虚拟机
虚拟机 :
从网上下载了一个软件,不确定是否包含病毒;或者只是临时用一下,有点洁癖不希望有这个软件的残留。
此时把这个软件放到虚拟机的系统里运行,用完了可能就连这个虚拟系统一起删除了。
虚拟机是完全模拟了系统,或许你只是想装个mysql 。
但是为了支撑虚拟系统的运行,维持系统运行的却要许多额外进程。
虚拟机里面的系统是个完整的系统
docker的轻量在于你只需要运行你的mysql就好,其他的东西会调用宿主机的功能。
docker的系统算是个半成品,他只运行你要运行的服务。
案例
通过使用docker安装一个mysql数据库
1. 在linux中安装docker
Docker的版本在1.13.x 叫docker
3月2日,Docker 官方发布了一篇 blog ,宣布企业版到来。版本也从1.13.x一跃到17.03。
此后docker 有两种类型 docker CE(社区版) docker EE(企业版)
此处提供docker ce的安装
1.1 配置ubuntu仓库
1. 设置apt支持https
sudo apt-get install \ apt-transport-https ca-certificates \ curl software-properties-common
2. 下载验证码
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
3. 指纹验证 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
sudo apt-key fingerprint 0EBFCD88
4. 添加docker官方仓库
sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
1.2 安装docker
#更新apt仓库缓存 sudo apt-get update #安装docker sudo apt-get install docker-ce #测试Docker的hello world sudo docker run hello-world
2. 使用docker安装mysql数据库
环境:系统ubuntu16.10 主机ip:192.168.1.10 docker17
# 2.1 创建mysql保存数据的文件夹su root # 2.2 下载镜像(静态文件)docker pull mysql:5.6.36 # 2.3 创建并启动容器docker run --name mysql_test1 \ -p 4001:3306 \ -v /my/own/datadir:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.6.36 此时可以通过192.168.1.10:4001访问mysql数据库了 ------------其他命令---------------- # 启动容器 docker stop mysql_test1 # 启动容器 docker start mysql_test1 |
3. 运行参数解释
参数解释
docker pull 表示从镜像仓库将某个镜像下载到本地
--name mysql_test1 | 起个名, 方便操作 |
-v /my/own/datadir:/var/lib/mysql | 文件夹/my/own/datadir是宿主机的文件,用于保存mysql的数据文件 |
-v /my/custom:/etc/mysql/conf.d | (这个参数如果需要可以使用) 自定义mysql的配置文件 |
-e MYSQL_ROOT_PASSWORD=123 | 动态变量mysql的密码 |
-p 4001:3306 | 暴露3306端口到宿主机的4001 用户通过宿主机的4001访问myql |
-d mysql:5.6.36 | 使用之前下载的镜像 -d表示在后台运行 |
其他命令
# 删除一个停止的容器 docker rm mysql_test1 # 删除一个本地的镜像 docker rmi mysql:5.6.36
4. 案例总结
镜像: 对于mysql:5.6.36叫做镜像 可以理解为压缩包
容器: 称mysql_test1为一个容器 可以理解为解压后的运行文件
仓库 :默认会从docker官方拉取镜像,国内也有许多提供仓库服务的公司
安装好之后只会注意三个东西 :
- 数据库文件的保存位置(文件)
- ip + 端口 用于连接 (网络)
- 用户名密码 (其实还是保存在文件中)
运维人员 | 开发者 |
一般都使用相同的镜像, 启动时可以按需要传入动态配置参数 | 通过网络访问 如 192.168.1.10:3306 |
通过-v参数将数据保存在docker的宿主机中 而容器可以直接删除 。 迁移数据方便 | 开发者不需要关心Mysql的运行环境, 装在docker中还是linux或者windows中 |
5. 其他
docker的用途
- 可以使开发环境和运行环境保持一致
- 可以快速使用来自网友分享的各种开发环境
- 自动化测试和持续集成、发布
需要继续了解的东西
- 不同容器之间如何通信
- 通过Dockerfile创建镜像
- 通过容器编排使多个软件成为一组服务