为jekyll制作docker镜像

2019年4月28日 10:08

说明

 
jekyll运行依赖ruby,每次重装都会遇到版本问题,挺麻烦,干脆做成镜像
 
 

官方镜像存在的问题

 
docker上有jekyll的官方镜像,如果是直接运行,没什么问题。
 
如果你挂载volume就会有权限问题
 
jekyll 3.8.5 | Error:  Permission denied @ dir_s_mkdir - /srv/jekyll/_site
 
 

Tags: jekyll docker
评论(333) 阅读(11015)

dnsmasq在docker中无应答

2018年10月01日 22:15

问题描述

制作了一个docker镜像,运行dnsmasq。域名解析竟然无应答, no servers cloud be reached
 
  • 发送请求解析域名
dig www.google.com @192.168.0.111 -p 53

; <<>> DiG 9.11.3-RedHat-9.11.3-4.fc27 <<>> www.google.com @192.168.0.111 -p 53
;; global options: +cmd
;; connection timed out; no servers could be reached
 
  • dnsmasq打印日志。从日志中发现缺少reply
[root@bogon ss]# docker-compose -f chinadns.yml up dns-dnsmasq

Starting ss_dns-dnsmasq_1 ... done
Attaching to ss_dns-dnsmasq_1
dns-dnsmasq_1   | dnsmasq: started, version 2.79 cachesize 150
dns-dnsmasq_1   | dnsmasq: compile time options: IPv6 GNU-getopt no-DBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP no-conntrack ipset auth no-DNSSEC loop-detect inotify
dns-dnsmasq_1   | dnsmasq: using nameserver 192.168.0.111#5354
dns-dnsmasq_1   | dnsmasq: read /etc/hosts - 7 addresses
dns-dnsmasq_1   | dnsmasq: query[A] www.google.com from 192.168.0.111
# 请求发送给了上游dns服务器,无后续reply。再去看上游dns服务器,发现已经解析出了ip
# 而dnsmasq还是无应答
dns-dnsmasq_1   | dnsmasq: forwarded www.google.com to 192.168.0.111
dns-dnsmasq_1   | dnsmasq: query[A] www.google.com from 192.168.0.111
dns-dnsmasq_1   | dnsmasq: forwarded www.google.com to 192.168.0.111
 

解决办法。

尝试了很多方法,很奇怪它为什么不能应答。dnsmasq也不大,放在宿主机上运行吧。
 
《了凡四训》详解之改过之法
印光大师十念法(胡小林主讲第1集)
百病之源

 

Tags: dnsmasq docker chinadns
评论(8) 阅读(2510)

docker容器中不能ping

2018年6月10日 06:40

  • 描述
进入容器内,执行ping命令,提示缺少权限
docker exec -it deac /bin/bash
bash-4.3$ ping 192.168.1.100
PING 192.168.1.100 (192.168.10.100): 56 data bytes
ping: permission denied (are you root?)
 
  • 首先,查看当前用户
bash-4.3$ whoami
jenkins
 
  • 然后,再看看文件权限
缺少权限创建socket
# 查看ping权限
bash-4.3# ls -lsh /bin/ping
0 lrwxrwxrwx 1 root root 12 May  9  2017 /bin/ping -> /bin/busybox

#查看ping连接文件的权限
bash-4.3$ ls -lhs /bin/busybox
804K -rwr-xr-x 1 root root 803K Oct 26  2016 /bin/busybox
 
  • 方法一,临时方式,以root用户登录
docker exec -u root -it deac /bin/bash
 
  • 方法二,永久,添加s权限
#添加权限
chmod u+s /bin/ping  # 让用户在执行ping时,暂时拥有权限

#再查看权限
bash-4.3$ ls -lsh /bin/busybox
804K -rwsr-xr-x 1 root root 803K Oct 26  2016 /bin/busybox
 
此生必看的科学实验-水知道答案

 

评论(23) 阅读(12017)

docker缩小镜像大小的六种方法

2018年6月03日 10:55

1.选择apline作为基础镜像

2.合并dockerfile中RUN命令

3.安装软件后,删掉源文件

4.导出的文件用gzip命令压缩

5.save命令多个镜像一起导出,缩小整体大小

6.多段构建
 
珍惜生命请勿杀害动物 01

 

评论(432) 阅读(46438)

docker基础镜像怎么选?

2018年6月03日 10:40

先看看基础镜像的dockerfile,它们是怎么创建出来的。
  • scratch
空镜像
  • alpine
FROM scratch
ADD rootfs.tar.xz /
CMD ["/bin/sh"]
  • debian
FROM scratch
ADD rootfs.tar.xz /
CMD ["bash"]
  • centos/fedora/ubuntu
FROM scratch
ADD centos-7.4.1708-docker.tar.xz /

LABEL name="CentOS Base Image" \
    vendor="CentOS" \
    license="GPLv2" \
    build-date="20170911"

CMD ["/bin/bash"]
  • 建议
docker是容器不同于虚拟机,运行之后只有应用程序在里面运行,基础镜像只是为应用程序提供依赖包。应用程序是主,基础镜像是次。
如果没有必要,选择最小的依赖环境alpine,然后在这个基础上制作自己的镜像。
 
 
珍惜生命请勿杀害动物 01
珍惜生命请勿杀害动物 02
珍惜生命请勿杀害动物 03

 

评论(5) 阅读(2916)

docker search怎么查详情

2018年6月03日 09:09

刚用docker search的人,看到查出一堆结果,此时会有两个疑问
 
1. 如何查详情?
答案是没有,docker没有查看详情的命令
 
2. 结果太多,哪个是最好的,该选哪个?
可以简单认为官方是最好的,热度高的是最好的。
 
* 显示官方
docker search [包名]  --filter "is-official=true"
* 过滤热度
docker search [包名] --stars=3
 
3. 建议
docker search真不实用,不如到官方网站查(http://hub.docker.com),上面有最详细的信息。得出结论后再docker pull到本地使用。
 
《寿康宝鉴》有声书
寿康宝鉴百话有声书(mp3)

 

评论(5) 阅读(3219)