Docker简介
官方文档:https://docs.docker.com/
Docker是一种容器化技术,它让你可以将应用程序和它们的依赖项封装成一个可移植的容器。这个容器包括了应用程序的代码、运行时环境、库和配置文件,所有这些都打包在一起,形成一个独立的单元。就像一个小电脑可以随时被搬运然后无压力的运行程序。
Docker架构图
简易版
Docker安装(CentOS7)
官方文档:https://docs.docker.com/engine/install/centos/
1. 卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.安装Docker
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
3.启动Docker并测试
sudo systemctl start docker
sudo docker run hello-world
Docker最常用命令
Docker数据卷(Volumes)
使用Docker安装MySQL如果MySQL容器不小心被删了,是不是很不安全?
要升级MySQL版本,需要销毁旧容器,数据是不是跟着毁了?
容器运行后如果要修改其中的某些配置该怎么办?
如何让Nginx容器代理容器外部静态资源?
综上,容器提供程序的运行环境,但程序运行产生的数据、程序运行依赖的配置都应该与容器解耦,此时就用到数据卷。
数据卷是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。在被挂载的宿主机目录修改文件就相当于直接修改容器内的文件。如果容器内文件毁了宿主机目录则可以充当数据备份的作用。
挂载示例命令:
Docker镜像结构
一个完整的镜像是逐层打包的
Dockerfile:描述镜像结构的文件。就是一个文本文件,包含一个个指令,用指令来说明要执行什么操作来构建镜像。将来Docker可以根据Dockerfile帮我们构建镜像。
示例Dockerfile文件:
Docker网络
默认情况下,所有容器都是以bridge方式连接到Docker的一个虚拟网桥上:
虚拟网桥分配的ip会变化,所以要自定义网络使容器间通信,加入自定义网络的容器才可以通过容器名互相访问。Docker的网络操作常用命令:
Docker Compose
如果要部署一个Java应用程序需要手动运行一个个所依赖的容器镜像,是不是太繁琐了?
此时Docker Compose就登场了。
Docker Compose通过一个单独的docker-compose.yml模板文件(YAML格式)来定义一组
相关联的应用容器,帮助我们实现多个相互关联的docker容器的快速部署。
示例:
一个命令直接起飞
docker compose up -d
DevOps
有了Jenkins和k8s,开发人员只需push代码就能实现自动编译代码,构建镜像,部署应用一条龙服务