【devOps】docker教程详细步骤+docker windows10安装 +docker linux 安装+从安装到docker部署springboot项目到镜像移植

linux安装docker 不声明linux版本的教程 都是耍流氓的教程
通过本文也会知道为什么那么多教程不一样

windows10安装docker

  1. 首先安装前 检查一下虚拟技术(VT)是否开启

在这里插入图片描述

  1. 如果状态为已禁用 需要进入BIOS设置 ,电脑重启 显示屏亮起时 屏幕会提示怎么进入 一般是按del 进入BIOS模式 , 一般主板开启VT是比较容易的 ,这里用比较复杂的华硕主板举例:

按F7 (不同主板可能有区别)进入advance mode 找到高级设置
在这里插入图片描述
按键盘 ↓ 键,选择CPU设置
在这里插入图片描述
继续按键盘 ↓ 键,找到VT 改成enabled
在这里插入图片描述
返回 ez mode ,保存并退出
其它主板位置可能有差异 但一般都是在CPU设置里面 找找是能看到的。

  1. 电脑开机 再次查看 虚拟化是已开启状态。
  2. 把windows功能的Hyper-V 勾选上

在这里插入图片描述
在这里插入图片描述

  1. 进入docker官网下载 如果没有注册 它要提示注册 先注册并验证一下邮箱
    在这里插入图片描述

  2. 安装完成后 打开
    在这里插入图片描述
    打开的时候可能会报错误(没报错则忽略) 下载一下环境 安装就好了
    在这里插入图片描述
    点击这里下载插件
    在这里插入图片描述

如果没有安装linux虚拟机的话 docker还会有这样一个弹框
在这里插入图片描述
点进去这个网址,找到下图位置
在这里插入图片描述

根据里面的教程来安装 注意是使用powershell 输入命令 (windows10自带)
在这里插入图片描述
在这里插入图片描述
这里把我们需要操作的步骤都框起来了 很详细的教程有没有!
(我在写这些教程的时候是崩溃的, 博客还没写完 刚好遇到微软更新文档了)
注意是使用windows自带的powershell输入命令 ,会将linux下载到当前cd路径

Invoke-WebRequest -Uri https://aka.ms/wslubuntu2004 -OutFile Ubuntu.appx -UseBasicParsing

这里也是让我很头大的地方,微软上一版教程是举例Ubuntu16的, 结果我下载后 docker和linux内核一直有冲突问题,这个坑我替各位踩了 麻烦复制上面命令 上面这条命令就是下载Ubuntu20.04 。如果已经下载了Ubuntu16 或者其它的低版本,且启动docker时,很不幸出现了OCI runtime exec failed: exec failed: container_linux.go:345:getting the final child’s pid from pipe caused “EOF”": unknown 问题,卸载重安装一个Ubuntu20吧 升级内核的方法基本都是行不通的。

下载完成后 输入命令

# Ubuntu.appx 为下载的文件名称
Add-AppxPackage Ubuntu.appx

如果之前安装过Ubuntu16 先使用卸载命令:

# *Ubuntu16*  表示模糊搜索该名称的Appx包,  |为连接符,  remove-AppxPackage 表示移除
get-AppxPackage *Ubuntu16* | remove-AppxPackage

这里还有个很不幸的情况(没错 这个坑我也替大家踩了),就是如果已经安装了Ubuntu16,没有第一时间卸载,但是cd到另一个目录 又同时安装了20 , 这个时候会导致filezilla 只能连上Ubuntu16系统, 20是连接不上去的。 这个时候需要卸载Ubuntu16,20 ,并且重启windows一定要重启 否则再安装Ubuntu20 会报错Add-AppxPackage : 部署失败,原因是 HRESULT: 0x80073CF6, 无法注册包
在这里插入图片描述

  1. 再次打开我们的docker ,这时在powerShell 里面输入 docker --version (注意是双横杠)验证是否安装成功
    在这里插入图片描述

windows10 docker部署springboot项目

首先 mvn package 把springboot打成jar包

编写Dockerfile文件

可以在idea 右键new 一个Dockerfile 编写好后,和jar包一起复制到同个目录下

这里先给一个简单可用的例子 把内容复制进Dockerfile里面即可

# Docker image for springboot file run
# VERSION 0.0.1
# Author: qkj
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER qkj <[email protected]>
# 路径
# WORKDIR /app
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为bootdemo
ADD boot4dk.jar bootdemo
# 运行jar包
RUN bash -c 'touch /bootdemo'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/bootdemo"]

在这里插入图片描述

镜像导出、导入

我这里把我的项目 boot4dk.jar 和Dockerfile 都复制进了 D:\dockerEvn 目录下

docker启动命令

其中9090是docker对外端口 ,8080是springboot项目配置端口

docker run -p 9090:8080 -t boot4dk.jar

可以看到项目启动成功 注意jar包命名要用小写字母 不然会报错
在这里插入图片描述
在这里插入图片描述

docker查看列表命令

docker images

在这里插入图片描述
可以看到我们的boot4dk已经在里面了

docker 导出镜像命令

这句命令含义是 将 boot4dk.jar 导出至 d:\dockeros (注意这个路径也必须小写) 命名为bootdemo.tar ;
过程会有点慢 因为需要将java环境一起导出

docker save -o d:\dockeros\bootdemo.tar boot4dk.jar

在这里插入图片描述
在这里插入图片描述

docker 导入镜像命令

一定要注意是 < 输错了会导入失败 且导致镜像被破坏

docker load <bootdemo.tar

linux安装docker(ubuntu)

还记得前面我们启动docker前安装了一个linux子系统嘛 它可以派上用场了 先在子系统捣鼓熟练了 再上自己linux服务器吧!

双击启动Ubuntu :
在这里插入图片描述

在这里插入图片描述
默认root是没有密码的,qiuhuanhen是我创建的用户
在这里插入图片描述
在自己账户下输入命令

sudo passwd root

它会提示输入自己账户密码进行验证 验证完毕后 设置root账户密码

接下来切换到root用户

su root

将自带的旧版本docker卸载

 apt-get remove docker docker-engine docker.io containerd runc

注意 apt-get 是 Ubuntu的命令, 在centos上面 则使用 yum 命令

避坑点: 上面提过 Ubuntu16是会有linux环境问题的 (体现在启动镜像时),但因为网上的教程五花八门
所以这个也需要了解一下 :在Ubuntu16 中apt-get安装docker方式 : apt-get install docker.io

在Ubuntu20 中 ,apt-get install docker.io 会报错,提示没有这个资源:Package docker.io is not available, but is referred to by another package. 有的教程会推荐 先apt-get update ,再apt-get install docker.io ,但是这个安装是没有docker服务的 启动docker服务时会出现 docker: unrecognized service , 下面介绍Ubuntu20正确安装方式 会比较繁琐:

# 更新apt工具
sudo apt update

# 安装必要的依赖软件,来添加一个新的 HTTPS 软件源
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

# 使用下面的 curl 导入源仓库的 GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 将 Docker APT 软件源添加到你的系统
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# 安装docker 最新版
sudo apt install docker-ce docker-ce-cli containerd.io

# 检查docker状态
service docker status    或  systemctl status docker

# 启动docker服务
 service docker start 或 systemct start docker 

在这里插入图片描述

下载过程就是等待 等待过程发现有的时候它会假死在命令界面 时不时按几下enter键就好了

linux docker部署springboot

linux前提配置

核心是配置root可以远程登录 我们通过filezilla软件登录root账户 将windows上面的镜像传输到linux上面
写到这里不得不提一句 不知道是下载的Ubuntu这一个版本配置是这样 还是所有Ubuntu配置都一个德行 默认是禁止密码登录的,centos则没有这种问题 导致filezilla一直登录失败 没想到是这原因 踩了个天坑。

输入命令:

vim /etc/ssh/sshd_config

按键盘 i 键进入编辑模式 将 PermitRootLogin prohibit-password 注释掉
改成

 PermitRootLogin yes

含义是 root禁止密码登录 改成可以远程登录

此外 还需要将PasswordAuthenticationChallengeResponseAuthentication都改为yes

PasswordAuthentication yes
ChallengeResponseAuthentication yes

重启ssh服务:

service ssh restart
或
systemctl restart ssh  (或将ssh改成sshd 取决于不同的Linux版本 在centos7,8中是sshd)

这里可能会报错 sshd: no hostkeys available – exiting.
输入下面命令 并连续按下回车

 ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

在这里插入图片描述

在这里插入图片描述

当然 也可能在某些Ubuntu版本中 出现多个提示:
在这里插入图片描述
分别输入命令 按回车 回车 ,总之就是它提示缺少什么 我们就按照名字生成一下

 ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
 ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
 ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
 ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key

这个时候再重启ssh就可以了
在这里插入图片描述
生成key之后 不要忘记了输入重启命令

service ssh restart
或 systemctl restart ssh    (或sshd)

打开filezilla 测试是否能登录
在这里插入图片描述

把镜像复制进去linux虚拟机
这里我是在根目录建立了一个app文件夹 将镜像复制进app
复制完后 回到我们linux界面

linux 导入镜像

cd /app

再次强调命令是 < 输错了镜像也坏了 只能重新传一份了 或者一开始就cp命令备份一份

docker load <bootdemo.tar

在这里插入图片描述

linux 启动镜像

# 列出所有镜像
docker images
# 启动镜像
 docker run imageName

示例如下图 (我的bootdemo.tar 镜像名字为boot4dk.jar , 当然说它是仓库,不是镜像名也对 能懂就行 不咬文嚼字)
在这里插入图片描述

命令详解

docker常用命令

docker 服务启动相关命令

systemctl 一般在centos高版本中使用 service 一般在centos低版本 或者 Ubuntu中使用

# docker 查看状态
systemctl status docker 或 service docker status

# 启动docker  
systemct start docker 或 service docker start

# 重启 docker
systemct restart docker 或 service docker restart

# 停止 docker
systemct stop docker 或 service docker stop

docker 镜像相关命令


# 列出所有镜像
docker images

# 在hub中搜索镜像 类似于maven中央仓库



docker images完整的语法为 : docker images [OPTIONS] [REPOSITORY[:TAG]]

举个栗子 :docker images --digests boot4dk.jar:latest
类似的栗子: docker images -a 自己根据需要对命令进行组合
举一反三时间:现在知道日常工作中 敲其它命令 提示options时 该怎么写了吧?

OPTIONS说明:

-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);

–digests :显示镜像的摘要信息;

-f :显示满足条件的镜像;

–format :指定返回值的模板文件;

–no-trunc :显示完整的镜像信息;

-q :只显示镜像ID。

Dockerfile命令详解

暂略 后面补充

linux安装docker(centos) 官方教程

地址: https://docs.docker.com/engine/install/centos/

教程到此结束了 本篇博客过程中列出了很多bug 踩坑点 多注意一下

踩的坑多了 路也就平了

Guess you like

Origin blog.csdn.net/qq_36268103/article/details/120523781