前言
Docker是一种容器化技术,简化软件的部署和管理。文章详细解释了Docker的架构、安装步骤和常用命令,帮助用户快速启动和管理容器。还介绍了Docker镜像命令和数据卷挂载的实例,增强对持久化存储的理解,并涵盖了Nginx的安装方法,支持Web应用的使用
Docker概述
什么是docker
- Docker 是一个应用打包、分发、部署的容器
- 诞生于2013年,基于Go 语言实现
- Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux 机器上
- 容器是完全使用沙箱机制,相互隔离
- 容器性能开销极低
- 你也可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要,而 普通虚拟机则是一个完整而庞大的系统,包含各种不管你要不要的软件
Linux软件安装
以前通过yum命令安装软件,是直接把软件安装到Linux系统中,安装和卸载都比较麻烦,因为软件和系统是强关联
Docker是一种容器技术,可以将我们应用和依赖进行打包,制作出一个镜像(软件安装包及相关依赖),可以在Linux,Windows中的docker中运行
Docker采用沙箱隔离机制,部署运行软件之间相互隔离,与操作系统也是隔离的
Docker架构
Docker实际也是一个小型的虚拟机,一个部署在Linux虚拟机中的管理安装删除等应用管理的一个虚拟机架构.
- 打包:就是把你软件运行所需的依赖、第三方库、软件打包到一起,变成一个安装包
- 分发:你可以把你打包好的"安装包"上传到一个镜像仓库,其他人可以非常方便的获取和安装
- 部署:拿着"安装包"就可以一个命令运行起来你的应用,自动模拟出一摸一样的运行环境,不管是在 Windows/Mac/Linux
Docker安装
安装yum-utils,配置镜像源需要使用
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配置
在etc下创建docker目录
mkdir -p /etc/docker
进入docker目录
cd /etc/docker
创建daemon.json文件
touch daemon.json
修改文件
vim daemon.json
{"registry-mirrors": ["https://dockerhub.icu"]
}
注:修改文件操作为更换docker的镜像下载地址
重载配置
systemctl daemon-reload
重启
systemctl restart docker
Docker镜像命令
Docker镜像命令,就是对镜像文件操作的命令
docker pull 镜像名 从远程仓库拉去镜像文件
docker images 查看本地镜像
docker rmi 镜像名 删除镜像
docker load -i 镜像文件 加载本地镜像
docker build 从dockerfile构建镜像
docker save 保存镜像到本地,生成tar文件
docker push 推送镜像到服务器
Docker容器命令
docker run 镜像名 创建一个新的容器
docker ps -a 查看容器
docker start 容器名 启动容器
docker stop 容器名 停止容器
docker rm 容器名 删除容器
docker logs 容器名 查看容器日志
注意:删除容器,需要停止运行后,再吧容器删除,然后删除镜像
Docker安装镜像(例mysql)
安装常见参数(docker run命令的常见参数)
- --name:指定容器名称
- --restart=always 自动启动
- --privileged=true 拥有特权
- -p:指定端口映射
- -d:让容器后台运行
下载镜像
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密码有没有加密
修改root账号加密方式(以下演示的为作者的加密规则)
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
登录mysql
mysql -uroot -proot
解释代码:
-u 后面跟随的为账号
-p 后面跟随的为账号密码
退出
exit
数据卷挂载
由于容器内的目录操作起来不太方便,例如mysql数据目录,toncat项目部署目录,所以可以在Linux(宿主机)中创建一个目录,在运行镜像时,把宿主机中的目录和容器内目录建立映射关系,后期运行产生数据,就可以存储在宿主机中的映射目录中宿主机中的目录称为数据卷.
例:mysql数据挂载实现
创建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
Nginx
- Nginx是一款是由俄罗斯的程序设计师所开发高性能的Web服务器**(只能运行前端项目,不能运行 java项目)**。
- 其特点是占有内存少 ,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好, 中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等等。
- 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
感谢大家的观看,本次分享就到这里。希望我的内容能够对您有所帮助。创作不易,欢迎大家多多支持,您的每一个点赞都是我持续更新的最大动力!如有不同意见,欢迎在评论区积极讨论,让我们一起学习、共同进步!如果有相关问题,也可以私信我,我会认真查看每一条留言。期待下次再见!
希望路飞的笑容可以治愈努力路途中的你我!
博主vx:Dreamkid05 --->欢迎大家和博主讨论问题