有人問docker

1、用docker-machine建立開發環境 (VM),vm內的docker 環境是完整的,自己灌很浪費時間 http://sueboy.blogspot.com/search/label/docker-machine 然後 記得vm裡面跑 portainer.io 管理docker用,web介面 會省下你一大堆時間! 以上這個步驟是快速建立可以跑docker環境,然後又可以用圖形管理看log、砍image等等 2、docker 一般操作網路上都有,一定要看,就算有圖形化介面,有些時候你還是需要指令 記得一件事,要學docker-compose,然後基本上專案用docker,更正確來說,是要會用、會寫docker-compose docker-compose 會比 單純用docker,好用很多 http://sueboy.blogspot.com/2018/12/ethereum-poa-docker-compose-docker.html 3、注意iptables,用docker後,常常會碰到iptables的問題,網路有問題,不能連,連不上,解答:把docker服務重開,就會重新設定iptables…這一堆人死在這上面 如果docker服務重開後,網路還是不行,我建議是用docker-machine重建一台vm比較快,再用docker-compose重新執行,比較快,省時間 4、通常用了docker的後端,十之八九就會想上K8s (kubernets) 到這階段就是超級大坑了!!! 非常大的坑! 會死人的坑! 到這階段千萬要避開,一定要避開! 坑指自架

2019-05-22 · 1 min · 26 words · Me

geth add peers static-nodes.json

https://medium.com/taipei-ethereum-meetup/%E4%BB%A5%E5%A4%AA%E5%9D%8A%E7%A7%81%E7%B6%B2%E5%BB%BA%E7%AB%8B-%E4%B8%80-43f8677fc9f8 如果要組成一個私人網路,同樣按照上面的流程建立其他節點。如果沒有下–nodiscover參數的話,最後節點應該會找到彼此。如果有下的話就必須用手動的方式加入其他節點,加入的方式有三種: 一是在geth指令加入–bootnodes參數; 二是進到console裡使用 admin.addPeer(); 三是存成static-nodes.json檔,讓geth自動連線。 不管是使用哪一種,我們都要先知道要連到 static-nodes.json 裡面使用domain,可能會有問題,要自行更換ip Example: geth --data ~/data cp static-nodes.json ~/data/geth/static-nodes.json static-nodes.json like this [ "enode://53999cc519079c5190798b1114bd16a05a8d5190796cc51907988a4e80ebda7b6c519079e56b0b161da3475c4dc62f6b51907967a6e327e46aa56329c519079f@192.168.0.10:30303" ]

2019-04-24 · 1 min · 22 words · Me

Docker-compose build Alpine image apk update fetch hangs

Alpine image apk update fetch hangs At apk –no-cache upgrade or RUN apk update no respone Try to login docker container run command line: wget http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz Get status is “stalled”. PS:Error is different “no respone” or “hang” Way one: Answer: apk fetch hangs https://github.com/gliderlabs/docker-alpine/issues/307 10G mtu or switch mtu So Into directory docker build --network host . Way two: Answer: https://mlohr.com/docker-mtu/ https://medium.com/@sylwit/how-we-spent-a-full-day-figuring-out-a-mtu-issue-with-docker-4d81fdfe2caf nano /etc/docker/daemon.json { "mtu": 1450 }

2019-04-02 · 1 min · 68 words · Me

alpine docker Bad file descriptor

https://stackoverflow.com/questions/48736212/bad-file-descriptor-error-during-apk-update-in-docker-container-why When you login docker container, use apk update get this error message Bad file descriptor… Try to run follow command rm -rf /var/cache/apk && \ mkdir /var/cache/apk && \ apk update

2019-03-11 · 1 min · 32 words · Me

[Faile!!]Docker, cron, mail and logs

F……………………………………………………………………………….. https://www.preining.info/blog/2018/05/docker-cron-mail-and-logs/ from debian:stretch-slim RUN apt-get -y update RUN apt-get install -y cron #ssmtp ADD . /app ADD crontab /etc/cron.d/mypackage RUN chmod 0644 /etc/cron.d/mypackage #ADD ssmtp.conf /etc/ssmtp/ssmtp.conf #RUN chown root.mail /etc/ssmtp/ssmtp.conf #RUN chmod 0640 /etc/ssmtp/ssmtp.conf CMD cron -f ===== docker-compose.yml version: '3.3' services: gethpeers: build: context: gethpeers/ volumes: - cronlog:/app/cronapplog:rw networks: - fastdev fakelog: build: context: fakelog/ volumes: - cronlog:/app/cronapplog:rw - filebeat:/usr/share/filebeat/data:rw networks: - fastdev volumes: cronlog: filebeat: networks: fastdev: driver: bridge gethpeers Dockerfile from debian:stretch-slim RUN apt-get -y update RUN apt-get install -y cron #ssmtp ADD . /app ADD crontab /etc/cron.d/mypackage RUN chmod 0644 /etc/cron.d/mypackage #ADD ssmtp.conf /etc/ssmtp/ssmtp.conf #RUN chown root.mail /etc/ssmtp/ssmtp.conf #RUN chmod 0640 /etc/ssmtp/ssmtp.conf CMD cron -f gethpeers crontab * * * * * root /app/run-cronjob /app/start.sh gethpeers run-cronjob #!/bin/bash if [ -z "$1" ] ; then echo "need name of cron job as first argument" >&2 exit 1 fi if [ ! -x "$1" ] ; then echo "cron job file $1 not executable, exiting" >&2 exit 1 fi if "$1" then exit 0 else echo "cron job $1 failed!" 2>/proc/1/fd/2 >&2 exit 1 fi gethpeers start.sh #!/bin/bash IP_PORT=xxx.xxx.xxx.xxx:8545 ETH_METHOD=admin_peers PEERS=$(curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"'$ETH_METHOD'","params":[],"id":1}' $IP_PORT | jq '.result[].network + {"project":"cronapp"}') printf "\n===== Now Geth Peers =====\n" printf "Peers: %s\n" $PEERS echo $PEERS >> /app/cronapplog/gethpeers.log fakelog Dockerfile FROM docker.elastic.co/beats/filebeat:6.5.4 COPY filebeat.yml /usr/share/filebeat/filebeat.yml USER root RUN chown root:filebeat /usr/share/filebeat/filebeat.yml USER filebeat fakelog filebeat.yml filebeat.prospectors: - type: log paths: - /app/cronapplog/gethpeers.log exclude_files: ['.gz$'] fields: srcname: "geth" srctype: "cron" filebeatserverip: "xxx.xxx.xxx.xxx" fields_under_root: true symlinks: true output.logstash: hosts: ["logstash:5044"]

2019-02-22 · 2 min · 252 words · Me