Docker基本使用

DockerFile语法

DokerFile是Docker执行操作的说明书,用户可以通过编写此文件来告知Docker,如何制作镜像,制作完镜像以后要执行什么样的操作。DockeFile主要有一下几个常见的语义词汇。

FROM

FROM表示一种依赖关系。一般的,我们制作的镜像都是需要依赖于一些其他程序,比如Java程序需要有JDK或者JRE才能够正常运行;Web项目则需要一些容器才能启动,比如Tomcat或者Nginx。这些应用程序所依赖的程序包需要和我们编写的程序一起,被装进镜像中。因为实际上Docker可以被看作是一个精简版的linux系统,使用FROM相当于标记了系统中所需要的软件环境。

WORKDIR

此关键字可以指定项目的工作目录为某文件夹,如果指定的文件夹不存在,此命令会创建一个新文件夹。使用此命令指定工作文件夹后,后续脚本中使用./或者../使用的相对路径就以此路径为准。

EXPOSE

设置映射端口,当然也仅仅是映射端口。实际上项目启动的时候,docker run xxx的命令中也包含了端口映射关系,一般会以命令中的端口映射为准。

ARG

定义一个变量,在后续的脚本中可以使用变量名引用变量值。此变量的生命周期只能到docker build,一般的用处是可以把一些比较长的文件名用一个变量名代替,方便后面编写脚本。

ENV

定义一个变量,在后续的脚本中可以使用变量名引用变量值。此变量的生命周期可以到docker run,可以把执行指令的时候的一些参数写到这里,方便调用,比如一个常见的场景是:将JVM参数或者数据库时区等内容写入到ENV中,方便多个JAR启动的时候调用。

CMD

可以把需要执行的命令放在CMD的后面,这些命令会在docker run xxx的时候执行,因此这里的命令一般是我们的程序的启动命令,如果是java项目,这里应该是java -jar xxx,如果是其他语言的话,这里的命令可能是别的什么。要注意区分这里的CMD和后面的RUN的区别。

RUN

可以把需要执行的命令放在RUN的后面,这些命令会在docker build的时候执行,所以诸如创建文件夹之类的命令使用此关键字,可以在这里执行大多数linux shell脚本。

示范总结

下面是一个实际的脚本例子,可以结合此脚本学习DockerFile的编写过程,熟悉上面提到的语法。
1689563900032.png
项目结构大概如此,DockerFile位置在于模块的根目录,与之同级的还有src源代码目录,target目标文件目录。此时对应的DockerFile文件的具体内容如下。

FROM moxm/java:1.8-full

RUN mkdir -p /pig-register

WORKDIR /pig-register

ARG JAR_FILE=target/pig-register.jar

COPY ${JAR_FILE} app.jar

EXPOSE 8848

ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom"

CMD sleep 30; java $JAVA_OPTS -jar app.jar

Docker 镜像制作

Docker Desktop安装

Docker镜像的制作,对于开发来说,这里的环境安装可以下载一个Docker官方提供的工具–Docker Desktop,官网下载,直接安装即可,所有的选项都默认也行。
1689564575499.png
安装以后,打开此软件,需要更改一下Docker的镜像源和habor的地址。habor是一个Docker镜像远程私有仓库,本地制作的镜像如果确认没有问题,就可以提交到habor,方便后面其他人使用。
1689576814025.png
先点击设置按钮,进入设置页面。
1689576894783.png
再点击Docker Engine进入配置文件编辑页面,在 Docker Engine 文件配置内添加docker 镜像加速配置。

 "insecure-registries": [
    "39.162.1.200:39087"
  ],
  "registry-mirrors": [
    "https://6fe21mdq.mirror.aliyuncs.com",
    "https://registry.docker-cn.com",
    "https://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]

修改后,点击apply,使得修改后的配置生效。

Docker 镜像制作

在IDEA中可以配置镜像的相关信息。
1689577357636.png
点击Edit Configuration,新建一个属于DockerFile选项卡的应用。
1689577471613.png
应用新建,需要指定对应的配置文件、镜像名称和版本号等内容.
1689577627128.png
输入完毕后,点击apply保存此应用。
保存完毕后,选择指定的应用,点击运行按钮即可启动镜像,因为是第一次启动,这里会先构建镜像。
1689577807175.png
当然这里应该会立即会报错,因为这里没有执行mvn package,所以这里没有target文件夹,也没有jar。所以要先执行mvn clean,再执行mvn package,生成对应的jar,然后再点击docker应用的运行按钮,这里会先创建一个Docker镜像,然后再启动一个随机名称的容器。
1689578200280.png
但是一般,我们会指定一个有意义的容器名称,所以可以把现在启动的这个容器关掉。在使用docker run命令,指定容器名称,而且这里使用IDEA点击启动还有一个问题就是无法指定映射的端口,可以用docker run命令来解决。一般的会使用这样的命令。

docker run -p 8848:8848 -p 9848:9848 --name docker-pig-nacos pig-nacos:1.0.8

当然,这里的镜像在docker desktop里面也可以看到,也可以启动。
1689579002818.png
这里也能设置对应应用的端口映射功能,还能设置其他的参数。

制作镜像的命令

也可以放弃图形化界面,直接使用命令制作镜像,一般制作镜像使用的是docker build。首先,在Dockerfile文件所在的文件夹使用cmd命令,然后执行如下命令即可打包镜像。

docker build -t pig-nacos:1.0.0 .

-t制定了此docker镜像的标签,后面的.指定了当前文件,即使用当前文件夹的Dockerfile打包镜像。

镜像上传

在命令行中执行命令,登录到habor,获取到上传权限。

docker login 192.168.5.124:9087

之后会要求输入对应habor的用户名和密码。认证身份后,可以在命令行中继续操作,标记镜像。

docker tag SOURCE_IMAGE[:TAG] 192.168.5.124:9087/pig/REPOSITORY[:TAG]

标记完毕后,执行命令,上传镜像到habor即可。

docker push 192.168.5.124:9087/pig/REPOSITORY[:TAG]

Rancher启动

rancher项目中新建Deployment即可。
1689580002850.png
在这里需要指定docker镜像的拉取位置,也就是镜像在habor中的位置。
1689580127630.png
在镜像仓库中,点击指定的镜像,然后点击拉取命令,这时候会复制一串拉取命令,但是一般会进行简单的修改,修改对比效果如下。
1689580193198.png
下面的是修改过后的,主要将前面的指令去掉,并将hash码去掉,换成docker镜像的版本号。
然后将这个内容复制到deployment的配置项中。
1689580406098.png
确认信息无误后,点击create,就可以保存运行容器。正常运行的效果如下图所示:
1689580490952.png
代码如果发生了更新,需要重新制作镜像,制作完成以后,将镜像推送到habor,然后在这里可以将rancher的scale数目改成0,再恢复到指定数目,就可以实现项目的更新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值