发布网友 发布时间:2024-10-23 02:49
共1个回答
热心网友 时间:2024-11-04 12:49
以前对Docker有所耳闻,但仅限于表面了解。这次由于公司项目需求,深入学习了Docker的相关知识,特此记录以备忘。
本文主要介绍Docker的使用:包括Docker的安装、常用术语、自定义镜像、镜像的使用以及如何开机自启动自己的程序。至于更深层次的原理、架构、优化等内容,由于能力有限,不做过多阐述。
准备Ubuntu虚拟机并可用Xshell(或其他远程工具)远程连接,同时准备需要部署的自己的程序。
接下来,我们将学习Docker的基础知识,包括Docker的安装和定制镜像。
我的应用是C++程序,需要一些依赖环境和第三方库的支持。因此,我选择了Ubuntu18.04作为基础镜像。
Dockerfile脚本如下:
脚本中首先指定了基础镜像,然后在镜像中安装了一些工具,并创建了目录/opt/ls1000。接着将本地文件夹ls1000下的所有文件和目录拷贝到镜像的/opt/ls1000目录下。给自己的程序和库文件添加可执行权限,并将第三方库拷贝到系统目录中,使配置生效。最后,移除安装工具遗留的不必要文件。
完成Dockerfile脚本后,将其和文件传到虚拟机的一个目录下。在命令行进入该目录,执行以下命令:
镜像也可以上传到镜像仓库中,通过命令下载已上传的镜像。
对于运行在服务器上的服务来说,最好能够实现开机自启动,以避免不必要的麻烦。下面主要介绍如何通过Docker自定义镜像实现开机自启动。
以系统中的两个程序APP1和APP2为例,制作两个脚本start_app1.sh和start_app2.sh。
start_app1.sh脚本内容如下:
start_app2.sh的脚本与start_app1.sh类似,只需改变NAME和PROCESS两个变量即可。
将上述脚本放置在镜像指定的位置,这里我选择了/opt/ls1000/目录。重新制作一个镜像。
制作执行Docker命令脚本(可选):
auto_app1.sh脚本内容如下:
auto_app2.sh脚本内容与auto_app1.sh类似。
将上述两个脚本放置在虚拟机下的一个地方,并添加执行权限,直接执行即可。脚本中起到自启动作用的字段是--restart=always这个参数。
也可以不创建auto_app1.sh和auto_app2.sh,直接在虚拟机中执行。