这篇文章主要介绍“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启动的方法是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/charlock/blog/1545359