当前位置:   article > 正文

Docker入门学习+项目部署_decker部署项目

decker部署项目

学习目标:

  • 学习Docker, 部署上线毕设项目

学习内容:

黑马:https://www.bilibili.com/video/BV1CJ411T7BK?p=21

DOCKER做什么

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KgMg3Sm0-1653805254203)(imgs/image-20220415094611197.png)]

开源的 应用容器 引擎

基于 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 -v
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

Docker架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

命令-镜像

搜索 - 拉取 - 删除

查看本地镜像

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`
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

命令-容器

临时启动并进入容器:

docker -run -it --name=c1 centos:7 /bin/bash

参数说明:

  • -i: 保持容器运行
  • -t: 分配终端
  • -d: 以守护(后台)运行容器,需要使用docker exec进入容器
  • –name:容器名字
  • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

要退出终端,直接输入 exit: 容器随之停止运行

-it : 创建交互式容器

-id : 创建后台容器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P8KWa7pM-1653805254205)(imgs/image-20220415102725939.png)]

启动容器后台运行:

在大部分的场景下,我们希望 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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

数据卷

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B05b7J14-1653805254208)(imgs/image-20220415151849768.png)]

Docker应用部署

Mysql

1、搜索 镜像

docker search mysql
  • 1

2、拉取 镜像

docker pull mysql:5.6
  • 1

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/bash
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

Tomcat

需求:在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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

4、访问Nginx

Redis

需求:在Docker部署Redis容器,访问redis

1、搜索redis镜像

docker search redis
  • 1

2、拉取redis镜像

docker pull redis:5.0
  • 1

3、创建容器,设置端口映射

decker run -id --name=c_redis 6379:6379 redis:5.0
  • 1

Dockerfile

Docker镜像原理

1、Linux文件系统分为 bootfs 和 rootfs 两部分

  • bootfs: 包含引导加载程序、Kernel内核
  • rootfs: root文件系统,不同的Linux发行版,rootfs 不同

2、 Docker镜像是由特殊的文件系统叠加而成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-laxo3Iux-1653805254210)(imgs/image-20220415193049424.png)]

3、容器 container =》镜像 Image

docker commit 容器id 镜像名称:版本号 #将容器转为镜像

docker save -o 压缩文件名称 镜像名称:版本号 #把镜像转为压缩文件

docker load -i 压缩文件名称 #将压缩文件转为镜像
  • 1
  • 2
  • 3
  • 4
  • 5

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pNBYjIf7-1653805254210)(imgs/image-20220415193828505.png)]

Dockerfile

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KKJe4vKq-1653805254212)(imgs/image-20220516222243022.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SCUqOup7-1653805254213)(imgs/image-20220516222438005.png)]

dockerfile是一个文件,包含了指令集 ,用于构建 build 出一个镜像Image

开发人员:可以为开发团队提供一个完全一致的开发环境

测试人员:直接拿开发时所构建的镜像 or Dockerfile文件构建一个Image

运维人员:部署时实现应用的无缝移植

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AmSzReqk-1653805254213)(imgs/image-20220416102529472.png)]

# 创建一个 docker-files 目录
mkdir docker-files
# 创建一个 centos_dockerfile 文件
vim centos_dockerfile
  • 1
  • 2
  • 3
  • 4
# centos_dockerfile 文件
FROM centos:7
MAINTAINER itheima <dayda.@qq.com>

RUN yum install -y vim # linux命令
WORKDIR /usr # 定义工作目录

CMD /bin/bash # 定义容器启动后执行的命令
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
# 构建 镜像Image
docker build -f ./centos_dockerfile -t itheima_centos:1.0 .

# 创建 容器
docker run -id --name=c2 itheima_centos:1.0
  • 1
  • 2
  • 3
  • 4
  • 5

部署springboot项目

1、将 springboot 项目打成 jar包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d88ii7tD-1653805254214)(imgs/image-20220516222949468.png)]

2、找到target目录,将 jar包 传到 服务器的 docker-files 目录下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-leDt3cEh-1653805254214)(imgs/image-20220516223012757.png)]

3、编辑 dockerfile 文件

FROM java:8
MAINTAINER itheima

# 将jar包添加到容器中
ADD springboot.jar app.jar
CMD java-jar app.jar
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4、构建 镜像 docker build -f dockerfile文件路径 -t 镜像名称:版本 .

5、创建 容器【配置端口映射9000-》8080】

docker run -id -p 9000:8080 镜像名称
  • 1

6、访问 项目【端口9000】

7、方式一:把 dockerfile 给测试人员。方式二:把 Image 镜像给测试人员

8\还有个命令要提下,可以查看容器运行时的日志

docker logs 容器id
1
  • 1
  • 2

Docker 服务编排

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IY6WxUgY-1653805254215)(imgs/image-20220416110734097.png)]

1、安装dockercompose

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HagiGJmv-1653805254216)(imgs/image-20220416105100306.png)]

2、卸载dockercompose

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bBOhksZK-1653805254216)(imgs/image-20220416105114112.png)]

3、a

mkdir docker-compose

vim docker-compose.yml
  • 1
  • 2
  • 3
version: '3'
services:
	nginx:
		image: nginx
		ports:
			-80:80
		links:
			-app
		volumes:
			- ./nginx/conf.d:/etc/nginx/conf.d
	app:
		image: app
		expose:
			-"8080"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

4、创建 ./nginx/conf.d目录 ,创建配置文件vim itheima.conf

server{
    listen:80;
    access_log off;
    location / {
		proxy_pass http://app:8080;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

5、启动

docker-compose up
  • 1

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3、拉取镜像

docker pull 私有仓库服务器IP:5000/centos:7
  • 1

docker容器和传统虚拟机

在这里插入图片描述


学习产出:

  • 上线毕设客户端和管理系统后台到腾讯云服务器

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/180580?site
推荐阅读
相关标签
  

闽ICP备14008679号