目录
Docker的概述
什么是docker?
Docker是一个开源的应用容器引擎 ,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker的英文翻译是“搬运工”的意思,他搬运的东西就是我们常说的集装箱Container,Container里面装的是任意类型的App,我们的开发人员可以通过Docker将App变成一种标准化的,可移植的,自管理的组件,我们可以在任何主流的操作系统中开发,调试和运行。
Docker 是一个应用打包、分发、部署的容器
诞生于2013年,基于Go 语言实现
Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任
何流行的Linux 机器上
容器是完全使用沙箱机制,相互隔离
容器性能开销极低
你也可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要,而
普通虚拟机则是一个完整而庞大的系统,包含各种不管你要不要的软件。
总结:docker是一种容器技术,解决软件跨环境迁移的问题。
Docker主要功能
打包:可以把软件以及软件的依赖打包制作成一个镜像(例如把springboot和jdk打包成一个镜像)。
分发:可以把打包好的镜像上传到镜像仓库或者其他的linux系统中。
部署:可以非常方便的进行安装,只需要一个命令即可。
Docker架构
docker使用客户端-服务器架构。Docker客户端(client)与守护进程(Docker daemon)进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作。
仓库(Repository):是docker提供的一个用来保存镜像的仓库
镜像(Image):镜像就是一个可执行的包,用来创建容器,docker中每一个软件就是一个镜像。
容器(Container): 容器是镜像运行时的实体。容器可以被创建,启动,停止,删除,暂停等。
Docker安装
Docker安装
安装yum配置工具
yum install -y yum-utils
设置更新docker镜像源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装
yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
测试docker版本
docker -v
启动常用命令
docker安装成功后并没有启动
启动命令
systemctl start docker
关闭命令
systemctl stop docker
设置开机自动启动
systemctl enable docker
Docker卸载
在卸载Docker之前需要先停止服务,否则无法卸载。
停止服务
systemctl stop docker
卸载
yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
删除文件
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
Docker配置
在etc下创建docker目录
mkdir -p /etc/docker
进入docker目录
cd /etc/docker
创建daemon.json文件
touch daemon.json
修改文件
vim daemon.json
{
"registry-mirrors": ["https://dockerhub.icu"]
}
重载配置
systemctl daemon-reload
重启
systemctl restart docker
Docker服务命令
Docker镜像命令
镜像列表
docker images
从docker仓库拉取镜像到本地仓库
docker pull
删除本地镜像
docker rmi 镜像名/镜像id
保存镜像到本地,生成tar文件
docker save
从docker保存镜像到linux本地(需要保存)
docker save 镜像名 >镜像名.tar
从linux本地加载镜像到docker中
docker load 镜像名 < 镜像名.tar
载入本地镜像
docker load
Docker容器命令
删除容器,需要容器停止运行,然后再把容器删除。
创建一个新的容器并运行
docker run 镜像名
查看容器
docker ps -a
启动容器
docker start 容器名
停止容器
docker stop 容器名
删除容器
docker rm 容器名
查看容器日志
docker logs 容器名
Docker部署Mysql
下载镜像
docker pull mysql:8.0
安装
docker run -d -p 3306:3306 \
--name mysql \
--restart=always \
--privileged=true \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=root \
mysql:8.0
进入到容器
docker exec -it 容器名/容器id bash
登录到mysql
mysql -uroot -proot
修改root账号的加密方式
只有修改root账号的加密方式,我们才可以在SQLyog中连接虚拟机中的mysql
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
退出
exit
注:退出要输入两次
第一次退出mysql
第二次退出容器
数据卷挂载
数据卷是一个虚拟目录,是容器内目录与宿主主机目录之间映射的桥梁。
它将宿主机目录映射到容器内目录,方便我们操作容器内文件,或者方便迁移容器产生的数据。
在执行docker run 命令时,使用-v数据卷:容器内目录可以完成数据卷挂载。
再次下载Mysql
由于我们需要迁移容器内产生的数据,所以我们要对下载的mysql进行数据卷挂载,所以我们先需要删除之前已经下载的Mysql.
停止容器
docker stop mysql
删除容器
docker rm mysql
这里不要忘记修改root账号的加密方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
创建mysql数据卷
mkdir -p /opt/mysql/data
安装
docker run -d -p 3306:3306 \
--name mysql \
--restart=always \
--privileged=true \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=root \
-v /opt/mysql/data:/var/lib/mysql \
mysql:8.0
Docker部署nginx
nginx的概述
Nginx是一款是由俄罗斯的程序设计师所开发高性能的 Web服务器(只能运行前端项目,不能运行
java项目)。
其特点是占有内存少,并发能力强。
Nginx专为性能优化而开发,性能是服务器最重要的考量,实现上非常注重效率,能经受高负载的
考验,据报告能支持高达50,000个并发连接数。
nginx的部署
拉取镜像
docker pull nginx:1.24
创建数据卷
mkdir -p /opt/nginx/html
安装命令
docker run -d -p 80:80 \
--name nginx \
--restart=always \
--privileged=true \
-v /opt/nginx/html:/usr/share/nginx/html \
nginx:1.24
访问
虚拟机的ip:80
我们只需要将文件部署到宿主机的opt/nginx/html目录下
这里我用我做的项目来举例
我使用的是HBuilder X来编写前端代码
我们首先需要在HBuilder X的终端中输入
npm run build
然后在我们的项目中就会出现dist的文件
然后我们右键在外部资源管理器打开
将其放入我们的数据卷中
最后我们打开浏览器,输入我们虚拟机的ip就可以看到我们编写的前端界面