docker利用容器來運行應用:docker容器是由docker鏡像創建的運行實例。docker容器類似虛擬機,可以執行包含啓動,停止,刪除等。每個容器間是相互隔離的。容器中會運行特定的運用,包含特定應用的代碼及所需的依賴文件。可以把容器看作一個簡易版的linux環境(包含root用戶權限,進程空間,用戶空間和網絡空間等)和運行在其中的應用程序。
容器:運行程序
鏡像:安裝程序
倉庫:存儲鏡像
1. 在centos上使用docker
yum install -y docker service docker start /stop/restart
sudo docker run ubuntu:15.10 /bin/echo "helloworld"
- docker: Docker 的二進制執行文件。
- run:與前面的 docker 組合來運行一個容器。
- ubuntu:15.10指定要運行的鏡像,Docker首先從本地主機上查找鏡像是否存在,如果不存在,Docker 就會從鏡像倉庫 Docker Hub 下載公共鏡像。
- /bin/echo "Hello world": 在啓動的容器裏執行的命令
以上命令完整的意思可以解釋爲:Docker 以 ubuntu15.10 鏡像創建一個新容器,然後在容器裏執行 bin/echo "Hello world",然後輸出結果。
docker run -i -t ubuntu:15.10 /bin/bash
- -t:在新容器內指定一個僞終端或終端。
- -i:允許你對容器內的標準輸入 (STDIN) 進行交互。
進入 一個ubuntu15.10的容器 exit/ctrl+d: 退出
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done" 2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
長字符串是容器ID
docker ps
查看容器是否運行
CONTAINER ID:容器ID
NAMES:自動分配的容器名稱
在容器內使用docker logs命令,查看容器內的標準輸出
docker logs 13972412dbdf 或 docker logs 對應的名字
停止:
docker stop 13972412dbdf 或 docker stop 對應的名字
docker search java docker pull java //搜索對應的鏡像,然後下載
2. 運行web應用
# docker run -d -P training/webapp python app.py
#docker ps
輸出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e5aabc457784 training/webapp "python app.py" 12 seconds ago Up 11 seconds 0.0.0.0:32768->5000/tcp agitated_brown 13972412dbdf ubuntu:15.10 "/bin/sh -c 'while t…" 16 minutes ago Up 16 minutes ........
Docker 開放了 5000 端口(默認 Python Flask 端口)映射到主機端口 32768 上。
這時我們可以通過瀏覽器訪問WEB應用(使用本地主機IP)
我們也可以通過 -p 參數來設置不一樣的端口:
docker run -d -p 5000:5000 training/webapp python app.py
查看端口映射情況:
docker port 1b4d598106c1 或 docker port 對應名字
其他常用命令:
docker top id/name:查看容器內運行的進程信息
docker inspect id/name: 來查看 Docker 的底層信息。它返回一個 JSON 文件記錄着 Docker 容器的配置和狀態信息。
docker start/stop/rm id/name:運行、停止、刪除鏡像
docker images:查看本地鏡像 REPOSITORY:表示鏡像的倉庫源 TAG:鏡像的標籤 IMAGE ID:鏡像ID CREATED:鏡像創建時間 SIZE:鏡像大小
docker pull ubuntu:13.10 獲取新鏡像
docker tag 860c279d2fec runoob/centos:dev //打標籤
3. 提交容器副本
ID爲e218edb10161的容器,是按我們的需求更改的容器。我們可以通過命令 docker commit來提交容器副本。
docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2 sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8
各個參數說明:
- -m:提交的描述信息
- -a:指定鏡像作者
- e218edb10161:容器ID
- runoob/ubuntu:v2:指定要創建的目標鏡像名
docker images
docker run -t -i fish/ubuntu:v2 /bin/bash
4 構造dockerfile,構建鏡像:
FROM centos:6.7
MAINTAINER Fisher "[email protected]"
RUN /bin/echo 'root:123456' |chpasswd
&& useradd runoob \
&& /bin/echo 'runoob:123456' |chpasswd \
&& /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local \
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D
構建鏡像:
docker build -t runoob/centos:6.7 /home/fish/
構建成功後,查看 docker images 再運行 生成容器