上一篇文章使用CentOS部署Flask介紹到了隔離Python環境用到的兩種手段:virtualenv和pyenv,可是這兩種手段有以下缺陷:html
阿里雲部署文檔
查看CentOS版本號:cat /proc/version
python
Docker要求64位的系統且內核版本至少爲3.10web
個人內核信息docker
若是你使用阿里雲,能夠參考他們的更換內核文檔作系統版本升級數據庫
參考文檔
Docker 容許你在容器內運行應用程序, 使用 docker run 命令來在容器內運行一個應用程序flask
想在CentOS經過ubuntu運行個程序試試?
docker run ubuntu:15.10 /bin/echo "Hello world"
爲你加載或下載ubuntu15.10,而後echo個Hello worldubuntu
- t:在新容器中指定一個僞終端或終端centos
- i:容許你對容器內的標準輸入進行交互
docker run -i -t ubuntu:15.10 /bin/bash
安全
看!這個時候主機名已經變動了bash
- c:啓動一個後臺運行的容器
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
返回了一長串標識符,標識這個啓動了的容器
docker ps
能夠查看當前運行着的Docker們
剛剛運行的Docker在這裏
docker logs 標識符/name
查看指定標識符下docker的log們
查看Log們
docker stop 標識符/name
中止docker
中止以後,果真木有了...
docker
查看docker命令選項
docker command --help
查看command的使用幫助
docker run -d -P training/webapp python app.py
在docker中運行一個flask應用
docker run
docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
同時指定映射到主機的IP和Port,並指定綁定UDP端口TODO:示例圖片待補充...不會在Docker裏配置Python環境,跑不起來flask...
docker ps
查看到的docker信息會有PORTS字段,
0.0.0.0:32769->5000/tcp
表示docker中的5000端口,映射到了主機的32769端口上
docker port docker標識符
查看標識符的docker中port的映射關係
docker logs -f 標識符
查看docker的標準輸出
docker top 標識符
查看Docker中的運行着的進程
Docker中運行着的進程們
docker inspect
檢查docker中的底層信息,返回一個JSON文件記錄着Docker容器的配置和狀態信息
返回了很大一坨信息呢
docker stop 標識符
中止容器
經過docker ps -a
指令,還能看到已經stop的容器
docker start 標識符
重啓已經中止的容器
docker ps -l
查詢最後一次建立的容器 last嘛
docker restart 標識符
重啓正在運行的容器
docker rm 標識符
移除中止狀態下的容器
移除以後,咱們找不到jolly_stallman了...傷感ing...
當運行容器的時候,若是使用的鏡像在本地不存在,會從docker鏡像倉庫中下載。默認是從Docker Hub公共鏡像源下載的。
辣沫,這一小節,來看下:
docker imges
列出本地主機上的鏡像
對,我只有一個鏡像...尷尬...
docker run -t -i ubuntu:15.10 /bin/bash
中的15.10出自哪裏了吧docker search 系統名(如centos)
在docker hub上查找合適的鏡像
查查CentOS...不知道爲啥,對CentOS有一種謎之偏心...
docker pull 鏡像NAME
或 docker pull 系統名
預先下載某鏡像,暫不使用。第二個指令默認下載官方版
docker commit -m="has update" -a="鏡像做者名" Docker標識符 目標鏡像名(通常是 做者名/操做系統:v版本號)
docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
docker images
能夠看到docker tag xxx 鏡像名稱
爲鏡像名稱指定一個新的tag
使用描述文件構建鏡像:沒啥大意思也不難,能夠參考這裏
目標:經過端口,鏈接到一個Docker
Docker鏈接到另外一個容器,有兩個方案:
sudo docker run -d --name db training/postgres
sudo docker run -d -P --name web --link db:db training/webapp python app.py
--link name:alias