Week-07
1062
LSA
ncnu
tags: What's docker hub
Docker
$sudo docker search nodejs
- 可以看 stars 數量跟 official 來抉擇裝哪個
- official:官方認證,可優先選
- 安全優先、次者方便性
PULL 數多原因
- 全世界真的很多人在 pull
- 有人在使用自動化測試
- 每當push後,或許會自動pull,數量又巨增啦!
Dockerfile
docker build -f 'Dockerfile.postgre.zh_TW' -t 'bluet/postgres_zh_tw.utf-8'ENV LANG
$ mkdir /home/{username}/{somewhere}/
$ vim Dockerfile
(內容如下:)
v1
FROM ubuntu#若沒特別標記,預設使用latestWORKDIR /dataENTRYPOINT ["/bin/echo","hello"]
v2
FROM ubuntuWORKDIR /data#RUN apt update && apt install -y node js#裝軟體範例?ENTRYPOINT ["/bin/ls","/data"]
v3 /bin/ls only
FROM ubuntuWORKDIR /dataENTRYPOINT ["/bin/ls"]#$ docker run -v $PWD:/data {filename}#列出當前目錄,切記不能使用相對路徑去掛載#相對路徑範例:../etc 或 ~/etc#$ docker run -v /:/data {filename}#列出container本身的根目錄
v4
FROM ubuntuWORKDIR /data#RUN apt update && apt install -y node js#裝軟體範例?#ENTRYPOINT ["/bin/ls"]#---run command below---#$ docker run -v $PWD:/data {filename} /bin/bash#$ docker run -v $PWD:/data {filename} /bin/echo hello#$ docker run -v $PWD:/data {filename} /bin/ls /data#$ docker run -v $PWD:/data {filename} /bin/ls /lib/#$ docker ps -a#檢視歷史執行log#$ docker rmi {docker container's id}#個別刪除#$ sudo docker ps -qa | sudo xargs docker rm -f#$ sudo docker rm -f $(sudo docker ps -aq)#一次清完全部全部container?
v5
FROM ubuntuENV LANG $(CONTAINER_LOCALE).UTF-8#把環境變數變成utf-8ENV PY_EXE python2.7ENV PYTHONIOENCODING utf-8WORKDIR /data#VOLUME /data#預設這個目錄使用者未來會掛在這個目錄,因為加了這個參數,………………#COPY {youDir/filename} {containerDir/filename}COPY source.list /etc/apt/sources.list#RUN apt update && apt install whowatch && apt clean && rm -rf /var/lib/apt/# 如果base是使用ubuntu,會自動在每一行的cache清掉,只需要# RUN apt update && apt install whowatch# 錯誤範例:# RUN apt update && apt install whowatch iotop apache2# 正確範例:記得 -y# RUN apt update && apt install -y whowatch iotop apache2#RUN {command}#e.g:RUN apt update && apt install -y node js#裝軟體範例
Command to build and run DOCKER
$ cd {to somewhere you saved the file}
$ docker build -t "{filename}" .
$ docker run "{filename}"
another way instead of using $ sudo docker
$ sudo usermod -aG docker {$USER}
$USER : current user
Notes
ENTRYPOINT 預設執行指令(若不指定指令 則使用此指令)
WORKDIR 進入哪一個目錄(若沒有該目錄 則會自動建立,權限 755)
把所有(包含 running)containers 一次刪除 docker rm $(docker ps -aq)
題外話:沒事請多用,多一分資安意識,少一分風險
保護自己安全避免 XSS 攻擊,只要能看到網頁想看的部分即可 1. Mozilla:NoScript ⭐ 2. Chrome:ScriptSafe
編輯器推薦
$ apt install geany
參考指令
- pstree
- iotop
- last
- w
- whowatch
- t : view整個系統上的process
- last
- lastlog
- top
- wa: io wait
- sy: run huge program
- d
- s
- sudo du -sh {/path/}:check file storage
- sudo du -sh /var/lib/apt/
課堂練習
自製nodejs image
$ mkdir node-lsa
$ vim Dockerfile
FROM nodehttps://hub.docker.com/_/httpd/WORKDIR /dataENTRYPOINT ["/usr/local/bin/node", "index.js"]
$ mkdir index.js
console.log("hello")
$ docker build -t "node-lsa" .
$ docker run -v $PWD:/data node-lsa
note : 使用
docker run -v
時 一定要絕對路徑,否則會出問題 [color=red]
protect
- unhide
- tripwire
- portsentry 必裝
- fail2ban 必裝
- chkrootkit: 查rootkit
- rkhunter