Docker 简介及安装
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 启动成功。
![[Pasted image 20230716151737.png]]