Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docker/kubernetes notes #20

Open
changtimwu opened this issue Aug 11, 2015 · 13 comments
Open

docker/kubernetes notes #20

changtimwu opened this issue Aug 11, 2015 · 13 comments

Comments

@changtimwu
Copy link
Owner

changtimwu commented Aug 11, 2015

--rm 可以讓 container exits 後就 rm 掉

docker run -it  busybox --rm 

exec 可以在現有container 執行程式

docker exec -it <container id> bash

本來在container 在background跑, 用 attach 把它移到foreground, 按 ^C 會導致 container stop

docker attach <container id>

detach hot-key: ctrl-p, ctrl-q, reference

show container 內的程式訊息

docker logs -f <container id>

看起來好像很好懂, 請注意細節當我們說 run 一個 container , 其實是 prepare 好一個 filesystem 並且 run 某個 fs 內的一支程式.

@changtimwu
Copy link
Owner Author

container 結束資料就不見這個特性叫做 ephemerally

data container 的觀念

  • 可以用 -v 或是 VOLUME 指令建立 volume
  • 用 -v 的方式建立就是不map 到host目錄, ex. 本來都是 -v ~/Dropbox:/mydata
    現在只單獨下 -v /mydata, 只剩下冒號後.
  • 舉例
timwu@tirmbp~/docker/dockerfiles/data: docker run --name mydata -v /mydata busybox true
timwu@tirmbp~/docker/dockerfiles/data: docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
19222c4afbe0        busybox   "true"              4 seconds ago       Exited (0) 3 seconds ago                       mydata              
timwu@tirmbp~/docker/dockerfiles/data: docker inspect mydata
    "Volumes": {
        "/mydata": "/mnt/sda1/var/lib/docker/volumes/a7aae9fe0beba46586fd876caaf0a3b4c6d52b96f4dff84535cc6d3bbd4ea9b2/_data"
    },
    "VolumesRW": {
        "/mydata": true
    },
  • 這樣建出來的 volume 可以當 source 讓其他 container 來用, 所以這個container 就稱為data-volume only container
  • 因為只是要用來當data volume用, 真正會被掛來用的只有那個 /mydata, 所以都選用最小的 image ex. busybox
  • 因為只是要用來當data volume用, 所以啟動指令用 true, 這個 container 一 create 就會 exited, 記得不要把它 rm 掉, 因為這個 volume 是跟這個 container 一起死生.
  • 用 docker run 來create container 是一招, 但data container 其實不需要在 UP 狀態, 其實可以改用 docker create , 這樣就不用 pass true 過去
docker create --name mydata -v /mydata busybox
  • 為了讓其他 container 來掛用, 所以這個 container 取個名字比較好記, --name mydata
  • 其他container 在 create 時候可以用 --volumes-from 語法取用 volume
docker run -it  --volumes-from mydata ubuntu /bin/bash
root@382edfbf8cf0:/# ls /mydata/
  • 用 inspect 觀察
docker inspect 382edfbf8cf0
   "Volumes": {
        "/mydata": "/mnt/sda1/var/lib/docker/volumes/a7aae9fe0beba46586fd876caaf0a3b4c6d52b96f4dff84535cc6d3bbd4ea9b2/_data"
    },
    "VolumesRW": {
        "/mydata": true
    },

@changtimwu
Copy link
Owner Author

其實 docker 並沒有刻意設計 data-volume container 這種機制, data-volume container 是由下列兩個基本機制構成的

  • container 可以 create volume
  • container 可以取用別的 containter 的 volume

@changtimwu
Copy link
Owner Author

data volume container 在 docker 結束後還在嗎?
answer: 還在! docker 重啟後, 不只 data volume container 在, 連一般container也都在. 只是狀態都會變成 stop

  • 用 boot2docker 實驗
timwu@tirmbp~/: boot2docker stop
timwu@tirmbp~/: boot2docker up
  • 382edfbf8cf0 還在, 可是已經 stop(status 不是 UP)
timwu@tirmbp~/docker: docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
5d9ed183e803        ubuntu              "/bin/bash"         9 minutes ago       Exited (0) 8 minutes ago                        goofy_kilby           
382edfbf8cf0        ubuntu              "/bin/bash"         20 minutes ago      Exited (0) 53 seconds ago                       suspicious_stallman   
19222c4afbe0        stackbrew/busybox   "true"              25 minutes ago      Exited (0) 25 minutes ago                       mydata                
  • 手動 start & attach
docker start 382edfbf8cf0
docker attach 382edfbf8cf0

@changtimwu
Copy link
Owner Author

資料無論放在 container 一般目錄內 或 volume 目錄內, 在 container stop 後, 都還會在.
container 在 docker 結束後重啟, 也都還在會在, 資料都會一直保存.
It's ok that a container's status is exited. Don't rm it if you need data on it.

所以開一個 container 來 build 東西, 即使沒開 volume 也很ok, 開 volume 的好處是方便共享或備份.

@changtimwu changtimwu changed the title manage build envs with docker docker notes Aug 15, 2015
@changtimwu
Copy link
Owner Author

OSX HFS+ is default case insensitive and not easy to convert once the partition is formatted. Even though you can share a case insensitive folder to linux but in Linux such folder can't build openwrt.

Please use diskutils to create a dmg and check the following options

  • no partition table
  • journaling & case-sensitive

Remember to select sparse image(稀疏映像檔) format to reduce space.

@changtimwu
Copy link
Owner Author

install v1.8 on ubuntu

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9

@changtimwu
Copy link
Owner Author

@changtimwu
Copy link
Owner Author

#30 (comment)

@changtimwu
Copy link
Owner Author

@changtimwu
Copy link
Owner Author

nice start of docker-machine
https://docs.docker.com/engine/installation/mac/

@changtimwu changtimwu changed the title docker notes docker/kubernete notes Dec 8, 2017
@changtimwu
Copy link
Owner Author

@changtimwu changtimwu changed the title docker/kubernete notes docker/kubernetes notes May 9, 2018
@changtimwu
Copy link
Owner Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant