一、虚拟技术及Docker
1.1 虚拟机
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。
1.2 容器
容器一词的英文是container。
容器是一种基于虚拟化的沙盒技术,它可以将应用程序及其所有依赖项打包到一个独立的、可移植的容器中。容器技术最早起源于2000年,随着FreeBSD 4.0的发布,容器技术正式对外公开。在2001年,容器技术进入了Linux,并在之后逐渐成形。
容器技术的好处在于,它可以使应用程序在不同的环境中具有相同的运行方式,从而提高了应用程序的可移植性和可靠性。此外,容器还可以提供轻量级的虚拟化,使得在同一台主机上运行多个应用程序变得更加容易和高效。与虚拟机相比,容器更加轻量级,因为它们不需要模拟整个底层硬件系统,只需要提供应用程序运行所需的资源即可。
目前,最为流行的容器技术是Docker,它提供了一个开源的容器平台,使得创建、部署和管理容器变得更加简单和方便。
1.3 Docker
Docker是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
二、Docker常用命令
2.1 容器的使用
获取镜像:
docker pull mysql #默认最新版本
#docker pull mysql:5.7 #指定版本
启动容器:
docker run 选项:
-d:以后台模式运行容器。
-p:将容器的端口映射到主机的端口。
-v:将主机的目录或文件挂载到容器内。
–name:为容器指定一个名称。
–rm:容器退出后自动删除容器。
–network:指定容器使用的网络类型。
–env:设置环境变量。
–e:设置密码
–restart:设置容器重启策略。
–privileged:赋予容器特权,允许访问主机所有设备。
–link:将容器连接到另一个容器。
–add-host:在容器的hosts文件中添加一条记录。
–dns:指定容器使用的DNS服务器。
–memory:设置容器使用内存的最大值。
–cpu-shares:设置容器使用CPU的权重。
–cap-add:为容器添加权限。
–cap-drop:从容器中删除权限。
–security-opt:为容器设置安全选项。
–ulimit:设置容器的ulimit选项。
–log-driver:指定容器日志驱动程序。
–log-opt:设置容器日志选项。
–health-cmd:指定容器健康检查命令。
–health-interval:设置容器健康检查间隔时间。
–health-timeout:设置容器健康检查超时时间。
–health-retries:设置容器健康检查重试次数。
举例:
docker run -itd -p 3306:3306 --name mysql mysql:latest /bin/bash #运行mysql并进入
2.2 常用命令
docker images:列出本地主机上的所有镜像。
docker ps:列出正在运行的容器。
docker ps -a:列出所有容器,包括正在运行和已经停止的。
docker start [container_id]:启动一个已经停止的容器。
docker stop [container_id]:停止一个正在运行的容器。
docker rm [container_id]:删除一个容器,前提是容器必须先停止。
docker rmi [image_id]:删除一个镜像。
docker pull [image_name]:从Docker Hub上下载一个镜像。
docker run [image_name]:创建一个新的容器并运行一个命令。
docker exec [container_id] [command]:在运行的容器中执行命令。
三、安装MYSQL举例
获取镜像:
docker pull mysql #默认最新版本
查看本地镜像:
使用以下命令来查看是否已安装了 mysql:
docker images
运行容器:
运行 mysql 容器:
docker run -itd --name mysql_test -p 3306:3306 -e ROOT_PASSWORD=123456 mysql
参数说明:
-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过宿主机ip:3306 访问到 MySQL 的服务。
ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。
查看是否安装成功:
docker ps