docker learn2:dockerfile

 

Dockerfile

說明了容器中應該進行什麼的步驟,網絡接口和硬件驅動在環境內部是虛擬化的,和系統中其餘部分是獨立的,所以須要和外部環境映射,html

拷貝文件時也必須指定要拷貝到容器具體文件,使用dockerfile 指望不管在哪配置都大致類似python

 

使用Dockerfile來定義一個容器

 

 

 

 

1.在特定目錄下建立三個文件git

Dockerfilegithub

 

# Use an official Python runtime as a parent image FROM python:2.7-slim # Set the working directory to /app WORKDIR /app # Copy the current directory contents into the container at /app ADD . /app # Install any needed packages specified in requirements.txt RUN pip install --trusted-host pypi.python.org -r requirements.txt # Make port 80 available to the world outside this container EXPOSE 80 # Define environment variable ENV NAME World # Run app.py when the container launches CMD ["python", "app.py"]redis

 

requirements.txtdocker

Flaskflask

Redis網絡

 

app.pyapp

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)curl

 

2.查看當前目錄中三個文件是否已經建立好

$ ls

Dockerfile app.py requirements.txt

 

3.建立docker image

docker build -t friendlyhello .

4.查看本地docker image

$ docker image ls

REPOSITORY TAG IMAGE ID

friendlyhello latest 326387cea398

 

5.運行app 使用-p 參數將機器端口4000映射到容器發佈端口80

docker run -p 4000:80 friendlyhello

 

6.訪問app

http://localhost:4000

 

 

使用ctrl+c能夠中斷app

7.將app運行改成後臺運行docker run -d -p 4000:80 friendlyhello

 

8.使用命令$ curl http://localhost:4000

查看網頁內容

 

9.查看正在運行的image:docker container ls

10.關閉正在運行的容器 docker container stop CID

 

 

分享製做的image

dockerhub和github相似,是一個鏡像倉庫,國外地址 hub.docker.com.,國內沒法訪問

使用國內網易雲 hub.c.163.com

 

1.登陸網易雲鏡像倉庫

docker login -u {登陸帳號} -p {你的網易雲密碼} hub.c.163.com

Attention:登陸帳號可前往網易雲控臺,點擊右上角用戶名- 基本信息裏查看。

返回「Login Succeded」即爲登陸成功。

2.標記本地鏡像

docker tag {鏡像名或ID} hub.c.163.com/{你的用戶名}/{標籤名}

example: docker tag friendlyhello hub.c.163.com/dog948453219/friendlyhello

 

3.你的網易雲鏡像倉庫推送地址爲 hub.c.163.com/{你的用戶名}/{標籤名}

Attention: 此處爲你的用戶名,不是你的郵箱賬號或者手機號碼 登陸網易雲控制檯,頁面右上角頭像右側即爲「用戶名」

  • 推送至不存在的鏡像倉庫時,自動建立鏡像倉庫並保存新推送的鏡像版本;
  • 推送至已存在的鏡像倉庫時,在該鏡像倉庫中保存新推送的版本,當版本號相同時覆蓋原有鏡像。

 

4.推送至網易雲鏡像倉庫

docker push hub.c.163.com/{你的用戶名}/{標籤名}

example: docker push hub.c.163.com/dog948453219/friendlyhello

5.默認爲私有鏡像倉庫,推送成功後便可在控制檯的「鏡像倉庫」查看

相關文章
相關標籤/搜索