中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker service啟動的方法是什么

發布時間:2021-12-13 17:31:11 來源:億速云 閱讀:387 作者:iii 欄目:云計算

這篇文章主要介紹“Docker service啟動的方法是什么”,在日常操作中,相信很多人在Docker service啟動的方法是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Docker service啟動的方法是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

 Containers

#########################  Dockerfile  #########################
# Dockerfile文件定義了image環境,工作空間,網絡端口,執行命令
#
# 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 -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"]
#########################  requirements.txt  #########################
# 應用依賴
#
Flask
Redis
#########################  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 = "<h4>Hello {name}!</h4>" \
           "<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)
# 宿主機新建image目錄
$ ls
Dockerfile		app.py			requirements.txt
# docker命令會把指令發送給指定的machine,默認是本機,可通過docker-machine env 虛擬機
docker build -t friendlyname .  # Create image using this directory's Dockerfile
# 注冊image到machine的image注冊表
docker run -p 4000:80 friendlyname  # Run "friendlyname" mapping port 4000 to 80
docker run -d -p 4000:80 friendlyname         # Same thing, but in detached mode
# 運行image,以container形式
docker container ls                                # List all running containers
docker container ls -a             # List all containers, even those not running
docker container stop <hash>           # Gracefully stop the specified container
docker container kill <hash>         # Force shutdown of the specified container
docker container rm <hash>        # Remove specified container from this machine
docker container rm $(docker container ls -a -q)         # Remove all containers
docker image ls -a                             # List all images on this machine
docker image rm <image id>            # Remove specified image from this machine
docker image rm $(docker image ls -a -q)   # Remove all images from this machine
# 刪除image需要停止相關的container
docker login             # Log in this CLI session using your Docker credentials
docker tag <image> username/repository:tag  # Tag <image> for upload to registry
# 標記image
docker push username/repository:tag            # Upload tagged image to registry
# 將標記的image發布到Docker賬號/存儲庫
docker run -p 4000:80 username/repository:tag                   # Run image from a registry
服務器端口:服務端口

Service

#########################  docker-compose.yml  #########################
version: "3"
services:
  web:
    # replace username/repo:tag with your name and image details
    image: username/repository:tag
    deploy:
      replicas: 5
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - "80:80"
    networks:
      - webnet
networks:
  webnet:
# 從注冊表中拉出上傳的圖像。
# 運行該映像的5個實例作為調用的服務web,限制每個實例使用,最多使用10%的CPU(跨所有內核)和50MB的RAM。
# 如果發生故障,立即重新啟動容器。
# 將主機上的端口80映射到web80端口。
# 指示web容器通過稱為負載平衡網絡共享端口80 webnet。(在內部,集裝箱本身將web在短暫的港口發布到 80號港口。)
# webnet使用默認設置(這是一個負載平衡的覆蓋網絡)來定義網絡。

以service啟動

docker-compose up
$ docker-compose ps
WARNING: Some services (visualizer, web) use the 'deploy' key, which will be ignored. Compose does not support 'deploy' configuration - use `docker stack deploy` to deploy to a swarm.
      Name             Command      State           Ports          
------------------------------------------------------------------
new2_visualizer_1   npm start       Up      0.0.0.0:8083->8080/tcp 
new2_web_1          python app.py   Up      0.0.0.0:4003->80/tcp

 以stack啟動

docker stack ls                                            # List stacks or apps
docker swarm init
docker stack deploy -c docker-compose.yml getstartedlab  # Run the specified Compose file
docker service ls                          # List running services associated with an app
docker service ps getstartedlab_web     # List tasks associated with an app
curl 192.168.2.249
docker stack rm getstartedlab      # Tear down an application
docker swarm leave --force      # Take down the swarm
            
docker inspect <task or container>                   # Inspect task or container
docker container ls -q                                      # List container IDs

Swarms

docker-machine create --driver virtualbox myvm1 # Create a VM (Mac, Win7, Linux)
docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm1 # Win10
docker-machine create --engine-insecure-registry 192.168.1.112:5000 x-node1
dicker-machine ls
NAME       ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS
x-master   *        virtualbox   Running   tcp://192.168.99.131:2376           v17.09.0-ce   
x-node1    -        virtualbox   Running   tcp://192.168.99.132:2376           v17.09.0-ce
docker-machine env x-master                # View basic information about your node
docker-machine ssh x-master "docker swarm init --advertise-addr <x-master ip>"
docker-machine ssh x-master "docker node ls"         # List the nodes in your swarm
docker-machine ssh x-master "docker swarm join-token manager"
docker-machine ssh x-node1 "docker swarm join --token SWMTKN-1-1mw72ip89hsz351lbbhvuj97nj4x5q5vs6zk1zidtcs093isvq-7y6kwg6emzyhokesi7zn7d1qt 192.168.99.131:2377"
docker-machine ssh x-master "docker node ls"         # List the nodes in your swarm
docker stack deploy -c docker-compose.yml getstartedlab # swarms開啟service
docker stack ps getstartedlab
curl 192.168.2.249
curl 192.168.99.131
curl 192.168.99.132
docker stack rm getstartedlab

Stacks

#########################  docker-compose.yml  #########################
version: "3"
services:
  web:
    # replace username/repo:tag with your name and image details
    image: username/repo:tag
    deploy:
      replicas: 5
      restart_policy:
        condition: on-failure
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
    ports:
      - "80:80"
    networks:
      - webnet
  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - "8080:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints: [node.role == manager]
    networks:
      - webnet
networks:
  webnet:
# 增加stack的service

到此,關于“Docker service啟動的方法是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

神农架林区| 芜湖县| 邵阳县| 祥云县| 治县。| 永兴县| 龙南县| 土默特右旗| 宁德市| 黑龙江省| 长治县| 黔西| 晋江市| 任丘市| 白玉县| 清河县| 桐庐县| 绥德县| 盐山县| 固阳县| 兴和县| 淮安市| 鱼台县| 阜平县| 耿马| 延吉市| 都匀市| 龙州县| 招远市| 江山市| 垦利县| 和龙市| 时尚| 晋宁县| 锡林浩特市| 唐河县| 静海县| 青铜峡市| 永仁县| 凉城县| 石渠县|