栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker入门学习+项目部署

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker入门学习+项目部署

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

学习内容:

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

DOCKER做什么

开源的 应用容器 引擎

基于 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
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
命令-镜像

搜索 - 拉取 - 删除

查看本地镜像

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/bash
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

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.0
Dockerfile 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 itheima 

RUN 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
1
Docker 服务编排

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:7
docker容器和传统虚拟机


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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/941365.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号