页面“基于Docker的Jenkins持续集成”与“Alpine”之间的差异

来自linux中国网wiki
(页面间的差异)
跳到导航 跳到搜索
 
 
第1行: 第1行:
=install=
 
站内资源
 
  
[[Jenkins进行持续集成]] 相关配置的看这个吧
 
  
[[Jenkins迁移之备份和还原]]
+
=pre=
 +
占用内存仅仅 37M ,非常的小巧。适合用在树莓派或者其他低内存设备上。
 +
[https://liyin.date/2017/03/18/alpine-linux-setup/index.html Alpine Linux 折腾记]
 +
=download =
  
[[Jenkins自动化构建和部署例子]]
+
==x86==
 +
https://alpinelinux.org/downloads/
 +
https://mirrors.aliyun.com/alpine/v3.10/releases/x86_64/alpine-standard-3.10.3-x86_64.iso
 +
http://dl-cdn.alpinelinux.org/alpine/v3.10/releases/x86_64/alpine-standard-3.10.1-x86_64.iso
  
 +
==Raspberry Pi==
  
NOTE 注意 国内环境安装完 记得 Jenkins安装插件提速 在后面章节哦
+
AArch64是ARMv8 架构的一种执行状态 so 下载这个 拿回来试一下
<pre>
+
http://mirrors.ustc.edu.cn/alpine/v3.8/releases/aarch64/alpine-rpi-3.8.1-aarch64.tar.gz
/data/apps/jenkins
 
  
mkdir docker4jenkins
+
http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/aarch64/alpine-rpi-3.8.1-aarch64.tar.gz
cd docker4jenkins
 
#mkdir -p /data/jenkins
 
  
 +
http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/armhf/alpine-rpi-3.8.1-armhf.tar.gz
  
 +
国内的mirrors  有时比较同步比较慢
 +
https://mirrors.alpinelinux.org/
  
vi docker-compose.yml
+
===install on pi===
 +
[https://wiki.alpinelinux.org/wiki/Classic_install_or_sys_mode_on_Raspberry_Pi 要看 ]
  
services:
+
https://wiki.alpinelinux.org/wiki/Raspberry_Pi
  jenkins:
 
    #image: jenkins/jenkins:lts
 
    image: jenkins/jenkins:2.235.5-lts-alpine
 
    ports:
 
    - 7099:8080/tcp
 
    - 50000:50000/tcp
 
    environment:
 
      TZ: Asia/Shanghai
 
    restart: always
 
    volumes:
 
    #- /data/jenkins:/var/jenkins_home:rw
 
    - jenkins_home:/var/jenkins_home:rw
 
version: '3.0'
 
volumes:
 
  jenkins_home:
 
    driver: local
 
   
 
   
 
    #run
 
docker-compose  up -d  jenkins
 
  
可能要改的变量  这里我加了2021  还有暴露给母鸡的端口也可能要改 如果一台机器有多个 jenkins
+
[https://wiki.alpinelinux.org/wiki/Create_a_Bootable_USB Create a Bootable USB]
    restart: always
 
    volumes:
 
    #- /data/jenkins:/var/jenkins_home:rw
 
    - jenkins_home2021:/var/jenkins_home:rw
 
version: '3.0'
 
volumes:
 
  jenkins_home2021:
 
    driver: local
 
  
 +
https://my.oschina.net/u/2306127/blog/1587585
  
 +
https://wiki.alpinelinux.org/wiki/Create_a_Bootable_USB
  
 +
[https://xts.so/linux/install-the-alpine-linux-on-raspberry-pi-zero-w.html 在树莓派Zero W上安装alpine linux系统]
  
 +
=安装过程=
  
   
+
输入root 没有密码 直接回车 如果是内网机器  记得打开 root login ssh
   
 
密码就查看logs
 
  
f47e158768be4c2ba0c891396cf5a55f
 
jenkins_1  |
 
jenkins_1  | This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
 
jenkins_1  |
 
   
 
   
 
docker run --name=jenkins -it -u root -d -p 8080:8080 -p 50000:50000 -v /data/jenkins:/var/jenkins_home 3f08dc4f3f5d
 
  
 +
13-选择 sys 方式使用磁盘,将系统安装到本地硬盘-格式化硬盘-完成硬盘安装
 +
sys
  
docker-compose up  -d
+
[https://blog.csdn.net/CSDN_duomaomao/article/details/76053229 Alpine linux硬盘安装]
  
 +
=configure=
 +
<pre>
 +
国内源
  
 +
a. 编辑 /etc/apk/repositories
 +
b. 将里面 dl-cdn.alpinelinux.org 的 改成 mirrors.aliyun.com ; 保存退出即可
  
cat initialAdminPassword
+
cat   /etc/apk/repositories
05765dd93d604cd094b516ba9cc06c1a
+
#/media/cdrom/apks
 +
http://mirrors.aliyun.com/alpine/v3.10/main
  
ng
+
http://mirrors.aliyun.com/alpine/v3.10/community
 +
#http://mirror.xtom.com.hk/alpine/v3.10/main
 +
#http://mirror.xtom.com.hk/alpine/v3.10/community
 +
#http://mirror.xtom.com.hk/alpine/edge/main
 +
#http://mirror.xtom.com.hk/alpine/edge/community
 +
#http://mirror.xtom.com.hk/alpine/edge/testing
  
cat ci.conf
+
apk update
  server {
 
        listen      80;
 
        server_name  market-ci.com;
 
 
  
        location / {
 
            proxy_pass http://172.31.127.223:7099;
 
            proxy_set_header X-Real-IP $remote_addr;
 
            proxy_set_header Host $host;
 
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 
         
 
        }
 
    }
 
  
 +
alpine:~# cat /etc/apk/repositories
 +
#/media/cdrom/apks
 +
http://mirrors.ustc.edu.cn/alpine/v3.8/main
 +
http://mirrors.ustc.edu.cn/alpine/v3.8/community
 +
cp /etc/apk/repositories /etc/apk/repositories.bak
 +
</pre>
  
 +
=软件包管理工具apk的基本使用=
 +
<pre>
 +
可以方便地安装、删除、更新软件。
  
重装要删除volumes  然后要重启 docker
+
#查询openssh相关的软件包
/home/data/docker/volumes/docker4jenkins_jenkins_home/
 
  
如果默认 在这个目录
+
apk search  openssh    
   /var/lib/docker/volumes
 
  
 +
#安装一个软件包
  
 +
apk add  xxx 
  
 +
#删除已安装的xxx软件包
  
docker-compose up -d
+
apk del  xxx 
ERROR: The Compose file './docker-compose.yml' is invalid because:
 
Unsupported config option for services.jenkins: 'name'
 
  
 +
#获取更多apk包管理的命令参数
  
 +
apk --help 
  
 +
  
 +
#比如安装常用的网络相关工具:
  
 +
#更新软件包索引文件
  
 +
apk update   
  
不用  volumes 会报错
+
#用于文本方式查看网页,用于测试http协议
[root@prod-cailuw-marke-lvs02 docker4jenkins]# docker logs  7444b6cf02a2
 
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
 
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
 
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
 
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
 
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
 
 
 
居然再来一次  没有初始化界面 ?
 
 
 
firewall-cmd --permanent --add-port=7099/tcp
 
firewall-cmd --reload 
 
 
 
还是不通  只能作域名了喽  hostname
 
 
 
  
</pre>
+
apk add curl 
  
= 常用命令=
+
#提供了查看网络连接的协议端口的命令ss,可以替代netstat命令
重启
 
http://localhost:8080/restart  http://localhost:8080/reload
 
=常用参数=
 
<pre>
 
  
Transfers set  
+
apk add iproute2  
  
Remote directory
+
#drill 命令可以替代dig和nslookup DNS查询命令
填写 tempjar  如果是用root用户 那就是 /root/tempjar/
 
 
 
有些项目改了 绝对路径居然是不行的
 
  
 +
apk add drill 
  
 +
alpine:~# df -h
 +
Filesystem                Size      Used Available Use% Mounted on
 +
devtmpfs                10.0M        0    10.0M  0% /dev
 +
shm                    245.0M        0    245.0M  0% /dev/shm
 +
/dev/sda3                29.4G    576.7M    27.3G  2% /
 +
tmpfs                    49.0M    108.0K    48.9M  0% /run
 +
/dev/sda1                92.8M    19.1M    66.8M  22% /boot
 
</pre>
 
</pre>
 +
=Alpine Linux 包管理=
  
=install plugins=
 
==maven==
 
 
=== ins maven===
 
因为jenkins本身不带maven插件,所以需要自己安装下,由于我们的虚拟机中是没有直接安装maven软件的,我们可以在全局工具配置中安装maven, 选择一个合适的版本,勾选自动安装,之后直接保存,需注意的是,现在jenkins并不会立即给你安装maven软件
 
 
这是要做的动作 note
 
接下来我们在插件管理中查找maven插件,我们选择好Maven Integration plugin插件,然后点击直接安装
 
 
===配置maven===
 
大家都知道我们要从maven库下载代码需要配置setting.xml,用jenkins时也需要把setting.xml配置好。在目录/docker/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/jenkins-in-maven/conf下修改setting.xml文件
 
 
 
新建  就可以看到 列表 有 构建一个maven 项目  安装成功
 
 
====maven 配置文件  ====
 
<pre>maven 配置  可以在母机修改
 
 
/docker/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/jenkins-in-maven/conf下修改setting.xml文件。
 
母机可能的目录
 
/home/data/docker/volumes/docker4jenkins_jenkins_home/_data/tools/hudson.tasks.Maven_MavenInstallation/maven3.6.2/conf</pre>
 
 
==JDK==
 
 
<pre>
 
<pre>
1.JDK和JRE的区别
 
JRE: Java Runtime Environment
 
JDK:Java Development Kit
 
 
JRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。
 
JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。
 
如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。
 
 
Jenkins-->
 
Update Center-->
 
安装/更新 插件中 ->
 
Oracle Java SE Development Kit Installer
 
可见 oracle jdk安装了
 
 
注意,自动安装jdk需要你填入oracle的账号密码,这样Jenkins才能自动帮你到oracle安装。如果没有oracle账号</pre>
 
 
[https://blog.csdn.net/anning_88/article/details/50635940 jenkins配置多个JDK]
 
 
==ssh plgins==
 
<pre>
 
--> Manager plugin ->  Publish Over SSH
 
 
usage
 
 
全局配置 -》SSH Servers
 
Name 可以是别名  hostname 是ip
 
 
ssh 那要添加你的pri key  远程服务器添加pubkey </pre>
 
 
[https://tendcode.com/article/Publish-Over-SSH/ 【Jenkins 插件】使用 Publish Over SSH 远程传输文件和自动部署]
 
 
==dokcer 插件 ==
 
为了发布 docker
 
== git 用户 ==
 
<pre>
 
系统-->凭证
 
Enter directly ->Key   添加 pri key
 
 
 
要在 Key 框里添加你的 pri key 不然会出这报错
 
Failed to connect to repository : Command "git ls-remote -h ssh://[email protected]:2222/lxtx-cailu-java-projects/lxtx-cailu-market.git HEAD" returned status code 128:
 
stdout:
 
stderr: Permission denied (publickey).
 
fatal: Could not read from remote repository.
 
 
Please make sure you have the correct access rights
 
and the repository exists.
 
 
 
行情改成这样的 git
 
 
ssh://[email protected]:2222/lxtx-cailu-java-projects/lxtx-cailu-market.git
 
  
 +
5.apk info
 +
$ apk info #列出所有已安装的软件包
 +
$ apk info -a zlib #显示完整的软件包信息
 +
$ apk info --who-owns /sbin/lbu #显示指定文件属于的包
 
</pre>
 
</pre>
  
==python plugin==
 
Jenkins 执行python脚本 安装如下两个 plugin
 
  
  python_plugin    python_wrapper_plugin
+
=on vps =
 +
my.vultr.com  ISO Library  has apline 3.8
 +
也可以自己上传
  
任务中添加python脚本即可,点击保存时候,自动会在下图中目录生成.py文件
+
[https://wiki.alpinelinux.org/wiki/Bootstrapping_Alpine_Linux Bootstrapping Alpine Linux - Alpine Linux]
[https://cloud.tencent.com/developer/article/1566505 jenkins执行python脚本的方法]
 
  
=生成SSHKey=
+
[https://discuss.vultr.com/discussion/1033/custom-iso-alpinelinux custom-iso-alpinelinux]
  
<pre>先进入容器
+
[https://www.linode.com/docs/tools-reference/custom-kernels-distros/install-alpine-linux-on-your-linode/ Install Alpine Linux on your Linode]
  
docker exec -it jenkins /bin/bash
+
=docker=
进入容器后生成sshkey
 
 
 
ssh-keygen -t dsa -C "[email protected]"
 
 
 
获取公钥
 
1.进入容器 
 
2. 直接cat 一下 mount的目录  eg tail /var/lib/docker/volumes/jenkins/_data/.ssh/id_rsa.pub</pre>
 
 
 
=jenkins时区设置=
 
 
<pre>
 
<pre>
 +
cat  /etc/apk/repositories
  
【系统管理】-【脚本命令行】里运行
+
http://mirrors.aliyun.com/alpine/v3.10/main
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')
+
http://mirrors.aliyun.com/alpine/v3.10/community
  
如果想永久 还是加在 yaml文件里
 
  
 +
apk add docker
  
时间问题 以前思源的文档有
+
rc-update add docker boot
-v /etc/localtime:/etc/localtime 让容器使用和服务器同样的时间设置</pre>
 
  
 +
service docker start
  
https://wiki.jenkins.io/display/JENKINS/Change+time+zone
+
apk add py-pip
 +
apk add python-dev libffi-dev openssl-dev gcc libc-dev make
  
=trouble =
 
  
第二天不能登录  这个是输入错了吧 
+
mkdir -p ~/.pip
Invalid username or password
 
== 迁移 jenkins 要注意的==
 
<pre>
 
  
java.io.IOException: Cannot run program "/var/jenkins_home/tools/hudson.model.JDK/jdk/bin/java" (in directory "/var/jenkins_home/workspace/pro-cailu-market"): error=2, No such file or directory
+
#vim  ~/.pip/pip.conf
maven
+
cat >>~/.pip/pip.conf<<EOF
要重新 配置  全局-->maven 安装  
+
[global]
 
+
index-url = http://mirrors.aliyun.com/pypi/simple/
 
+
   
hudson.AbortException: Unable to install JDK unless a valid username/password is provided.
+
[install]
 
+
trusted-host=mirrors.aliyun.com
填写 oracle用户和密码 原来  用户 密码是oracle提供的
+
EOF
  
http://market-ci.com/descriptorByName/hudson.tools.JDKInstaller/enterCredential
+
pip install more-itertools==5.0.0 #3.10.3
  
要重新添加 git 用户 和密码
+
pip install docker-compose
  
  
 +
#err 
  
Remote directory
+
100% |████████████████████████████████| 81kB 1.2MB/s
填写 tempjar  如果是用root用户 那就是 /root/tempjar/
+
more-itertools requires Python '>=3.5' but the running Python is 2.7.16
  
 
</pre>
 
</pre>
 
+
==nodejs yarn etc==
==Jenkins安装插件提速==
 
 
<pre>
 
<pre>
 
+
#换源 然后
现在感觉不改更快
+
apk add --no-cache nodejs yarn python
 
 
docker-compose  exec  --user root  jenkins  bash
 
 
cd /var/jenkins_home/updates
 
 
sed -i 's#https://updates.jenkins.io/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json
 
 
 
  sed -i 's#http://updates.jenkins-ci.org/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json
 
sed -i 's#http://www.google.com#https://www.baidu.com#g' default.json
 
 
 
 
 
重启生效 docker-compose restart jenkins
 
#不用下面这个吧
 
http://192.168.10.54:7099/restart
 
 
 
 
 
 
 
 
</pre>
 
</pre>
https://blog.csdn.net/weixin_43557605/article/details/104587304
 
  
==docker-compose 相关文件被删除==
+
https://wiki.alpinelinux.org/wiki/Docker
处理办法 数据目录(我用了默认的)没被 删除 ,再搞个 docker-compose.yml 文件就行了 和对应目录
 
  
==Jenkins忘记密码 ==
+
=trouble shooting=
 +
==alpine镜像crontab无法运行问题 ==
 
<pre>
 
<pre>
 +
alpine镜像 普通用户 crontab无法运行问题
  
#2021 试过有效果
+
crond 服务用 root用户启动  or on ci  docker-compose exec -u  root  -T php-worker  sh -c "crond"
/var/jenkins_home/users/admin/config.xml
 
  
新版本
+
如果用官方提供alpine镜像是不自动启动crond的,得手动起
jenkins_jenkins_home/_data/users/admin_1216381497456990300
+
每个用户有单独的文件在/etc/crontabs文件夹
 +
可以用supervisor启动crond,但要用root用户去启动crond,运行其他用户的定时任务
  
cat config.xml  | grep passwordHash
+
cron itself should run as root, regardless of which user you want to use to run the jobs.
      <passwordHash>#jbcrypt:$2a$10$MiIVR0rr/UhQBqT.bBq0QehTiQVqgNpUGyWW2nJObaVAM/2xSQdSq</passwordHash>
 
  
 +
This will install a crontab for user robuser. When cron executes jobs from this particular crontab, it will automatically switch users to robuser. However, cron can’t switch users like that if it’s not running as root, which is why you need to be running cron as root.
  
123456加密后: #jbcrypt:$2a$10$MiIVR0rr/UhQBqT.bBq0QehTiQVqgNpUGyWW2nJObaVAM/2xSQdSq
+
crontab  -l
 +
crontab: must be suid to work properly
  
修改 /users/admin/comfig.xml 文件后,保存重新启动Jenkins程序。
+
apk add --update busybox-suid
  
再以用户名admin 密码123456 成功登录
+
</pre>
  
#note 这是基于docker的jenkins
+
[https://blog.csdn.net/gsying1474/article/details/68946455  alpine linux中如何使用crontab执行定时任务]
jenkins@c58dc265c073:~/users$ pwd
 
/var/jenkins_home/users
 
  
cat users.xml
+
[https://stackoverflow.com/questions/36453787/failed-to-edit-crontab-linux-alpine Failed to edit crontab (linux Alpine)]
<entry>
 
      <string>lxtxadmin</string>
 
      <string>lxtxadmin_7295399102977240796</string>
 
  
cd  lxtxadmin_7295399102977240796/
+
[https://blog.csdn.net/weixin_43086579/article/details/84901497?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase Alpine容器启动Crontab任务]
 
  cat config.xml  | grep passwordHash
 
      <passwordHash>#jbcrypt:$2a$10$h/LCaTsmNht3F04LbZPsY.OtTyx1e/P7pit6Te7KjGVXkhe/caqyW</passwordHash>
 
  
  
#jbcrypt:$2a$10$MiIVR0rr/UhQBqT.bBq0QehTiQVqgNpUGyWW2nJObaVAM/2xSQdSq 
 
123456
 
  
这个写法有问题啦  前面不是固定的啦 
+
[https://devopsheaven.com/cron/docker/alpine/linux/2017/10/30/run-cron-docker-alpine.html Running cron jobs in a Docker Alpine container]
sed  -i  's!#jbcrypt:$2a$10$h/LCaTsmNht3F04LbZPsY.OtTyx1e/P7pit6Te7KjGVXkhe/caqyW!#jbcrypt:$2a$10$DdaWzN64JgUtLdvxWIflcuQu2fgrrMSAMabF5TSrGK5nXitqK9ZMS!' config.xml
 
  
后者是111111的hash值 6个1
+
=ops=
  
docker-compose  restart
+
[[Alpine 修改docker的时区及安装telnet]]
当然 最后记得要改回得比较强的密码喽
 
 
</pre>
 
 
 
[https://www.jianshu.com/p/e8bc90a1aad8 Jenkins - Jenkins 忘记密码]
 
  
==该Jenkins实例似乎已离线。 ==
 
 
<pre>
 
<pre>
Jenkins 2.176.3
+
apk  add rsync
 +
</pre>
  
原因  近来网络管理又严格了
+
=desktop=
 +
暂时没有中文输入法
  
updates/default.json
+
[https://www.cnblogs.com/jinzhenshui/p/8418281.html Alpine Linux:如何配置GUI的图形桌面环境:x Desktop Environment]
  
jenkins在下载插件之前会先检查网络连接,其会读取这个文件中的网址。默认是:
+
[https://blog.csdn.net/weixin_30590285/article/details/95415847 Alpine Linux:如何配置GUI的图形桌面环境:x Desktop Environment]
访问谷歌
 
  
处理办法  改成可以直接访问的就行了
+
[https://wiki.alpinelinux.org/wiki/MATE MATE 桌面]
  
jenkins@jenkins-hellotest:~/updates$ pwd
+
[https://wiki.alpinelinux.org/wiki/Awesome(wm)_Setup Awesome桌面]
/var/jenkins_home/updates
 
  
sed  -i 's/google/baidu/' default.json
+
[https://liyin.date/2017/03/18/alpine-linux-setup/ 折腾记]
  
</pre>
 
  
==打开主页空白==
+
[https://icoolworld.github.io/alpine/alpine-%E4%B8%AD%E6%96%87%E6%88%AA%E5%9B%BE%E4%B9%B1%E7%A0%81%E9%97%AE%E9%A2%98.html alpine-中文截图乱码问题]
<pre>打开 
 
http://192.168.10.214:7099/pluginManager/advanced
 
  
最后要恢复回来 ,不然打开主页空白呢
+
=问题=
http://updates.jenkins.io/update-center.json
+
Alpine Linux使用了musl,可能和其他Linux发行版使用的glibc实现会有所不同。在容器化中最可能遇到的是DNS问题,即musl实现的DNS服务不会使用resolv.conf文件中的search和domain两个配置,这对于一些通过DNS来进行服务发现的框架可能会遇到问题
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
 
  
/pluginManager/advanced  改回原来的
+
[https://www.wencst.com/2017/11/23/docker-alpine%E7%89%88%E6%9C%AC%E6%9C%8D%E5%8A%A1%E4%B8%AD%E6%98%BE%E7%A4%BA%E4%B8%AD%E6%96%87/ docker alpine版本服务中显示中文]
http://updates.jenkins.io/update-center.json
 
  
 +
=see also=
  
</pre>
 
 
https://blog.csdn.net/harry5508/article/details/91958249
 
 
https://www.cnblogs.com/effortsing/p/10013412.html
 
  
https://blog.csdn.net/huoyunshen88/article/details/8509886
 
  
https://www.jianshu.com/p/1e411d225186
+
[https://www.cnblogs.com/jackadam/p/9290366.html Alpine Linux常用命令]
===web打不开 wrapper  Up (unhealthy) ===
 
<pre>
 
重启并等 一下下  过程如下
 
docker-compose  ps
 
    Name          Command          State                                      Ports                             
 
-------------------------------------------------------------------------------------------------------------------
 
gitlab_web_1  /assets/wrapper  Up (unhealthy)  0.0.0.0:2222->22/tcp, 0.0.0.0:4433->443/tcp, 0.0.0.0:7080->80/tcp
 
root@jenkins2020:/data/apps/gitlab# docker-compose  restart 
 
Restarting gitlab_web_1 ... done
 
root@jenkins2020:/data/apps/gitlab# docker-compose  ps
 
    Name          Command              State                                        Ports                             
 
--------------------------------------------------------------------------------------------------------------------------
 
gitlab_web_1  /assets/wrapper  Up (health: starting)  0.0.0.0:2222->22/tc
 
  
docker-compose  ps
+
[https://blog.csdn.net/CSDN_duomaomao/article/details/76053229 Alpine linux硬盘安装]
    Name          Command          State                                    Ports                             
 
-----------------------------------------------------------------------------------------------------------------
 
gitlab_web_1  /assets/wrapper  Up (healthy)  0.0.0.0:2222->22/tcp, 0.0.0.0:4433->443/tcp, 0.0.0.0:7080->80/tcp
 
root@jenkins2020:/data/apps/gitlab#
 
  
 +
[https://blog.csdn.net/CSDN_duomaomao/article/details/76152416 Alpine Linux 使用]
  
</pre>
+
[http://mirrors.ustc.edu.cn/help/alpine.html Alpine Linux 源使用帮助]
  
===删除home数据目录===
+
[http://www.10tiao.com/html/357/201702/2247484888/1.html Alpine Linux配置使用技巧]
mkdir  -p /var/lib/docker/volumes/jenkins_jenkins_home/_data #可能要创建回去
 
  
=see also=
+
[http://blog.csdn.net/csdn_duomaomao/article/details/76053229 Alpine linux硬盘安装]
https://hub.docker.com/r/jenkins/jenkins
 
  
[https://www.cnblogs.com/xiaoqi/p/docker-jenkins-cicd.html Docker+Jenkins持续集成环境(1)使用Docker搭建Jenkins+Docker持续集成环境]
+
[https://zh.wikipedia.org/wiki/BusyBox BusyBox]
  
[http://dockone.io/article/2594 Jenkins与Docker的持续集成实践 ]
 
  
http://www.itmuch.com/work/jenkins-in-action/
+
==Raspberry Pi==
 +
[https://a-delacruz.github.io/alpine/alpine-linux.html Raspberry Pi 3 Alpine Linux arm64]
  
[https://blog.csdn.net/xxsstf/article/details/84991931  Jenkins使用, maven插件配置修改]
+
[https://wiki.alpinelinux.org/wiki/Raspberry_Pi Raspberry Pi]
 +
==other==
 +
[https://blog.csdn.net/diyiday/article/details/78332924 alpine linux填坑之路安装php-bcmath]
  
[https://www.jianshu.com/p/7883c251eb09 Jenkins+maven+docker 解决项目持续集成]
+
[https://blog.csdn.net/freewebsys/article/details/53816615 docker(13):alpinelinux安装jenkins]
  
[https://www.jianshu.com/p/0391e225e4a6 Docker版本Jenkins的使用]
+
[http://www.infoq.com/cn/news/2016/01/Alpine-Linux-5M-Docker Alpine Linux,一个只有5M的Docker镜像]
  
[https://dev.to/andresfmoya/install-jenkins-using-docker-compose-4cab Install Jenkins using Docker Compose]
 
  
==learn==
 
[https://www.cnblogs.com/dzblog/category/945869.html Jenkins学习之路]
 
  
[[category:ops]]
+
[[category:ops]]

2020年11月24日 (二) 08:19的版本


pre

占用内存仅仅 37M ,非常的小巧。适合用在树莓派或者其他低内存设备上。 Alpine Linux 折腾记

download

x86

https://alpinelinux.org/downloads/

https://mirrors.aliyun.com/alpine/v3.10/releases/x86_64/alpine-standard-3.10.3-x86_64.iso

http://dl-cdn.alpinelinux.org/alpine/v3.10/releases/x86_64/alpine-standard-3.10.1-x86_64.iso

Raspberry Pi

AArch64是ARMv8 架构的一种执行状态 so 下载这个 拿回来试一下 http://mirrors.ustc.edu.cn/alpine/v3.8/releases/aarch64/alpine-rpi-3.8.1-aarch64.tar.gz

http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/aarch64/alpine-rpi-3.8.1-aarch64.tar.gz

http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/armhf/alpine-rpi-3.8.1-armhf.tar.gz

国内的mirrors 有时比较同步比较慢 https://mirrors.alpinelinux.org/

install on pi

要看

https://wiki.alpinelinux.org/wiki/Raspberry_Pi

Create a Bootable USB

https://my.oschina.net/u/2306127/blog/1587585

https://wiki.alpinelinux.org/wiki/Create_a_Bootable_USB

在树莓派Zero W上安装alpine linux系统

安装过程

输入root 没有密码 直接回车 如果是内网机器 记得打开 root login ssh


13-选择 sys 方式使用磁盘,将系统安装到本地硬盘-格式化硬盘-完成硬盘安装 sys

Alpine linux硬盘安装

configure

国内源 

a. 编辑 /etc/apk/repositories
b. 将里面 dl-cdn.alpinelinux.org 的 改成 mirrors.aliyun.com ; 保存退出即可

 cat   /etc/apk/repositories
#/media/cdrom/apks
http://mirrors.aliyun.com/alpine/v3.10/main

http://mirrors.aliyun.com/alpine/v3.10/community
#http://mirror.xtom.com.hk/alpine/v3.10/main
#http://mirror.xtom.com.hk/alpine/v3.10/community
#http://mirror.xtom.com.hk/alpine/edge/main
#http://mirror.xtom.com.hk/alpine/edge/community
#http://mirror.xtom.com.hk/alpine/edge/testing

apk update


alpine:~# cat /etc/apk/repositories 
#/media/cdrom/apks
http://mirrors.ustc.edu.cn/alpine/v3.8/main
http://mirrors.ustc.edu.cn/alpine/v3.8/community
cp /etc/apk/repositories /etc/apk/repositories.bak

软件包管理工具apk的基本使用

可以方便地安装、删除、更新软件。

#查询openssh相关的软件包

apk search  openssh   

#安装一个软件包

apk add  xxx   

#删除已安装的xxx软件包

apk del  xxx   

#获取更多apk包管理的命令参数

apk --help   

 

#比如安装常用的网络相关工具:

#更新软件包索引文件

apk update    

#用于文本方式查看网页,用于测试http协议

apk add curl  

#提供了查看网络连接的协议端口的命令ss,可以替代netstat命令

apk add iproute2  

#drill 命令可以替代dig和nslookup DNS查询命令

apk add drill   

alpine:~# df -h 
Filesystem                Size      Used Available Use% Mounted on
devtmpfs                 10.0M         0     10.0M   0% /dev
shm                     245.0M         0    245.0M   0% /dev/shm
/dev/sda3                29.4G    576.7M     27.3G   2% /
tmpfs                    49.0M    108.0K     48.9M   0% /run
/dev/sda1                92.8M     19.1M     66.8M  22% /boot

Alpine Linux 包管理


5.apk info
$ apk info #列出所有已安装的软件包
$ apk info -a zlib #显示完整的软件包信息
$ apk info --who-owns /sbin/lbu #显示指定文件属于的包


on vps

my.vultr.com ISO Library has apline 3.8 也可以自己上传

Bootstrapping Alpine Linux - Alpine Linux

custom-iso-alpinelinux

Install Alpine Linux on your Linode

docker

 cat   /etc/apk/repositories

http://mirrors.aliyun.com/alpine/v3.10/main
http://mirrors.aliyun.com/alpine/v3.10/community


apk add docker

rc-update add docker boot

service docker start

apk add py-pip
apk add python-dev libffi-dev openssl-dev gcc libc-dev make


mkdir -p ~/.pip

#vim  ~/.pip/pip.conf
 cat >>~/.pip/pip.conf<<EOF
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
 
[install]
trusted-host=mirrors.aliyun.com
EOF

pip install more-itertools==5.0.0 #3.10.3

pip install docker-compose


#err  

100% |████████████████████████████████| 81kB 1.2MB/s 
more-itertools requires Python '>=3.5' but the running Python is 2.7.16

nodejs yarn etc

#换源 然后
apk add  --no-cache  nodejs yarn python

https://wiki.alpinelinux.org/wiki/Docker

trouble shooting

alpine镜像crontab无法运行问题

alpine镜像 普通用户 crontab无法运行问题

crond 服务用 root用户启动   or on ci  docker-compose exec -u  root  -T php-worker  sh -c "crond"

如果用官方提供alpine镜像是不自动启动crond的,得手动起
每个用户有单独的文件在/etc/crontabs文件夹
可以用supervisor启动crond,但要用root用户去启动crond,运行其他用户的定时任务

cron itself should run as root, regardless of which user you want to use to run the jobs.

This will install a crontab for user robuser. When cron executes jobs from this particular crontab, it will automatically switch users to robuser. However, cron can’t switch users like that if it’s not running as root, which is why you need to be running cron as root.

 crontab  -l 
crontab: must be suid to work properly

apk add --update busybox-suid

alpine linux中如何使用crontab执行定时任务

Failed to edit crontab (linux Alpine)

Alpine容器启动Crontab任务


Running cron jobs in a Docker Alpine container

ops

Alpine 修改docker的时区及安装telnet

apk  add rsync

desktop

暂时没有中文输入法

Alpine Linux:如何配置GUI的图形桌面环境:x Desktop Environment

Alpine Linux:如何配置GUI的图形桌面环境:x Desktop Environment

MATE 桌面

Awesome桌面

折腾记


alpine-中文截图乱码问题

问题

Alpine Linux使用了musl,可能和其他Linux发行版使用的glibc实现会有所不同。在容器化中最可能遇到的是DNS问题,即musl实现的DNS服务不会使用resolv.conf文件中的search和domain两个配置,这对于一些通过DNS来进行服务发现的框架可能会遇到问题

docker alpine版本服务中显示中文

see also

Alpine Linux常用命令

Alpine linux硬盘安装

Alpine Linux 使用

Alpine Linux 源使用帮助

Alpine Linux配置使用技巧

Alpine linux硬盘安装

BusyBox


Raspberry Pi

Raspberry Pi 3 Alpine Linux arm64

Raspberry Pi

other

alpine linux填坑之路安装php-bcmath

docker(13):alpinelinux安装jenkins

Alpine Linux,一个只有5M的Docker镜像