亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

directory search
Compose About versions and upgrading (Compose) ASP.NET Core + SQL Server on Linux (Compose) CLI environment variables (Compose) Command-line completion (Compose) Compose(組成) Compose command-line reference(組合命令行參考) Control startup order (Compose) Django and PostgreSQL (Compose) Docker stacks and distributed application bundles (Compose) docker-compose build(docker-compose構(gòu)建) docker-compose bundle docker-compose config docker-compose create docker-compose down docker-compose events docker-compose exec docker-compose help docker-compose images docker-compose kill docker-compose logs docker-compose pause docker-compose port docker-compose ps docker-compose pull docker-compose push docker-compose restart docker-compose rm docker-compose run docker-compose scale docker-compose start docker-compose stop docker-compose top docker-compose unpause docker-compose up Environment file (Compose) Environment variables in Compose Extend services in Compose Frequently asked questions (Compose) Getting started (Compose) Install Compose Link environment variables (deprecated) (Compose) Networking in Compose Overview of Docker Compose Overview of docker-compose CLI Quickstart: Compose and WordPress Rails and PostgreSQL (Compose) Sample apps with Compose Using Compose in production Using Compose with Swarm Engine .NET Core application (Engine) About images, containers, and storage drivers (Engine) Add nodes to the swarm (Engine) Apply custom metadata (Engine) Apply rolling updates (Engine) apt-cacher-ng Best practices for writing Dockerfiles (Engine) Binaries (Engine) Bind container ports to the host (Engine) Breaking changes (Engine) Build your own bridge (Engine) Configure container DNS (Engine) Configure container DNS in user-defined networks (Engine) CouchDB (Engine) Create a base image (Engine) Create a swarm (Engine) Customize the docker0 bridge (Engine) Debian (Engine) Default bridge network Delete the service (Engine) Deploy a service (Engine) Deploy services to a swarm (Engine) Deprecated Engine features Docker container networking (Engine) Docker overview (Engine) Docker run reference (Engine) Dockerfile reference (Engine) Dockerize an application Drain a node (Engine) Engine FAQ (Engine) Fedora (Engine) Get started (Engine) Get started with macvlan network driver (Engine) Get started with multi-host networking (Engine) How nodes work (Engine) How services work (Engine) Image management (Engine) Inspect the service (Engine) Install Docker (Engine) IPv6 with Docker (Engine) Join nodes to a swarm (Engine) Legacy container links (Engine) Lock your swarm (Engine) Manage nodes in a swarm (Engine) Manage sensitive data with Docker secrets (Engine) Manage swarm security with PKI (Engine) Manage swarm service networks (Engine) Migrate to Engine 1.10 Optional Linux post-installation steps (Engine) Overview (Engine) PostgreSQL (Engine) Raft consensus in swarm mode (Engine) Riak (Engine) Run Docker Engine in swarm mode Scale the service (Engine) SDKs (Engine) Select a storage driver (Engine) Set up for the tutorial (Engine) SSHd (Engine) Storage driver overview (Engine) Store service configuration data (Engine) Swarm administration guide (Engine) Swarm mode key concepts (Engine) Swarm mode overlay network security model (Engine) Swarm mode overview (Engine) Understand container communication (Engine) Use multi-stage builds (Engine) Use swarm mode routing mesh (Engine) Use the AUFS storage driver (Engine) Use the Btrfs storage driver (Engine) Use the Device mapper storage driver (Engine) Use the OverlayFS storage driver (Engine) Use the VFS storage driver (Engine) Use the ZFS storage driver (Engine) Engine: Admin Guide Amazon CloudWatch logs logging driver (Engine) Bind mounts (Engine) Collect Docker metrics with Prometheus (Engine) Configuring and running Docker (Engine) Configuring logging drivers (Engine) Control and configure Docker with systemd (Engine) ETW logging driver (Engine) Fluentd logging driver (Engine) Format command and log output (Engine) Google Cloud logging driver (Engine) Graylog Extended Format (GELF) logging driver (Engine) Journald logging driver (Engine) JSON File logging driver (Engine) Keep containers alive during daemon downtime (Engine) Limit a container's resources (Engine) Link via an ambassador container (Engine) Log tags for logging driver (Engine) Logentries logging driver (Engine) PowerShell DSC usage (Engine) Prune unused Docker objects (Engine) Run multiple services in a container (Engine) Runtime metrics (Engine) Splunk logging driver (Engine) Start containers automatically (Engine) Storage overview (Engine) Syslog logging driver (Engine) tmpfs mounts Troubleshoot volume problems (Engine) Use a logging driver plugin (Engine) Using Ansible (Engine) Using Chef (Engine) Using Puppet (Engine) View a container's logs (Engine) Volumes (Engine) Engine: CLI Daemon CLI reference (dockerd) (Engine) docker docker attach docker build docker checkpoint docker checkpoint create docker checkpoint ls docker checkpoint rm docker commit docker config docker config create docker config inspect docker config ls docker config rm docker container docker container attach docker container commit docker container cp docker container create docker container diff docker container exec docker container export docker container inspect docker container kill docker container logs docker container ls docker container pause docker container port docker container prune docker container rename docker container restart docker container rm docker container run docker container start docker container stats docker container stop docker container top docker container unpause docker container update docker container wait docker cp docker create docker deploy docker diff docker events docker exec docker export docker history docker image docker image build docker image history docker image import docker image inspect docker image load docker image ls docker image prune docker image pull docker image push docker image rm docker image save docker image tag docker images docker import docker info docker inspect docker kill docker load docker login docker logout docker logs docker network docker network connect docker network create docker network disconnect docker network inspect docker network ls docker network prune docker network rm docker node docker node demote docker node inspect docker node ls docker node promote docker node ps docker node rm docker node update docker pause docker plugin docker plugin create docker plugin disable docker plugin enable docker plugin inspect docker plugin install docker plugin ls docker plugin push docker plugin rm docker plugin set docker plugin upgrade docker port docker ps docker pull docker push docker rename docker restart docker rm docker rmi docker run docker save docker search docker secret docker secret create docker secret inspect docker secret ls docker secret rm docker service docker service create docker service inspect docker service logs docker service ls docker service ps docker service rm docker service scale docker service update docker stack docker stack deploy docker stack ls docker stack ps docker stack rm docker stack services docker start docker stats docker stop docker swarm docker swarm ca docker swarm init docker swarm join docker swarm join-token docker swarm leave docker swarm unlock docker swarm unlock-key docker swarm update docker system docker system df docker system events docker system info docker system prune docker tag docker top docker unpause docker update docker version docker volume docker volume create docker volume inspect docker volume ls docker volume prune docker volume rm docker wait Use the Docker command line (Engine) Engine: Extend Access authorization plugin (Engine) Docker log driver plugins Docker network driver plugins (Engine) Extending Engine with plugins Managed plugin system (Engine) Plugin configuration (Engine) Plugins API (Engine) Volume plugins (Engine) Engine: Security AppArmor security profiles for Docker (Engine) Automation with content trust (Engine) Content trust in Docker (Engine) Delegations for content trust (Engine) Deploying Notary (Engine) Docker security (Engine) Docker security non-events (Engine) Isolate containers with a user namespace (Engine) Manage keys for content trust (Engine) Play in a content trust sandbox (Engine) Protect the Docker daemon socket (Engine) Seccomp security profiles for Docker (Engine) Secure Engine Use trusted images Using certificates for repository client verification (Engine) Engine: Tutorials Engine tutorials Network containers (Engine) Get Started Part 1: Orientation Part 2: Containers Part 3: Services Part 4: Swarms Part 5: Stacks Part 6: Deploy your app Machine Amazon Web Services (Machine) Digital Ocean (Machine) docker-machine active docker-machine config docker-machine create docker-machine env docker-machine help docker-machine inspect docker-machine ip docker-machine kill docker-machine ls docker-machine provision docker-machine regenerate-certs docker-machine restart docker-machine rm docker-machine scp docker-machine ssh docker-machine start docker-machine status docker-machine stop docker-machine upgrade docker-machine url Driver options and operating system defaults (Machine) Drivers overview (Machine) Exoscale (Machine) Generic (Machine) Get started with a local VM (Machine) Google Compute Engine (Machine) IBM Softlayer (Machine) Install Machine Machine Machine CLI overview Machine command-line completion Machine concepts and help Machine overview Microsoft Azure (Machine) Microsoft Hyper-V (Machine) Migrate from Boot2Docker to Machine OpenStack (Machine) Oracle VirtualBox (Machine) Provision AWS EC2 instances (Machine) Provision Digital Ocean Droplets (Machine) Provision hosts in the cloud (Machine) Rackspace (Machine) VMware Fusion (Machine) VMware vCloud Air (Machine) VMware vSphere (Machine) Notary Client configuration (Notary) Common Server and signer configurations (Notary) Getting started with Notary Notary changelog Notary configuration files Running a Notary service Server configuration (Notary) Signer configuration (Notary) Understand the service architecture (Notary) Use the Notary client
characters

在此頁面上,您將構(gòu)建一個在Docker Compose上運行的簡單Python Web應(yīng)用程序。該應(yīng)用程序使用Flask框架并在Redis中維護一個計數(shù)器。雖然示例使用Python,但即使您不熟悉這些概念,此處演示的概念也應(yīng)該可以理解。

先決條件

確保你已經(jīng)安裝了Docker Engine和Docker Compose。您不需要安裝Python或Redis,因為兩者都由Docker鏡像提供。

第1步:安裝

  1. 為項目創(chuàng)建一個目錄:$ mkdir composetest $ cd composetest

  2. 創(chuàng)建一個名為app.py你的項目目錄中的文件,并將其粘貼到:from flask import從redis導(dǎo)入Flask Redis app = Flask(__ name__)redis = Redis(host ='redis',port = 6379)@ app.route('/') def hello():count = redis.incr('hits')return'Hello World!\ n'.format(count)if __name__ ==“__main__”:app.run(host =“0.0.0.0”,debug = True)在本例中,redisredis的主機名容器在應(yīng)用程序的網(wǎng)絡(luò)上。我們使用Redis的默認(rèn)端口6379。

  3. requirements.txt在項目目錄中創(chuàng)建另一個文件,并將其粘貼到:flask redis

這些定義了應(yīng)用程序的依賴關(guān)系。

第2步:創(chuàng)建一個Dockerfile

在這一步中,您編寫一個Dockerfile來構(gòu)建一個Docker鏡像。該圖像包含Python應(yīng)用程序需要的所有依賴項,包括Python本身。

在您的項目目錄中,創(chuàng)建一個名為Dockerfile并粘貼以下內(nèi)容的文件:

FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]

這告訴Docker:

  • 從Python 3.4圖像開始構(gòu)建一個圖像。

  • 將當(dāng)前目錄添加./code圖像的路徑中。

  • 將工作目錄設(shè)置為/code。

  • 安裝Python依賴項。

  • 將容器的默認(rèn)命令設(shè)置為python app.py。

有關(guān)如何編寫Dockerfiles的更多信息,請參閱Docker用戶指南和Dockerfile參考。

第3步:在撰寫文件中定義服務(wù)

創(chuàng)建一個docker-compose.yml在您的項目目錄中調(diào)用的文件并粘貼以下內(nèi)容:

version: '3'services:
  web:
    build: .
    ports:     - "5000:5000"
  redis:
    image: "redis:alpine"

這個撰寫文件定義了兩個服務(wù),web并且redis。網(wǎng)絡(luò)服務(wù):

  • 使用Dockerfile當(dāng)前目錄中構(gòu)建的圖像。

  • 將容器上的暴露端口5000轉(zhuǎn)發(fā)到主機上的端口5000。我們使用Flask Web服務(wù)器的默認(rèn)端口,5000

redis服務(wù)使用從Docker Hub注冊表中提取的公共Redis映像。

第4步:使用Compose構(gòu)建和運行您的應(yīng)用程序

  1. 從您的項目目錄中,運行啟動您的應(yīng)用程序 docker-compose up。$ docker-compose up使用默認(rèn)驅(qū)動程序創(chuàng)建網(wǎng)絡(luò)“composetest_default”創(chuàng)建composetest_web_1 ...創(chuàng)建composetest_redis_1 ...創(chuàng)建composetest_web_1創(chuàng)建composetest_redis_1 ... done添加到composetest_web_1,composetest_redis_1 web_1 | *在http://0.0.0.0:5000/上運行(按CTRL + C退出)redis_1 | 1:C 17 Aug 22:11:10.480#oO0OoO0OoO0Oo Redis正在啟動oO0OoO0OoO0Oo redis_1 | 1:C 17 Aug 22:11:10.480#Redis version = 4.0.1,bits = 64,commit = 00000000,modified = 0,pid = 1,剛剛開始redis_1 | 1:C 17 Aug 22:11:10.480#警告:沒有指定配置文件,使用默認(rèn)配置。為了指定配置文件,請使用redis-server /path/to/redis.conf web_1 | *使用stat redis_1 |重新啟動 1:M 17 Aug 22:11:10.483 * Running mode = standalone,port = 6379。redis_1 | 1:M 8月17日22:11:10。483#警告:由于/ proc / sys / net / core / somaxconn設(shè)置為128的較低值,因此無法強制執(zhí)行TCP backlog設(shè)置511。*調(diào)試器處于活動狀態(tài)!redis_1 | 1:M 17 8月22日11:10.483#服務(wù)器初始化redis_1 | 1:M 17 Aug 22:11:10.483#警告您在內(nèi)核中啟用了透明巨大頁面(THP)支持。這將導(dǎo)致Redis的延遲和內(nèi)存使用問題。要解決此問題,請以root身份運行命令'echo never> / sys / kernel / mm / transparent_hugepage / enabled',并將其添加到您的/etc/rc.local中,以便在重新啟動后保留設(shè)置。必須在禁用THP后重新啟動Redis。web_1 | *調(diào)試器PIN:330-787-903 redis_1 | 1:M 8月22日:11:10.483 *準(zhǔn)備接受連接撰寫拉一個Redis圖像,為您的代碼建立一個圖像,并啟動您定義的服務(wù)。在這種情況下,

  2. http://0.0.0.0:5000/在瀏覽器中輸入以查看應(yīng)用程序正在運行。如果您在Linux,Docker for Mac或Docker本地使用Docker,則Web應(yīng)用程序現(xiàn)在應(yīng)該在Docker守護程序主機上的端口5000上偵聽。指向您的網(wǎng)絡(luò)瀏覽器http://localhost:5000以查找Hello World消息。如果這不解決,你也可以嘗試http://0.0.0.0:5000。如果您在Mac上使用Docker Machine,請使用docker-machine ip MACHINE_VM獲取Docker主機的IP地址。然后,http://MACHINE_VM_IP:5000在瀏覽器中打開。您應(yīng)該在瀏覽器中看到一條消息:Hello World!我已經(jīng)看過1次了。

  1. 刷新頁面。數(shù)字應(yīng)該增加。你好,世界!我已經(jīng)看過2次了。

  1. 切換到另一個終端窗口,然后鍵入docker image ls以列出本地圖像。此時列出圖片應(yīng)返回redisweb。$ docker image ls REPOSITORY TAG IMAGE ID創(chuàng)建大小composetest_web最新e2c21aa48cc1 4分鐘前93.8MB python 3.4-alpine 84e6077c7ab6 7天前82.5MB redis alpine 9d8fa9aa0e5b 3周前27.5MB您可以使用圖像檢查圖像docker inspect <tag or id>。

  2. 停止應(yīng)用程序,可以docker-compose down從第二個終端的項目目錄中運行,或者在啟動應(yīng)用程序的原始終端中按CTRL + C。

第5步:編輯Compose文件以添加綁定安裝

docker-compose.yml在您的項目目錄中編輯以添加服務(wù)的綁定掛載web

version: '3'services:
  web:
    build: .
    ports:     - "5000:5000"
    volumes:     - .:/code
  redis:
    image: "redis:alpine"

volumes鍵將主機上的項目目錄(當(dāng)前目錄)裝載到/code容器中,允許您即時修改代碼,而無需重新生成映像。

第6步:使用Compose重新構(gòu)建并運行應(yīng)用程序

從您的項目目錄中鍵入docker-compose up以使用更新的撰寫文件構(gòu)建應(yīng)用程序,然后運行它。

$ docker-compose up
Creating network "composetest_default" with the default driver
Creating composetest_web_1 ...Creating composetest_redis_1 ...Creating composetest_web_1
Creating composetest_redis_1 ... done
Attaching to composetest_web_1, composetest_redis_1
web_1    |  * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)...

Hello World再次查看Web瀏覽器中的消息,然后刷新以查看計數(shù)增量。

Shared folders, volumes, and bind mounts

  • 如果您的項目位于Users目錄(cd ~)外部,那么您需要共享您正在使用的Dockerfile和卷的驅(qū)動器或位置。如果您收到運行時錯誤,指示找不到應(yīng)用程序文件,卷掛載被拒絕或服務(wù)無法啟動,請嘗試啟用文件或驅(qū)動器共享。批量安裝需要共享驅(qū)動器用于C:\Users(Windows)或/Users(Mac)以外的項目,并且對于使用Linux容器的 Docker for Windows上的任何項目都需要共享驅(qū)動器。有關(guān)更多信息,請參閱Docker for Windows上的共享驅(qū)動器,Docker for Mac上的文件共享以及有關(guān)如何管理容器中的數(shù)據(jù)的一般示例。

  • 如果您在較舊的Windows操作系統(tǒng)上使用Oracle VirtualBox,則可能會遇到如本VB故障單中所述的共享文件夾問題。較新的Windows系統(tǒng)滿足Docker for Windows的要求,并且不需要VirtualBox。

第7步:更新應(yīng)用程序

由于應(yīng)用程序代碼現(xiàn)在使用卷裝載到容器中,因此您可以更改代碼并立即查看更改,而無需重新構(gòu)建映像。

  1. 更改問候語app.py并保存。例如,將Hello World!消息更改為Hello from Docker!:return'來自Docker的Hello!我已看過{}次。\ n'.format(count)

  2. 刷新瀏覽器中的應(yīng)用程序。問候應(yīng)該更新,并且柜臺應(yīng)該仍然在遞增。

第8步:嘗試其他一些命令

如果你想在后臺運行你的服務(wù),你可以將-d標(biāo)志(用于“分離”模式)傳遞給docker-compose up并用于docker-compose ps查看當(dāng)前正在運行的內(nèi)容:

$ docker-compose up -d
Starting composetest_redis_1...Starting composetest_web_1...$ docker-compose ps
Name                 Command            State       Ports
-------------------------------------------------------------------
composetest_redis_1   /usr/local/bin/run         Up
composetest_web_1     /bin/sh -c python app.py   Up      5000->5000/tcp

docker-compose run命令允許您為您的服務(wù)運行一次性命令。例如,要查看哪些環(huán)境變量可用于該web服務(wù):

$ docker-compose run web env

請參閱docker-compose --help查看其他可用的命令。您還可以安裝bash和zsh shell的命令補全,它還會顯示可用的命令。

如果您開始使用撰寫作品docker-compose up -d,則可能需要在完成后與其停用服務(wù):

$ docker-compose stop

你可以把所有東西都拿下來,用down命令徹底清除容器。通過--volumes也可以刪除Redis容器使用的數(shù)據(jù)量:

$ docker-compose down --volumes

在這一點上,你已經(jīng)看到了Compose如何工作的基礎(chǔ)知識。

下一步去哪里

  • 接下來,請嘗試Django,Rails或WordPress的快速入門指南

  • 瀏覽Compose命令的完整列表

  • 撰寫配置文件參考

  • 要了解有關(guān)卷和綁定掛載的更多信息,請參閱管理Docker中的數(shù)據(jù)

Previous article: Next article: