Статьи

Docker 1.7.0, Docker Machine 0.3.0, Docker Compose 1.3.0, Docker Swarm 0.3.0

Выпущен Docker 1.7.0 ( журнал изменений ), и поэтому пришло время обновить Docker Hosts, CLI и другие инструменты.

Докер 1.7.0

Docker Host работает внутри Docker Machine, поэтому его необходимо обновить. Машина должна быть остановлена, иначе вы получите сообщение об ошибке:

1
Error: machine must be running to upgrade.

Итак, запустите машину как:

1
2
>docker-machine start mymachine
Starting VM...

А затем обновить машину как:

1
2
3
4
5
6
> docker-machine upgrade mymachine
Stopping machine to do the upgrade...
Upgrading machine mymachine...
Downloading https://github.com/boot2docker/boot2docker/releases/download/v1.7.0/boot2docker.iso to /Users/arungupta/.docker/machine/cache/boot2docker.iso...
Starting machine back up...
Starting VM...

Машина в любом случае останавливается для выполнения обновления, и поэтому необходимость запуска машины кажется излишней ( # 1399 ).

Обновление хоста обновляет .docker/machine/cache/boot2docker.iso . Все ранее созданные машины кэшируют boot2docker.iso в .docker/machine/machines/<MACHINE-NAME> и поэтому они продолжат загрузку, используя ту же версию.

Докер CLI

Обновите интерфейс командной строки Docker как:

1
curl https://get.docker.com/builds/Darwin/x86_64/docker-latest > /usr/local/bin/docker

Теперь docker version показывает следующий вывод:

01
02
03
04
05
06
07
08
09
10
11
> docker version
Client version: 1.7.0
Client API version: 1.19
Go version (client): go1.4.2
Git commit (client): 0baf609
OS/Arch (client): darwin/amd64
Server version: 1.7.0
Server API version: 1.19
Go version (server): go1.4.2
Git commit (server): 0baf609
OS/Arch (server): linux/amd64

Обратите внимание, что здесь показана версия API клиента (1.7.0) и версия API сервера (1.7.0).

Если вы обновите только CLI, а не Docker Host, появится следующее сообщение об ошибке:

1
Error response from daemon: client and server don't have same version (client : 1.19, server: 1.18)

Это сообщение об ошибке показывает несоответствие версий между клиентским CLI и хостом Docker, работающим на компьютере. Обычно это происходит, если активная машина была создана несколько дней назад с использованием более старого boot2docker.iso . Кажется, нет никакого прямого способа узнать точную версию, которая используется в настоящее время ( # 1398 ).

Кажется, что у нового клиента нет возможности общаться со старым сервером ( # 14077 ), и поэтому необходимо обновить хост. Есть предложение переопределить версию API клиента ( # 11486 ), но на данный момент нет ETA для исправления. Таким образом, единственный вариант — обновить докер, который затем обновится до последней версии Docker.

Таким образом, обновление CLI также требует обновления машины.

Вот параметры, поддерживаемые Docker CLI:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
> docker --help
Usage: docker [OPTIONS] COMMAND [arg...]
 
A self-sufficient runtime for linux containers.
 
Options:
 
  -D, --debug=false                                              Enable debug mode
  -d, --daemon=false                                             Enable daemon mode
  -H, --host=[]                                                  Daemon socket(s) to connect to
  -h, --help=false                                               Print usage
  -l, --log-level=info                                           Set the logging level
  --tls=false                                                    Use TLS; implied by --tlsverify
  --tlscacert=~/.docker/machine/machines/microservices/ca.pem    Trust certs signed only by this CA
  --tlscert=~/.docker/machine/machines/microservices/cert.pem    Path to TLS certificate file
  --tlskey=~/.docker/machine/machines/microservices/key.pem      Path to TLS key file
  --tlsverify=true                                               Use TLS and verify the remote
  -v, --version=false                                            Print version information and quit
 
Commands:
    attach    Attach to a running container
    build     Build an image from a Dockerfile
    commit    Create a new image from a container's changes
    cp        Copy files/folders from a container's filesystem to the host path
    create    Create a new container
    diff      Inspect changes on a container's filesystem
    events    Get real time events from the server
    exec      Run a command in a running container
    export    Stream the contents of a container as a tar archive
    history   Show the history of an image
    images    List images
    import    Create a new filesystem image from the contents of a tarball
    info      Display system-wide information
    inspect   Return low-level information on a container or image
    kill      Kill a running container
    load      Load an image from a tar archive
    login     Register or log in to a Docker registry server
    logout    Log out from a Docker registry server
    logs      Fetch the logs of a container
    pause     Pause all processes within a container
    port      Lookup the public-facing port that is NAT-ed to PRIVATE_PORT
    ps        List containers
    pull      Pull an image or a repository from a Docker registry server
    push      Push an image or a repository to a Docker registry server
    rename    Rename an existing container
    restart   Restart a running container
    rm        Remove one or more containers
    rmi       Remove one or more images
    run       Run a command in a new container
    save      Save an image to a tar archive
    search    Search for an image on the Docker Hub
    start     Start a stopped container
    stats     Display a stream of a containers' resource usage statistics
    stop      Stop a running container
    tag       Tag an image into a repository
    top       Lookup the running processes of a container
    unpause   Unpause a paused container
    version   Show the Docker version information
    wait      Block until a container stops, then print its exit code
 
Run 'docker COMMAND --help' for more information on a command.
machines> docker events --help
 
Usage: docker events [OPTIONS]
 
Get real time events from the server
 
  -f, --filter=[]    Filter output based on conditions provided
  --help=false       Print usage
  --since=           Show all events created since timestamp
  --until=           Stream events until this timestamp

Docker Machine 0.3.0

Это было довольно просто:

1
curl -L https://github.com/docker/machine/releases/download/v0.3.0/docker-machine_darwin-amd64 > /usr/local/bin/docker-machine

Появилось множество новых функций , в том числе экспериментальный поставщик Red Hat Enterprise Linux 7.0.

Версия отображается как:

1
2
> docker-machine --version
docker-machine version 0.3.0 (0a251fe)

Полный список команд:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
> docker-machine --help
Usage: docker-machine [OPTIONS] COMMAND [arg...]
 
Create and manage machines running Docker.
 
Version: 0.3.0 (0a251fe)
 
Author:
  Docker Machine Contributors - <https://github.com/docker/machine>
 
Options:
  --debug, -D                       Enable debug mode
  -s, --storage-path "/Users/arungupta/.docker/machine" Configures storage path [$MACHINE_STORAGE_PATH]
  --tls-ca-cert                     CA to verify remotes against [$MACHINE_TLS_CA_CERT]
  --tls-ca-key                      Private key to generate certificates [$MACHINE_TLS_CA_KEY]
  --tls-client-cert                     Client cert to use for TLS [$MACHINE_TLS_CLIENT_CERT]
  --tls-client-key                  Private key used in client TLS auth [$MACHINE_TLS_CLIENT_KEY]
  --native-ssh                      Use the native (Go-based) SSH implementation. [$MACHINE_NATIVE_SSH]
  --help, -h                        show help
  --version, -v                     print the version
   
Commands:
  active        Print which machine is active
  config        Print the connection config for machine
  create        Create a machine
  env           Display the commands to set up the environment for the Docker client
  inspect       Inspect information about a machine
  ip            Get the IP address of a machine
  kill          Kill a machine
  ls            List machines
  regenerate-certs  Regenerate TLS Certificates for a machine
  restart       Restart a machine
  rm            Remove a machine
  ssh           Log into or run a command on a machine with SSH.
  scp           Copy files between machines
  start         Start a machine
  stop          Stop a machine
  upgrade       Upgrade a machine to the latest version of Docker
  url           Get the URL of a machine
  help, h       Shows a list of commands or help for one command
   
Run 'docker-machine COMMAND --help' for more information on a command.

Docker Compose 1.3.0

Docker Compose может быть обновлен до 1.3.0 как:

1
2
curl -L https://github.com/docker/compose/releases/download/1.3.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Версия отображается как:

1
2
3
4
> docker-compose --version
docker-compose version: 1.3.0
CPython version: 2.7.9
OpenSSL version: OpenSSL 1.0.1j 15 Oct 2014

Следует отметить два важных момента:

  • Требуется как минимум Docker 1.6.0
  • По сравнению с Compose 1.2 произошли серьезные изменения, поэтому вам нужно либо удалить и заново создать ваши контейнеры, либо перенести их. К счастью, docker-compose migrate-to-labels tags можно использовать для переноса контейнеров до Compose 1.3.0 в последний формат. Это создаст заново контейнеры с добавленными метками.

Узнайте больше в Docker Compose to Orchestrate Containers .

Docker Swarm 0.3.0

Начиная с этого блога, доступен Docker Swarm 0.3.0 RC3. Кластеризация с использованием Docker Swarm представляет собой хорошее введение в Docker Swarm и может быть использована для начала работы с последней версией Docker Swarm.

Начиная с 0.2.0 исправлено 34 проблемы , но в уведомлениях о фиксации начиная с 0.2.0 f или Release Candidates, по-видимому, нет значительных изменений.

Более подробные блоги по каждому компоненту Docker будут публиковаться в последующих блогах.

Наслаждайтесь!