centos离线安装mono(docker)

最近公司有需求要在centos上运行exe程序(一个生成pdf的exe程序),这个exe程序运行需要依赖mono,然后就到mono官网http://www.mono-project.com/download/stable/#download-lin-centos上下载,直接三步搞定:

1、rpm --import "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"

2、su -c 'curl https://download.mono-project.com/repo/centos7-stable.repo | tee /etc/yum.repos.d/mono-centos7-stable.repo'

3、yum install mono-devel


后来我们的项目需要部署到服务器上,而部署的服务器是无法联网的,所以就需要离线部署了,开始的时候以为很简单,不就是下载tar包,源码包安装就完了,结果是安装好了,但是运行的时候发现无法打印exe,缺少依赖包,然后下载相关依赖源码包再安装,结果又缺依赖包,然后下载...安装...下载...安装。。。。太多依赖了,并且有很多依赖包的源码包在网上不是很好找。最后领导建议使用docker来进行安装。然后就开始的docker的学习。

先说下docker,我对docker的学习仅限于成功的docker save了一个docker的镜像文件,可以进行mono的离线安装。docker还有很多很好用的地方,以后有时间再去探索。

docker有几个概念需要理解,image是镜像,docker images查看所有镜像,docker run 是运行镜像,运行的镜像称之为容器,使用docker ps进行查看,docker stop 容器id 是停止运行的容器,查看所有的容器(运行+停止状态)docker ps -a。一个docker镜像可以创建多个运行的环境,删除镜像前需要先删除所有容器,命令为docker rm 容器id 容器id... 可以同时删除一个或者多个容器,删除完容器后使用docker rmi 镜像id 来进行镜像的删除。

下面对我安装的mono进行说明一下。

docker search 查询docker的镜像源。比如我需要先安装一个centos,就执行docker search centos,这个时候可以选择一个对应的版本进行docker pull centos,下载下来之后首先要创建一个运行环境docker run -d -p 10023:10023 -it --privileged=true -v /home:/home 镜像Id /bin/bash -c "/mnt/autostart.sh"(这一段下面会进行专门讲解)。 进入容器后使用如上描述的方法安装mono,再exit退出来,使用docker cp 主机目录(文件) 容器id:/home ,将项目拷贝至容器,jdk拷贝也是一样。都拷贝进去后再将容器打包成为一个新的镜像,docker commit -a "chenfeng" -m "aotu-start" 容器id repository:tag(这个设置为需要的),生成完新的镜像后,将这个镜像save成文件就可以离线安装了。保存文件命令docker save -o /home/fileName.tar 镜像id repository:tag,加载文件命令docker load -i /home/fileName.tar。

docker run -d -p 10023:10023 -it --privileged=true -v /home:/home 镜像Id /bin/bash -c "/mnt/autostart.sh"

    run 创建容器并运行

    -d  后台运行

    -p  容器中端口与本机的端口映射

    --privileged=true 开启容器用户root权限,否则映射的目录文件可能没权限打开

    -v 主机的目录和容器目录的映射

    -c 启动时容器执行的命令,执行的这个脚本的最后需要加入 tail -f /dev/null 来确保脚本一直执行,否则这个脚本不会生效


再记录一些坑,由于exe程序执行的时候命令中有中文,docker新建的centos不支持中文,需要进行设置

yum -y install kde-l10n-Chinese

yum -y reinstall glibc-common

localedef -c -f UTF-8 -i zh_CN zh_CN.utf8

export LC_ALL=zh_CN.utf8


以上是我个人的一些理解,如果有错误的地方,请指出,谢谢。

### CentOS 离线环境下 DockerDocker-Compose 安装 #### 准备工作 为了在离线环境中成功安装 Docker 及其组件,需提前在线获取所需文件并传输至目标机器。 #### 获取 Docker 文件包 从一台联网计算机下载适用于 CentOSDocker RPM 包以及对应的依赖项。可以访问官方仓库或镜像站点来获得最新版本的软件包集合。对于特定版本的需求,则应指定确切的 URL 地址以确保兼容性[^1]。 #### 复制 Docker 命令到系统路径 将事先准备好的 Docker 二进制文件复制到系统的可执行目录 `/usr/bin` 下面,以便全局调用该工具: ```bash cp docker/* /usr/bin/ ``` #### 设置 Docker 自启动和服务状态管理 通过 `systemctl` 工具配置 Docker 服务开机自动运行,并立即激活此服务: ```bash systemctl enable docker systemctl start docker ``` #### 获取 Docker Compose 文件 同样地,在有网络连接的地方预先下载好适合当前操作系统的 Docker Compose 版本(例如 Linux x86_64 架构),并将之重命名为方便使用的名称放置于 `/usr/local/bin/` 路径下: ```bash mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose ``` 或者按照具体发布的链接地址直接拉取对应平台架构下的稳定版发布件: ```bash curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose ``` #### 授权给定脚本执行权限 赋予上述两个程序必要的读写许可权,使其能够正常运作: ```bash chmod +x /usr/local/bin/docker-compose ``` 完成以上步骤之后,便可以在无互联网接入的情况下正常使用 DockerDocker Compose 来构建容器化应用环境了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值