Docker简介及安装
docker是什么
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。
总结:
- docker是一个开源的软件部署解决方案
- docker也是轻量级的应用容器框架
- docker可以打包、发布、运行任何的应用
docker使用场景
docker在devops体系、微服务应用中的地位至关重要,使用场景有:
- 应用自动化打包、发布
- 自动化测试和持续集成、发布
- 微服务快速扩容伸缩
docker优点
*跨平台可移植性:按统一标准打包(镜像中),可传播。
*面向应用:优化部署应用(设计哲学)→API,接口及文档(体现)。
*版本控制:追踪、查询、记录版本信息(应用程序更改史)和回滚版本等
*组件复用:组件式搭建(基础镜像)→Python(运行环境) | postgreasql(基础镜像)。
*共享性:公共的注册服务器(可免费下载源码)。
docker与VM比较
在这里引用docker官网文档的一组图片来比较一下docker和VM之间的区别。容器是应用层的抽象,它将代码和依赖关系打包在一起。多个容器可以在同一台机器上运行,并与其他容器共享操作系统内核,每个容器在用户空间中作为独立进程运行。容器占用的空间比VM少(容器映像的大小通常为几十MB),启动速度也比VM快很多,可以处理更多的应用程序,并且需要更少的VM和操作系统。虚拟机(VM)是物理硬件的抽象,将一台服务器转变为多台服务器。管理程序允许多台VM在单台机器上运行。每个VM都包含操作系统的完整副本,应用程序,必要的二进制文件和库,一般占用数十GB。
Centos安装docker
# 安装docker
yum install docker-io -y
#启动docker
service docker start 或者 systemctl start docker
#设置开启自启动
sudo systemctl enable docker
#查看是否启动成功
docker version
有client和service两部分表示docker安装启动都成功了
至此,docker已经安装启动完成。
docker常用命令
#查看镜像
docker images
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
#查看正在运行的容器
docker ps
#docker拉取镜像
docker pull ubuntu:13.10
#docker查找镜像
docker search httpd
#启动镜像
docker run -d --privileged=true -p 6380:6379 -v /usr/docker/redis/conf/redis-6380.conf:/etc/redis/redis.conf -v /usr/docker/redis/data:/data --name redistslave-3 857c4ab5f029 redis-server /etc/redis/redis.conf --appendonly yes
参数详解:
--privileged=true 容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
-v/usr/docker/redis/conf/redis-6379.conf:/etc/redis/redis.conf 映射配置文件
redis-server /etc/redis/redis-6381.conf 配置文件方式启动
--appendonly yes 数据持久化
#重启镜像
docker restart CONTAINER ID
docker加速
由于docker拉取镜像默认使用的官网仓库,需要翻墙,速度会比较慢,可以使用阿里云进行加速。
- 进入阿里云容器镜像服务
2、使用加速服务
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["your address"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
实战-docker部署mysql
#拉取镜像
docker pull mysql:5.6
#启动
docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
-v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。
-v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。
-v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
至此,mysql启动成功。