Zarządzanie obrazami


docker build

docker build [options] .
  -t "app/container_name"    # name

Stwórz image z pliku Dockerfile.

docker run

docker run [options] IMAGE
  # see `docker create` for options

Zarządzanie konetnerami

docker create

docker create [options] IMAGE
  -a, --attach               # attach stdout/err
  -i, --interactive          # attach stdin (interactive)
  -t, --tty                  # pseudo-tty
      --name NAME            # name your image
  -p, --publish 5000:5000    # port map
      --expose 5432          # expose a port to linked containers
  -P, --publish-all          # publish all ports
      --link container:alias # linking
  -v, --volume `pwd`:/app    # mount (absolute paths needed)
  -e, --env NAME=hello       # env vars

Przykład

Stwórz container z image.

$ docker create --name app_redis_1 \
  --expose 6379 \
  redis:3.0.2

docker exec

docker exec [options] CONTAINER COMMAND
  -d, --detach        # run in background
  -i, --interactive   # stdin
  -t, --tty           # interactive

Przykład

Komendy w container.

$ docker exec app_web_1 tail logs/development.log
$ docker exec -t -i app_web_1 rails c

Start/stop a container.

docker start

docker start [options] CONTAINER
  -a, --attach        # attach stdout/err
  -i, --interactive   # attach stdin

docker stop [options] CONTAINER

Zarządzanie container przy pomocy ps/kill.

docker ps

$ docker ps
$ docker ps -a
$ docker kill $ID

Obrazy

Zarządzanie image

docker images

$ docker images
  REPOSITORY   TAG        ID
  ubuntu       12.10      b750fe78269d
  me/myapp     latest     7b2431a8d968
$ docker images -a   # also show intermediate

Kasowanie image

docker rmi

docker rmi b750fe78269d

Zobacz także

Dockerfile

Inheritance

FROM ruby:2.2.2

Variables

ENV APP_HOME /myapp
RUN mkdir $APP_HOME

Initialization

RUN bundle install
WORKDIR /myapp
VOLUME ["/data"]
# Specification for mount point
ADD file.xyz /file.xyz
COPY --chown=user:group host_file.xyz /path/container_file.xyz

Onbuild

ONBUILD RUN bundle install
# when used with another file

Commands

EXPOSE 5900
CMD    ["bundle", "exec", "rails", "server"]

Entrypoint

ENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT command param1 param2

Konfiguruje kontener, który będzie działał jako plik wykonywalny.

ENTRYPOINT exec top -b


Spowoduje to użycie przetwarzania powłoki do podstawienia zmiennych powłoki i zignoruje wszelkie argumenty wiersza poleceń uruchamiane przezCMD lub docker run

Metadata

LABEL version="1.0"
LABEL "com.example.vendor"="ACME Incorporated"
LABEL com.example.label-with-value="foo"
LABEL description="This text illustrates \
that label-values can span multiple lines."

Zobacz także

docker-compose

Podstawowy przykład

# docker-compose.yml
version: '2'

services:
  web:
    build: .
    # build from Dockerfile
    context: ./Path
    dockerfile: Dockerfile
    ports:
     - "5000:5000"
    volumes:
     - .:/code
  redis:
    image: redis

Komendy

docker-compose start
docker-compose stop
docker-compose pause
docker-compose unpause
docker-compose ps
docker-compose up
docker-compose down

Referencje

Budowa

web:
  # build from Dockerfile
  build: .
  # build from custom Dockerfile
  build:
    context: ./dir
    dockerfile: Dockerfile.dev
  # build from image
  image: ubuntu
  image: ubuntu:14.04
  image: tutum/influxdb
  image: example-registry:4000/postgresql
  image: a4bc65fd

Porty

  ports:
    - "3000"
    - "8000:80"  # guest:host
  # expose ports to linked services (not to host)
  expose: ["3000"]

Komeny

  # command to execute
  command: bundle exec thin -p 3000
  command: [bundle, exec, thin, -p, 3000]
  # override the entrypoint
  entrypoint: /app/start.sh
  entrypoint: [php, -d, vendor/bin/phpunit]

Zmienne środowiskowe

  # environment vars
  environment:
    RACK_ENV: development
  environment:
    - RACK_ENV=development
  # environment vars from file
  env_file: .env
  env_file: [.env, .development.env]


Zależności / Dependencies

  # makes the `db` service available as the hostname `database`
  # (implies depends_on)
  links:
    - db:database
    - redis
  # make sure `db` is alive before starting
  depends_on:
    - db

Inne opcje

  # make this service extend another
  extends:
    file: common.yml  # optional
    service: webapp
  volumes:
    - /var/lib/mysql
    - ./_data:/var/lib/mysql

Opcje zawansowane

Labels

services:
  web:
    labels:
      com.example.description: "Accounting web app"

DNS servers

services:
  web:
    dns: 8.8.8.8
    dns:
      - 8.8.8.8
      - 8.8.4.4

Devices

services:
  web:
    devices:
    - "/dev/ttyUSB0:/dev/ttyUSB0"
services:
  web:
    external_links:
      - redis_1
      - project_db_1:mysql

Hosts

services:
  web:
    extra_hosts:
      - "somehost:192.168.1.100"

Serwisy

Sprawdź wszytskie serwisy

docker service ls 

Aby zobaczyć wszystkie uruchomione usługi wraz z zaawansowanymi funkcjami

docker stack services stack_name

wszytskie logi

docker service logs stack_name service_name 

Aby szybko skalować usługi w kwalifikowanym węźle

docker service scale stack_name_service_name=replicas

clean up

Skasuj nie używane obrazy

docker image prune 

Skasuj wszystkie obrazy, które nie są używane w kontenerach

docker image prune -a 

Wyczyść system

docker system prune 

Wyjdz z ze swarm'a

docker swarm leave  

Usuń cały swarm wraz z całymi wolumenami i bazami danych

docker stack rm stack_name  

Zniszcz (kill) wszystkie kontenery

docker kill $(docekr ps -q )