- 学习Docker, 部署上线毕设项目
学习内容:
DOCKER做什么黑马:https://www.bilibili.com/video/BV1CJ411T7BK?p=21
开源的 应用容器 引擎
基于 GO 语言实现
Dockers让开发者将 应用+环境 一起打包到一个轻量级可移植的容器中,发布到Linux机器上
容器使用沙箱机制,相互隔离
安装Docker# yum 包更新到最新 yum update # 安装需要的软件包 yum install -y yum-utils device-mapper-persistent-data lvm2 # 设置yum源 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装docker,出现界面都按y yum install -y docker-ce # 查看docker版本 docker -vDocker架构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZNDHHxkS-1653805254204)(imgs/image-20220415100045229.png)]
Docker 须知1、容器container的网络服务不能直接和外部机器通信
2、但!宿主机的网络服务可以和外部机器直接通信
3、容器container可以和宿主机直接通信
所以,我们可以在启动容器时,做好容器和宿主机的端口映射,外部机器即可访问容器container
配置-镜像加速器使用 Alibaba 镜像加速器
登录自己的账号,每个人的加速器地址是不同的
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-njX8qzMh-1653805254205)(imgs/image-20220415100415548.png)]
命令-服务start - stop // restart // status // enable
systemctl --- docker
# 启动 docker 服务 systemctl start docker # 停止 docker 服务 systemctl stop docker # 重启 docker 服务 systemctl restart docker # 查看 docker 服务状态 systemctl status docker # 开启-------自启动-------- docker 服务 systemctl enable docker命令-镜像
搜索 - 拉取 - 删除
查看本地镜像
docker ---
#搜索 远程镜像 docker search xxx #拉取 远程镜像 docker pull xxx[:version] #如果不知道镜像版本,去dockerhub搜索对应镜像 # 本地镜像 列表 REPOSITORY TAG IMAGE_ID CREATED SIZE # 仓库 - 版本 - 镜像ID - 创建时间 - 大小 docker images #查看所有的镜像 ID docker images -q #删除 本地镜像 docker rmi IMAGE_ID #删除所有的镜像 docker rmi `docker images -q`命令-容器
临时启动并进入容器:
docker -run -it --name=c1 centos:7 /bin/bash
参数说明:
- -i: 保持容器运行
- -t: 分配终端
- -d: 以守护(后台)运行容器,需要使用docker exec进入容器
- –name:容器名字
- /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
要退出终端,直接输入 exit: 容器随之停止运行
-it : 创建交互式容器
-id : 创建后台容器
启动容器后台运行:
在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。
docker run -id --name=c1 centos:7
**注:**加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec [进入容器,若从这个容器退出,容器不会停止]
#查看 正在运行 的容器 docker ps #查看 所有 的容器 docker ps -a #查看 所有 的容器的id docker ps -aq #进入后台容器【退出容器不会关闭】 docker exec -it 容器ID /bin/bash #启动 start docker start 容器ID #停止 stop docker stop 容器ID #重启容器 docker restart 容器ID #查看容器信息 inspect docker inspect 容器ID #删除 rm [只有容器停掉后,才能删除rm] docker rm 容器ID #删除所有终止状态(exited)的容器 docker container prune数据卷 Docker应用部署 Mysql
1、搜索 镜像
docker search mysql
2、拉取 镜像
docker pull mysql:5.6
3、创建 容器,设置端口映射、目录映射
# 在/root下创建 mysql目录 mkdir ~/mysql cd ~/mysql # 启动mysql容器 docker run -id -p 3307:3306 #端口映射 --name=c_mysql #容器名称 # 挂载数据卷 [目录映射:配置文件、日志文件、持久化位置] -v $PWD/conf:/etc/mysql/conf.d #mysql配置文件 -v $PWD/logs:/logs #mysql日志文件 -v $PWD/data:/var/lib/mysql #mysql数据持久化位置 # ------------------- -e MYSQL_ROOT_PASSWORD=123456 #mysql-root密码 mysql:5.6 #进入后台容器mysql docker exec -it c_mysql /bin/bashTomcat
需求:在Dockers容器中部署Tomcat, 通过外部机器访问Tomcat部署的项目
1、搜索tomcat镜像 docker search tomcat
2、拉取tomcat镜像 docker pull tomcat
3、创建容器
#在root目录下创建tomcat目录 mkdir ~/tomcat cd ~/tomcat #启动tomcat容器 docker run -id -- name=c_tomcat -p 8080:8080 -v $PWD:/usr/local/tomcat/webapps tomcat
4、部署项目
将项目扔到tomcat目录下面
5、测试访问
Nginx需求:在Dockers容器中部署Nginx,并通过外部机器访问Nginx
1、搜索Ngnix镜像
2、拉取Nginx镜像
3、创建容器
#创建目录 mkdir ~/nginx cd ~/nginx mkdir conf cd conf #在 ~/nginx/conf下创建 nginx.conf 文件,粘贴内容 vim nginx.conf #启动容器 docker run -id --name=c_nginx -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/var/log/nginx -v $PWD/html:/usr/share/nginx/html nginx
4、访问Nginx
Redis需求:在Docker部署Redis容器,访问redis
1、搜索redis镜像
docker search redis
2、拉取redis镜像
docker pull redis:5.0
3、创建容器,设置端口映射
decker run -id --name=c_redis 6379:6379 redis:5.0Dockerfile Docker镜像原理
1、Linux文件系统分为 bootfs 和 rootfs 两部分
- bootfs: 包含引导加载程序、Kernel内核
- rootfs: root文件系统,不同的Linux发行版,rootfs 不同
2、 Docker镜像是由特殊的文件系统叠加而成
3、容器 container =》镜像 Image
docker commit 容器id 镜像名称:版本号 #将容器转为镜像 docker save -o 压缩文件名称 镜像名称:版本号 #把镜像转为压缩文件 docker load -i 压缩文件名称 #将压缩文件转为镜像Dockerfile
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KKJe4vKq-1653805254212)(imgs/image-20220516222243022.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SCUqOup7-1653805254213)(imgs/image-20220516222438005.png)]
dockerfile是一个文件,包含了指令集 ,用于构建 build 出一个镜像Image
开发人员:可以为开发团队提供一个完全一致的开发环境
测试人员:直接拿开发时所构建的镜像 or Dockerfile文件构建一个Image
运维人员:部署时实现应用的无缝移植
# 创建一个 docker-files 目录 mkdir docker-files # 创建一个 centos_dockerfile 文件 vim centos_dockerfile
# centos_dockerfile 文件 FROM centos:7 MAINTAINER itheimaRUN yum install -y vim # linux命令 WORKDIR /usr # 定义工作目录 CMD /bin/bash # 定义容器启动后执行的命令
# 构建 镜像Image docker build -f ./centos_dockerfile -t itheima_centos:1.0 . # 创建 容器 docker run -id --name=c2 itheima_centos:1.0部署springboot项目
1、将 springboot 项目打成 jar包
2、找到target目录,将 jar包 传到 服务器的 docker-files 目录下
3、编辑 dockerfile 文件
FROM java:8 MAINTAINER itheima # 将jar包添加到容器中 ADD springboot.jar app.jar CMD java-jar app.jar
4、构建 镜像 docker build -f dockerfile文件路径 -t 镜像名称:版本 .
5、创建 容器【配置端口映射9000-》8080】
docker run -id -p 9000:8080 镜像名称
6、访问 项目【端口9000】
7、方式一:把 dockerfile 给测试人员。方式二:把 Image 镜像给测试人员
8还有个命令要提下,可以查看容器运行时的日志
docker logs 容器id 1Docker 服务编排
1、安装dockercompose
2、卸载dockercompose
3、a
mkdir docker-compose vim docker-compose.yml
version: '3' services: nginx: image: nginx ports: -80:80 links: -app volumes: - ./nginx/conf.d:/etc/nginx/conf.d app: image: app expose: -"8080"
4、创建 ./nginx/conf.d目录 ,创建配置文件vim itheima.conf
server{
listen:80;
access_log off;
location / {
proxy_pass http://app:8080;
}
}
5、启动
docker-compose up
6、访问Nginx
Docker 私有仓库1、搭建私有仓库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZEkPJsV6-1653805254217)(imgs/image-20220416135123697.png)]
2、上传镜像到私有仓库
# 1 启动私有仓库容器 # 2、标记待传镜像IMAGE 为私有仓库的镜像 docker tag centos:7 私有仓库服务器IP:5000/centos:7 # 3 上传镜像到私有仓库 docker push 私有仓库服务器IP:5000/centos:7
3、拉取镜像
docker pull 私有仓库服务器IP:5000/centos:7docker容器和传统虚拟机
学习产出:
- 上线毕设客户端和管理系统后台到腾讯云服务器



