赞
踩
Docker 包括三个基本概念:
镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。
Docker安装环境
[root@server ~]# cat /etc/redhat-release Red Hat Enterprise Linux release 8.2 (Ootpa)
1、卸载旧版本,如果虚拟机上没有安装过则不需要卸载。
[root@server ~]# sudo yum remove docker \ > docker-client \ > docker-client-latest \ > docker-common \ > docker-latest \ > docker-latest-logrotate \ > docker-logrotate \ > docker-engine
2、首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。
[root@server ~]# sudo yum install -y yum-utils \ > device-mapper-persistent-data \ > lvm2
3、使用阿里云镜像站来下载文件。
[root@server ~]# sudo yum-config-manager \ > --add-repo \ > https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo Adding repo from: https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
4、安装最新版本的 Docker Engine-Community 。
[root@server ~]# sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
5、开启Docker服务。
[root@server ~]# systemctl start docker [root@server ~]# docker version #查看Docker版本号 Client: Docker Engine - Community Version: 24.0.6 API version: 1.43 Go version: go1.20.7 Git commit: ed223bc Built: Mon Sep 4 12:33:07 2023 OS/Arch: linux/amd64 Context: default Server: Docker Engine - Community Engine: Version: 24.0.6 API version: 1.43 (minimum version 1.12) Go version: go1.20.7 Git commit: 1a79695 Built: Mon Sep 4 12:32:10 2023 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.6.24 GitCommit: 61f9fd88f79f081d64d6fa3bb1a0dc71ec870523 runc: Version: 1.1.9 GitCommit: v1.1.9-0-gccaecfc docker-init: Version: 0.19.0 GitCommit: de40ad0
6、通过运行 hello-world 镜像来验证是否正确安装了 Docker Engine-Community 。
[root@server ~]# docker run hello-world
# 显示以下内容表示安装成功: Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
8、查看本机存在那些docker镜像
[root@server ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest 9c7a54a9a43c 4 months ago 13.3kB
[root@server ~]# docker stats --help # 在docker容器中stats命令的帮助查看 [root@server ~]# docker pull ubuntu # 获取镜像 [root@server ~]# docker run -it ubuntu /bin/bash # 启动镜像 -i: 交互式操作。 -t: 终端。 ubuntu: ubuntu 镜像。 /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。 注:使用exit退出 [root@server ~]# docker ps -a #查看所有容器的命令 [root@server ~]# docker start <容器 ID> # 开启容器 [root@server ~]# docker stop <容器 ID> # 停止容器 [root@server ~]# docker restart <容器 ID> # 重启容器 [root@server ~]# docker attach <容器 ID> # 进入容器 这一种方法在退出后容器终止 [root@server ~]# docker exec -it <容器 ID> /bin/bash # 进入容器 这一种方法在退出后容器不会终止 [root@server ~]# docker export <容器 ID> > ubuntu.tar #把容器导出本地文件中 [root@server ~]# docker import http://example.com/exampleimage.tgz example/imagerepo # 导入文件 [root@server ~]# docker rm -f <容器 ID> # 删除文件
运行一个web应用程序
[root@server ~]# docker pull training/webapp # 载入镜像 [root@server ~]# docker run -d -P training/webapp python app.py # 在docker容器中运行一个 Python Flask 应用来运行一个web应用 # -d:让容器在后台运行。 # -P:将容器内部使用的网络端口随机映射到我们使用的主机上。 [root@server ~]# docker ps # 查看正在运行的程序 [root@server ~]# docker logs -f <容器 ID> # 查看运行的web程序日志 [root@server ~]# docker port <容器 ID> # 查看运行的容器端口 [root@server ~]# docker port <容器 name> # 查看运行的容器端口 [root@server ~]# docker top <容器 name> # 查看容器的进程 [root@server ~]# docker inspect <容器 name> # 查看容器的代码
[root@server ~]# docker images # 列出镜像列表 REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 14.04 90d5884b1ee0 5 days ago 188 MB php 5.6 f40e9e0f10c8 9 days ago 444.8 MB nginx latest 6f8d099c3adc 12 days ago 182.7 MB mysql 5.6 f2e8d6c772c0 3 weeks ago 324.6 MB REPOSITORY:表示镜像的仓库源 TAG:镜像的标签 IMAGE ID:镜像ID CREATED:镜像创建时间 SIZE:镜像大小 注意:同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如 ubuntu 仓库源里,有 15.10、14.04 等多个不同的版本 [root@server ~]# docker run -t -i ubuntu:15.10 /bin/bash #使用版本为15.10的ubuntu系统镜像来运行容器 -i: 交互式操作。 -t: 终端。 [root@server ~]# docker pull ubuntu:13.10 # 获得一个镜像 [root@server ~]# docker search httpd # 查找httpd服务的镜像 [root@server ~]# docker search httpd NAME DESCRIPTION STARS OFFICIAL AUTOMATED httpd The Apache HTTP Server Project 4548 [OK] clearlinux/httpd httpd HyperText Transfer Protocol (HTTP) ser… 5 paketobuildpacks/httpd 0 vulhub/httpd 0 jitesoft/httpd Apache httpd on Alpine linux. 0 openquantumsafe/httpd Demo of post-quantum cryptography in Apache … 0 wodby/httpd 0 avenga/httpd-static 0 dockette/httpdump 0 betterweb/httpd 0 # NAME: 镜像仓库源的名称 # DESCRIPTION: 镜像的描述 # OFFICIAL: 是否 docker 官方发布 # stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。 # AUTOMATED: 自动构建。
Docker容器镜像的简单使用
[root@server ~]# docker pull httpd # 拖取镜像 [root@server ~]# docker run httpd # 运行镜像 [root@server ~]# docker rmi hello-world # 删除镜像
创建镜像:
1、从已经创建的容器中更新镜像使用
2、使用 Dockerfile 指令来创建一个新的镜像
方法1: [root@server ~]# docker run -t -i ubuntu:15.10 /bin/bash root@e218edb10161:/# apt-get update [root@server ~]#docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2 # 容器ID -m: 提交的描述信息 -a: 指定镜像作者 e218edb10161:容器 ID runoob/ubuntu:v2: 指定要创建的目标镜像名 测试: [root@server ~]# docker images # 查看是否有新创建的容器 方法2: 1、创建一个 Dockerfile 文件 [root@server ~]# cat Dockerfile # 查看创建改文件中的内容 FROM centos:6.7 MAINTAINER Fisher "fisher@sudops.com" RUN /bin/echo 'root:123456' |chpasswd RUN useradd runoob RUN /bin/echo 'runoob:123456' |chpasswd RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local EXPOSE 22 EXPOSE 80 CMD /usr/sbin/sshd -D [root@server ~]# docker build -t runoob/centos:6.7 . # 构建一个centos:6.7的镜像 -t :指定要创建的目标镜像名 . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径 [root@server ~]# docker images # 查看镜像是否存在 [root@server ~]# docker tag 860c279d2fec runoob/centos:dev # 镜像ID 用户名称/镜像源名 :新的标签名
网络端口映射:
[root@server ~]# docker run -d -P training/webapp python app.py # -P 绑定端口号 [root@server ~]# docker run -d -p 5000:5000 training/webapp python app.py cbadc179dc6a9223d52e08a45f5c0e7421f939bb557482c7d24b1596c04dd12e [root@server ~]# docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py e972f504bd63180452e7fb9332b110fed1beaa222643eb50e69a7866d985c1b2 # -P :是容器内部端口随机映射到主机的端口。 # -p : 是容器内部端口绑定到指定的主机端口。 [root@server ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e972f504bd63 training/webapp "python app.py" 8 seconds ago Up 6 seconds 5000/tcp, 127.0.0.1:5000->5000/udp distracted_mclean b92c6226a4e8 training/webapp "python app.py" 39 seconds ago Up 37 seconds 127.0.0.1:5001->5000/tcp xenodochial_ride cbadc179dc6a training/webapp "python app.py" About a minute ago Up About a minute 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp friendly_jones 1a105bc3d4e0 training/webapp "python app.py" 2 minutes ago Up 2 minutes 0.0.0.0:32768->5000/tcp, :::32768->5000/tcp youthful_tesla [root@server ~]# docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py # 绑定UDP端口,默认是TCP端口 [root@server ~]# port adoring_stonebraker 5000 # 快速查看端口绑定情况
容器互联:docker 有一个连接系统允许将多个容器连接在一起,共享连接信息。docker 连接会创建一个父子关系,其中父容器可以看到子容器的信息。
[root@server ~]# run -d -P --name runoob training/webapp python app.py # 容器命名 [root@server ~]# docker network create -d bridge test-net # 新建网络 -d:参数指定 Docker 网络类型,有 bridge、overlay。 [root@server ~]# docker run -itd --name test1 --network test-net ubuntu /bin/bash # 运行容器连接新的网络 [root@server ~]# docker run -itd --name test2 --network test-net ubuntu /bin/bash # 运行另一个容器连接新的网络 [root@server ~]# docker exec -it test1 /bin/bash # 进入容器 root@1a6fd3336011:/# apt-get update root@1a6fd3336011:/# apt install iputils-ping root@1a6fd3336011:/# ping test2 PING test2 (172.18.0.3) 56(84) bytes of data. 64 bytes from test2.test-net (172.18.0.3): icmp_seq=1 ttl=64 time=0.107 ms 64 bytes from test2.test-net (172.18.0.3): icmp_seq=2 ttl=64 time=0.070 ms 64 bytes from test2.test-net (172.18.0.3): icmp_seq=3 ttl=64 time=0.072 ms 64 bytes from test2.test-net (172.18.0.3): icmp_seq=4 ttl=64 time=0.072 ms 64 bytes from test2.test-net (172.18.0.3): icmp_seq=5 ttl=64 time=0.072 ms root@1a6fd3336011:/# exit
仓库(Repository)是集中存放镜像的地方。目前 Docker 官方维护了一个公共仓库 Docker Hub,大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。
[root@server ~]# docker login # 登录Docker仓库 Username: test Password: [root@server ~]# docker login # 退出Docker仓库 [root@server ~]# docker search ubuntu # 拉取镜像 [root@server ~]# docker pull ubuntu # 下载镜像 [root@server ~]# docker push username/ubuntu:18.04 # 将自己的镜像推送到Docker Hub中 # 你自己申请的Docker账号
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
[root@server ~]# mkdir Dockerfile [root@server ~]# cd Dockerfile/ [root@server Dockerfile]# vim Dockerfile [root@server Dockerfile]# cat /root/Dockerfile/Dockerfile FROM nginx RUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html FROM:定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。 RUN:用于执行后面跟着的命令行命令。有以下俩种格式: shell 格式: RUN <命令行命令> # <命令行命令> 等同于,在终端操作的 shell 命令。 exec 格式: RUN ["可执行文件", "参数1", "参数2"] # 例如: # RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test.php dev offline
开始构建Docker
[root@server Dockerfile]# docker build -t nginx:v3 .
以下表示构建成功:
[root@server Dockerfile]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx v3 c50cb8e20f05 3 minutes ago 187MB
上下文路径:是指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。
Dockerfile 指令 | 说明 |
---|---|
FROM | 指定基础镜像,用于后续的指令构建。 |
MAINTAINER | 指定Dockerfile的作者/维护者。(已弃用,推荐使用LABEL指令) |
LABEL | 添加镜像的元数据,使用键值对的形式。 |
RUN | 在构建过程中在镜像中执行命令。 |
CMD | 指定容器创建时的默认命令。(可以被覆盖) |
ENTRYPOINT | 设置容器创建时的主要命令。(不可被覆盖) |
EXPOSE | 声明容器运行时监听的特定网络端口。 |
ENV | 在容器内部设置环境变量。 |
ADD | 将文件、目录或远程URL复制到镜像中。 |
COPY | 将文件或目录复制到镜像中。 |
VOLUME | 为容器创建挂载点或声明卷。 |
WORKDIR | 设置后续指令的工作目录。 |
USER | 指定后续指令的用户上下文。 |
ARG | 定义在构建过程中传递给构建器的变量,可使用 "docker build" 命令设置。 |
ONBUILD | 当该镜像被用作另一个构建过程的基础时,添加触发器。 |
STOPSIGNAL | 设置发送给容器以退出的系统调用信号。 |
HEALTHCHECK | 定义周期性检查容器健康状态的命令。 |
SHELL | 覆盖Docker中默认的shell,用于RUN、CMD和ENTRYPOINT指令。 |
复制指令,从上下文目录中复制文件或者目录到容器里指定路径。
格式:
COPY [--chown=<user>:<group>] <源路径1>... <目标路径> COPY [--chown=<user>:<group>] ["<源路径1>",... "<目标路径>"]
[--chown=:]:可选参数,用户改变复制到容器内文件的拥有者和属组。
<源路径>:源文件或者源目录,这里可以是通配符表达式,其通配符规则要满足 Go 的 filepath.Match 规则。例如:
COPY hom* /mydir/ COPY hom?.txt /mydir/
<目标路径>:容器内的指定路径,该路径不用事先建好,路径不存在的话,会自动创建。
ADD 指令和 COPY 的使用格类似(同样需求下,官方推荐使用 COPY)。功能也类似,不同之处如下:
ADD 的优点:在执行 <源文件> 为 tar 压缩文件的话,压缩格式为 gzip, bzip2 以及 xz 的情况下,会自动复制并解压到 <目标路径>。
ADD 的缺点:在不解压的前提下,无法复制 tar 压缩文件。会令镜像构建缓存失效,从而可能会令镜像构建变得比较缓慢。具体是否使用,可以根据是否需要自动解压来决定。
类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:
CMD 在docker run 时运行。
RUN 是在 docker build。
作用:为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。
注意:如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。
格式:
CMD <shell 命令> CMD ["<可执行文件或命令>","<param1>","<param2>",...] CMD ["<param1>","<param2>",...] # 该写法是为 ENTRYPOINT 指令指定的程序提供默认参数
推荐使用第二种格式,执行过程比较明确。第一种格式实际上在运行的过程中也会自动转换成第二种格式运行,并且默认可执行文件是 sh。
类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。
但是, 如果运行 docker run 时使用了 --entrypoint 选项,将覆盖 ENTRYPOINT 指令指定的程序。
优点:在执行 docker run 的时候可以指定 ENTRYPOINT 运行所需的参数。
注意:如果 Dockerfile 中如果存在多个 ENTRYPOINT 指令,仅最后一个生效。
格式:
ENTRYPOINT ["<executeable>","<param1>","<param2>",...]
示例:
[root@server ~]# vim /root/Dockerfile/Dockerfile FROM nginx ENTRYPOINT ["nginx", "-c"] # 定参 CMD ["/etc/nginx/nginx.conf"] # 变参 [root@server ~]# cd /root/Dockerfile/ [root@server Dockerfile]# docker build -t nginx:test .
[root@server Dockerfile]# docker run nginx:test # 不传参运行 2023/09/22 08:31:16 [notice] 1#1: using the "epoll" event method 2023/09/22 08:31:16 [notice] 1#1: nginx/1.25.2 2023/09/22 08:31:16 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14) 2023/09/22 08:31:16 [notice] 1#1: OS: Linux 4.18.0-193.el8.x86_64 2023/09/22 08:31:16 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
设置环境变量,定义了环境变量,那么在后续的指令中,就可以使用这个环境变量。
格式:
ENV <key> <value> ENV <key1>=<value1> <key2>=<value2>...
以下示例设置 NODE_VERSION = 7.2.0 , 在后续的指令中可以通过 $NODE_VERSION 引用:
ENV NODE_VERSION 7.2.0 RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \ && curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc"
构建参数,与 ENV 作用一致。不过作用域不一样。ARG 设置的环境变量仅对 Dockerfile 内有效,也就是说只有 docker build 的过程中有效,构建好的镜像内不存在此环境变量。
构建命令 docker build 中可以用 --build-arg <参数名>=<值> 来覆盖。
格式:
ARG <参数名>[=<默认值>]
定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。
作用:
避免重要的数据,因容器重启而丢失,这是非常致命的。
避免容器不断变大。
格式:
VOLUME ["<路径1>", "<路径2>"...] VOLUME <路径>
在启动容器 docker run 的时候,我们可以通过 -v 参数修改挂载点。
仅仅只是声明端口。
作用:
帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射。
在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口。
格式:
EXPOSE <端口1> [<端口2>...]
指定工作目录。用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。以后各层的当前目录就被改为指定的目录,如该目录不存在,WORKDIR 会帮你建立目录。
docker build 构建镜像过程中的,每一个 RUN 命令都是新建的一层。只有通过 WORKDIR 创建的目录才会一直存在。
格式:
WORKDIR <工作目录路径>
用于指定执行后续命令的用户和用户组,这边只是切换后续命令执行的用户(用户和用户组必须提前已经存在)。
格式:
USER <用户名>[:<用户组>]
用于指定某个程序或者指令来监控 docker 容器服务的运行状态。
格式:
HEALTHCHECK [选项] CMD <命令>:设置检查容器健康状况的命令 HEALTHCHECK NONE:如果基础镜像有健康检查指令,使用这行可以屏蔽掉其健康检查指令 HEALTHCHECK [选项] CMD <命令> : 这边 CMD 后面跟随的命令使用,可以参考 CMD 的用法。
用于延迟构建命令的执行。简单的说,就是 Dockerfile 里用 ONBUILD 指定的命令,在本次构建镜像的过程中不会执行(假设镜像为 test-build)。当有新的 Dockerfile 使用了之前构建的镜像 FROM test-build ,这时执行新镜像的 Dockerfile 构建时候,会执行 test-build 的 Dockerfile 里的 ONBUILD 指定的命令。
格式:
ONBUILD <其它指令>
LABEL 指令用来给镜像添加一些元数据(metadata),以键值对的形式,语法格式如下:
LABEL <key>=<value> <key>=<value> <key>=<value> ...
比如我们可以添加镜像的作者:
LABEL org.opencontainers.image.authors="runoob"
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Compose 使用的三个步骤:
使用 Dockerfile 定义应用程序的环境。
使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
最后,执行 docker-compose up 命令来启动并运行整个应用程序。
Docker Machine 是一种可以让您在虚拟主机上安装 Docker 的工具,并可以使用 docker-machine 命令来管理主机。Docker Machine 也可以集中管理所有的 docker 主机,比如快速的给 100 台服务器安装上 docker。
安装:
[root@server ~]# base=https://github.com/docker/machine/releases/download/v0.16.0 && > curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine && > sudo mv /tmp/docker-machine /usr/local/bin/docker-machine && > chmod +x /usr/local/bin/docker-machine [root@server ~]# docker-machine version # 查看版本
[root@server ~]# docker-machine ls 列出可用的机器 NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS [root@server ~]# docker-machine create --driver virtualbox test # 创建一名为test的机器 --driver:指定用来创建机器的驱动类型,这里是 virtualbox [root@server ~]# docker-machine ip test # 查看test机器的IP地址 [root@server ~]# docker-machine stop test # 停止test机器 [root@server ~]# docker-machine start test # 开始test机器 [root@server ~]# docker-machine ssh test # 进入test机器
docker-machine active:查看当前激活状态的 Docker 主机。
$ docker-machine ls NAME ACTIVE DRIVER STATE URL dev - virtualbox Running tcp://192.168.99.103:2376 staging * digitalocean Running tcp://203.0.113.81:2376 $ echo $DOCKER_HOST tcp://203.0.113.81:2376 $ docker-machine active staging
config:查看当前激活状态 Docker 主机的连接信息。
create:创建 Docker 主机
env:显示连接到某个主机需要的环境变量
inspect: 以 json 格式输出指定Docker的详细信息
ip: 获取指定 Docker 主机的地址
kill: 直接杀死指定的 Docker 主机
ls: 列出所有的管理主机
provision: 重新配置指定主机
regenerate-certs: 为某个主机重新生成 TLS 信息
restart: 重启指定的主机
rm: 删除某台 Docker 主机,对应的虚拟机也会被删除
ssh: 通过 SSH 连接到主机上,执行命令
scp: 在 Docker 主机之间以及 Docker 主机和本地主机之间通过 scp 远程复制数据
mount: 使用 SSHFS 从计算机装载或卸载目录
start: 启动一个指定的 Docker 主机,如果对象是个虚拟机,该虚拟机将被启动
status: 获取指定 Docker 主机的状态(包括:Running、Paused、Saved、Stopped、Stopping、Starting、Error)等
stop: 停止一个指定的 Docker 主机
upgrade: 将一个指定主机的 Docker 版本更新为最新
url: 获取指定 Docker 主机的监听 URL
version: 显示 Docker Machine 的版本或者主机 Docker 版本
help: 显示帮助信息
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。