您好,登錄后才能下訂單哦!
這篇文章主要介紹“Docker service啟動的方法是什么”,在日常操作中,相信很多人在Docker service啟動的方法是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Docker service啟動的方法是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
######################### 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 服務器端口:服務端口
######################### 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
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
######################### 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啟動的方法是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。