docker 是一個 LXC 技術
docker 是一種應用程式虛擬化
docker 不是虛擬機器
docker 內容物不需要 OS,但還是要有 OS 來跑 docker
docker container 內環境操作方式如同一個實際的 OS
docker 有建議可讓每一種服務(apache/mysql)各包成一個 container 跑,然後串起來
docker 用 dockerfile 記錄 container 過程,可結合版本控制 (git)
docker 用 dockerfile 佈署環境
docker 目前只能在 Linux 上跑
# yum repo
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# 安裝 docker
yum install -y docker-io
# 啟動 docker
service docker start
# search 官網上有那些 image 可下載來用 or 瀏覽 https://registry.hub.docker.com/
docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official build of CentOS. 588 [OK]
這個是 cenots7 ,但 cat /etc/issue 內容卻是這樣
\S Kernel \r on an \m
# 知道名稱(repo-name)後,就從官網下載公開的 container
docker pull centos
# 列出可用的 image,可能是官網 pull 下來的,或是自建的
docker images
# 跑一個新的 container,這個動作每一次都會是一個新的 container
# 其實只要 打 bash 就好,不一定要 /bin/bash
docker run -i -t centos /bin/bash
# 或者
# 用 docker pull centos 時可能會有很多相同的 repo-name,但 tag 及 images id 會不同
# 所以可以根據不同 image id 或 name + tag 打開某個 container
docker run -i -t [repo-name] /bin/bash docker run -i -t [repo-name:tag-name] /bin/bash docker run -i -t [image-id] /bin/bash docker run -i -t centos /bin/bash docker run -i -t centos:centos6 /bin/bash docker run -i -t 0c752394b855 /bin/bash
# 重覆以上的動作就是一個新的 container
# 只要從一個 container EXIT 時,這 container 就是 down 了
# container 是沒有所謂的開關機的
# -i 為 保持 stdin 開啟
# -t 為開啟互動提示連線
# bash 為指令
# 此時如果要退出,可按 Ctrl + P 再按 Ctrl + Q 讓它保持背景
# 或用 -d 為 background
# 列出所有已開啟過的 container
docker ps -a
# 以上每 run 一次就會產生一組新 container id
# 假如我要登入同一個,就要先啟動它,如果它是 Exited 的話
docker start [container-id]
# 再來就用 attach 登入一個背景模式的 container,如果它是 UP 時就直接用 attach
docker attach [container-id]
# 只要是 ps -a 列出來的,它的內容還是保留最後的身影,比方說你安裝 httpd 它是還在的
# 如果要永久保留就建立成 images
# 儲存已變更過的 container,永久保留
docker commit [container-id] [new-image-name]:[tag-name] docker commit xxxxxxxxxxxxxx centos:httpd
# 移除一個已 stop 的 container,後面可接多個 id
docker rm [container-id]
# 刪除 images,但要事先確認 它不會在 ps -a 裡看到
docker rmi [image-id]
# login docker 官網,用於如果要上傳 push 你的 images 至官網
docker login index.docker.io
# 自訂 centos
docker run -i -t centos bash > yum install -y httpd php mysql-server mysql php-mysql php-mbstring > exit docker commit [container-id] centos:httpd
# 就可在 docker images 看到 repo 為 centos 而 TAG 為 httpd
# 然後讓外網 (8888 port) 可以看到 container 的 http 80
docker run -i -t -p 8888:80 centos:httpd bash
Q:
如何從自已的庫 pull container ?
docker container 只能內網 ? 只能用 -p mapping ?
已 run 的 container 如何再綁 port 對外,只能重新 run ?
如何利用 dockerfile 佈署環境 ?
febootstrap 是什麼 ?
為何反覆 attach,會很慢 ?
fig.yml ?
留言