Docker 系列02-docker常用命令

栏目: 编程工具 · 发布时间: 6年前

内容简介:定义一个Dockerfile文件构建镜像启动镜像,并且映射本地4000到容器端口80

Docker 系列02-docker常用命令

Dockerfile

定义一个Dockerfile文件

# 将官方  Python  运行时用作父镜像
FROM python:2.7-slim

# 将工作目录设置为 /app
WORKDIR /app

# 将当前目录内容复制到位于 /app 中的容器中
ADD . /app

# 安装 requirements.txt 中指定的任何所需软件包
RUN pip install -r requirements.txt

# 使端口 80 可供此容器外的环境使用
EXPOSE 80

# 定义环境变量
ENV NAME World

# 在容器启动时运行 app.py
CMD ["python", "app.py"]

构建镜像

docker build -t friendlyname .

启动镜像,并且映射本地4000到容器端口80

docker run -p 4000:80 friendlyname

后台方式启动镜像

docker run -d -p 4000:80 friendlyname

查看所有正在运行的容器的列表

docker ps

停止指定的容器

docker stop <hash>

查看所有容器的列表

docker ps -a

强制关闭指定的容器

docker kill <hash>

删除指定的容器

docker rm <hash>

删除所有容器

docker rm $(docker ps -a -q)

显示所有镜像

docker images -a

删除指定的镜像

docker rmi <imagename>

删除所有镜像

docker rmi $(docker images -q)

登录docker

docker login

镜像打标签

docker tag <image> username/repository:tag

将打完标签的镜像上传

docker push username/repository:tag

swarm

定义一个docker-compose.yml

version: "3.1"
services:
  web:
    image: username/rep:tag
    deploy:
      replicas: 4
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - "80:80"
    networks:
      - webnet
networks:
  webnet:

初始话swarm管理节点

docker swarm init

列出此 Docker 主机上所有正在运行的应用

docker stack ls

运行指定的 Compose 文件

docker stack deploy -c <composefile> <appname>

列出与应用关联的服务

docker stack services <appname>

列出与应用关联的正在运行的容器

docker stack ps <appname>

清除应用

docker stack rm <appname>                             #

swarm集群

swarm 是一组运行 Docker 并且已加入集群中的机器。执行此操作后,您可以继续运行已使用的 Docker 命令,但现在它们在集群上由 swarm 管理节点执行。 swarm 中的机器可以为物理或虚拟机。加入 swarm 后,可以将它们称为节点。

swarm 管理节点可以使用多项策略来运行容器,例如“最空的节点”– 这将使用容器填充使用最少的机器。或“全局”,这将确保每台机器恰好获得指定容器的一个实例。您可以指示 swarm 管理节点使用 Compose 文件中的这些策略,就像您已使用的策略一样。

swarm 管理节点是 swarm 中可以执行命令或授权其他机器加入 swarm 作为工作节点的唯一机器。工作节点仅用于提供功能,并且无权告知任何其他机器它可以做什么和不能做什么。

到目前为止,您已在本地机器上以单主机模式使用 Docker。但是,也可以将 Docker 切换到 swarm mode,并且这可以实现 swarm 的使用。即时启用 swarm mode 可以使当前机器成为 swarm 管理节点。从那时起,Docker 将在您要管理的 swarm 上运行您执行的命令,而不是仅在当前机器上执行命令。

创建 VM(Mac、Win7、Linux)

docker-machine create --driver virtualbox myvm1

创建 VM (Win10)

docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm1

查看有关节点的基本信息

docker-machine env myvm1

列出 swarm 中的节点

docker-machine ssh myvm1 "docker node ls"

检查节点

docker-machine ssh myvm1 "docker node inspect <node ID>"

查看加入令牌

docker-machine ssh myvm1 "docker swarm join-token -q worker"

打开与 VM 的 SSH 会话;输入“exit”以结束会话

docker-machine ssh myvm1

使工作节点退出 swarm

docker-machine ssh myvm2 "docker swarm leave"

使主节点退出,终止 swarm

docker-machine ssh myvm1 "docker swarm leave -f"

启动当前未运行的 VM

docker-machine start myvm1

停止所有正在运行的 VM

docker-machine stop $(docker-machine ls -q)

删除所有 VM 及其磁盘镜像

docker-machine rm $(docker-machine ls -q)

将文件复制到节点的主目录

docker-machine scp docker-compose.yml myvm1:~

部署应用

docker-machine ssh myvm1 "docker stack deploy -c <file> <app>"

docker 网络配置

列出所有网络

docker network ls

通过网络查找容器ip地址

docker network inspect bridge

通过断开容器来从网络中删除容器

docker network disconnect bridge <dockername>

创建自定义桥接网络

docker network create -d bridge my_bridge

指定容器使用的网络

docker  run -d --net=my_bridge --name db training/postgres

查看容器连接位置

docker inspect --format=''  db

获取容器ip地址

docker inspect --format='' db

连接容器网络

docker network connect my_bridge db

docker 数据卷

添加数据卷

docker run -d -P --name web -v /webapp training/webapp python app.py

在容器内创建一个新卷/webapp

查看数据卷

docker inspect web

Source指定主机上的位置并 Destination指定容器内的卷位置。RW显示卷是否为读/写。

将主机目录挂在为数据卷

docer run -d -P --name web -v /src/webapp:/webapp training/webapp python app.py

主机目录/src/webapp,容器目录/webapp;container-dir必须始终是绝对路径

查找空闲卷

docker volume ls -f dangling=true

删除卷

docker volume rm <volume name>

备份,还原或迁移数据卷

docker run --rm --volumes-from dbstore -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata

docker run -v /dbdata --name dbstore2 ubuntu /bin/bash

docker run --rm --volumes-from dbstore2 -v $(pwd):/backup ubuntu bash -c "cd /dbdata && tar xvf /backup/backup.tar --strip 1"

删除所有未使用的卷

docker volume prune

参考


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Ruby Cookbook

Ruby Cookbook

Lucas Carlson、Leonard Richardson / O'Reilly Media / 2006-7-29 / USD 49.99

Do you want to push Ruby to its limits? The "Ruby Cookbook" is the most comprehensive problem-solving guide to today's hottest programming language. It gives you hundreds of solutions to real-world pr......一起来看看 《Ruby Cookbook》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具