Podman安装最新的JFrog Artifactory制品仓库

1、前言

JFrog Artifactory 是目前全球唯一的支持所有开发语言,功能最强大的二进制制品仓库。

2、系统平台

操作系统 : Ubuntu 22.04.4 LTS (GNU/Linux 6.5.0-26-generic x86_64)

3、安装依赖&拉取镜像

使用 OSS 社区版本,官方有详细说明介绍

完整的执行指令如下图所示

# 安装 podman
$ sudo apt install podman

# 创建一个低权限用户,尽量不要使用root用户,身份操作podman,降低安全风险
$ sudo adduser podman
 
# 允许用户下的容器在系统启动的时候启动服务
$ sudo loginctl enable-linger podman

$ export JFROG_HOME=/home/podman/.dockers/jfrogoss
 
# 准备本地目录映射 
$ sudo mkdir -p $JFROG_HOME/var/etc/

$ cd $JFROG_HOME/var/etc/

$ sudo touch ./system.yaml

$ sudo chown -R podman $JFROG_HOME

$ sudo chown -R 1030:1030 $JFROG_HOME/var

$ sudo chmod -R 777 $JFROG_HOME/var

# 手工拉去部分镜像,或者可以在 /etc/containers/registries.conf 配置下载服务器,可省略前面的服务器 releases-docker.jfrog.io 
$ podman pull releases-docker.jfrog.io/jfrog/artifactory-oss

执行上面的指令后,可以看到 releases-docker.jfrog.io/jfrog/artifactory-oss 镜像下载进度。

4、启动配置

首先要创建本地的数据目录,然后启动的时候挂载本地创建的数据目录即可。

执行启动指令: 

# 为 Docker 容器分配内存资源。可以使用 --memory 参数设置容器可以使用的内存量,使用 --memory-swap 参数限制交换空间的大小

$ podman run --name jfrogoss --cpus=2 --memory=2g --memory-swap=4g -d -v /home/podman/.dockers/jfrogoss/var:/var/opt/jfrog/artifactory -p 18081:8081 -p 18082:8082 releases-docker.jfrog.io/jfrog/artifactory-oss

# 查看该容器
$ podman ps

# 如果需要进入容器查看执行情况,参考如下命令
# podman exec -it jfrogoss bash

# 每次都启动新容器方式创建servcie //--new参数,每次启动都删除旧容器,启动一个新容器 
$ podman generate systemd --restart-policy=always -n --new -f jfrogoss

查看进程及IP跟端口号,启动一切正常了,打开浏览器访问系统看看效果。

查看启动文件:

$ cat container-jfrogoss.service

内容如下:

# container-jfrogoss.service
# autogenerated by Podman 3.4.4
# Sat Mar 30 19:04:05 CST 2024

[Unit]
Description=Podman container-jfrogoss.service
Documentation=man:podman-generate-systemd(1)
Wants=network-online.target
After=network-online.target
RequiresMountsFor=%t/containers

[Service]
Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=always
TimeoutStopSec=70
ExecStartPre=/bin/rm -f %t/%n.ctr-id
ExecStart=/usr/bin/podman run --cidfile=%t/%n.ctr-id --cgroups=no-conmon --rm --sdnotify=conmon --replace --name jfrogoss --cpus=2 --memory=2g --memory-swap=4g -d -v /home/podman/.dockers/jfrogoss/var:/var/opt/jfrog/artifactory -p 18081:8081 -p 18082:8082 releases-docker.jfrog.io/jfrog/artifactory-oss
ExecStop=/usr/bin/podman stop --ignore --cidfile=%t/%n.ctr-id
ExecStopPost=/usr/bin/podman rm -f --ignore --cidfile=%t/%n.ctr-id
Type=notify
NotifyAccess=all

[Install]
WantedBy=default.target

需要额外注意的一个地方是,给出的路径必须是完整路径 “/home/podman/.dockers/jfrogoss”,不能是 “~/.dockers/jfrogoss”,Systemd不能正确展开 “~” ,导致路径找不到,从而在启动的时候失败,报告错误代码 125 。

Systemd 配置,开机/重启自动启动服务:

# 切换到刚刚创建的低权限用户 ,注意,必须使用 su - user 的方式切换
# 如果使用 su user 切换会导致环境变量被带到新用户,导致执行报错
# ERRO[0000] XDG_RUNTIME_DIR directory "/run/user/1000" is not owned by the current user 
 
$ su - podman

# 保存到 ~/.config/systemd/user/
$ mkdir .config

$ mkdir .config/systemd

$ mkdir .config/systemd/user

$ mv container-jfrogoss.service ~/.config/systemd/user/


# 以当前用户身份刷新配置文件,让其生效
$ systemctl --user daemon-reload

# 设置容器开机自启,并且现在启动
$ systemctl --user enable --now ~/.config/systemd/user/container-jfrogoss.service

# 如果需要进入容器查看执行情况,参考如下命令
# podman exec -it jfrogoss bash

# 测试,重启系统,观察是否能开机自动启动
$ sudo reboot

# 启动或重启服务
# systemctl --user start container-jfrogoss.service
# systemctl --user restart container-jfrogoss.service

# 如果启动失败,观察服务日志
# sudo journalctl -f

5、访问、登录

Access Artifactory from your browser at: 

http://SERVER_HOSTNAME:18082/ui/

For example, on your local machine: 

http://localhost:18082/ui/

默认用户名:admin, 密码: password

启用匿名访问:

Maven服务器配置

客户端配置 http://SERVER_HOSTNAME:18082/artifactory/maven-remote/

参考链接


发布者

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注