注:一下代碼必要時加sudo
容器 = 鏡像 + 可讀層。
docker run 命令先是利用鏡像創建了一個容器,然後運行這個容器。
Docker start命令爲容器文件系統創建了一個進程隔離空間。注意,每一個容器只能夠有一個進程隔離空間。
1、測試Docker是否安裝成功
docker run hello-world
2、查看版本信息
docker --version
3、使用Dockerfile定義容器:
1)創建空目錄test
2)將名爲Dockerfile的文件放入,配置如下:
# 將官方 Python 運行時用作父鏡像
FROM python:3.6-slim
# 將工作目錄設置爲 /app
WORKDIR /app
# 將當前目錄內容複製到位於 /app 中的容器中
ADD . /app
# 安裝 requirements.txt 中指定的任何所需軟件包
RUN pip install -r requirements.txt
# 使端口 80 可供此容器外的環境使用
EXPOSE 80
# 定義環境變量
ENV NAME World
# 在容器啓動時運行 app.py
CMD ["python", "app.py"]
3)將requirements.txt放入,配置如下:
Flask
Redis
4)將app.py的文件放入
from flask import Flask
from redis import Redis, RedisError
import os
import socket
# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)
app = Flask(__name__)
@app.route("/")
def hello():
try:
visits = redis.incr("counter")
except RedisError:
visits = "<i>cannot connect to Redis, counter disabled</i>"
html = "<h3>Hello {name}!</h3>" \
"<b>Hostname:</b> {hostname}<br/>" \
"<b>Visits:</b> {visits}"
return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80)
5)查看文件
cd test
ls
6)準備工作完成
7)構建Docker鏡像
docker build -t friendlyhello .
8)查看鏡像的位置
docker images
9)運行應用,p參數將本機的一個端口與容器的端口綁定
docker run -p 4000:80 friendlyhello
10)測試:
a:在瀏覽器上測試
http://localhost:4000/
b:用命令行測試
curl http://localhost:4000
11)終端上按 CTRL+C 退出。
12)在分離模式下運行應用
docker run -d -p 4000:80 friendlyhello
結果:
容器在後臺運行;
獲得應用的長容器 ID
13)查看正在運行的容器
docker ps
14)結束容器的運行
docker stop CONTAINER ID
15)完成了,嚶嚶嚶~
4、鏡像操作
1)列出鏡像列表
docker images
2)使用一個鏡像運行容器
例如:docker run -t -i ubuntu:15.10 /bin/bash
3)獲取新鏡像
docker pull ubuntu:18.10
4)搜索鏡像
docker search httpd
5)自己創建一個鏡像
a:從已經創建的容器中更新鏡像,並且提交這個鏡像
b:使用 Dockerfile 指令來創建一個新的鏡像
6)更新鏡像
由鏡像創建一個容器後才能更新
docker run -t -i ubuntu:15.10 /bin/bash
apt-get update
exit
docker commit 來提交容器副本。
docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2\
sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8
-m:提交的描述信息
-a:指定鏡像作者
e218edb10161:容器ID
runoob/ubuntu:v2:指定要創建的目標鏡像名
7)設置鏡像標籤
docker tag 860c279d2fec runoob/centos:dev
8)構建鏡像:可參考步驟3
命令 docker build , 從零開始來創建一個新的鏡像。爲此,我們需要創建一個 Dockerfile 文件,其中包含一組指令來告訴 Docker 如何構建我們的鏡像。
docker build -t 名字