[ swarm ]

 

$ docker info

------------------------------------------------------------------
...
Swarm: inactive
...
-------------------------------------------------------------------

비활성화 상태임.


$ docker swarm --help

-------------------------------------------------------------------
Usage: docker swarm COMMAND

Manage Swarm

Commands:
  ca          Display and rotate the root CA
  init        Initialize a swarm
  join        Join a swarm as a node and/or manager
  join-token  Manage join tokens
  leave       Leave the swarm
  unlock      Unlock swarm
  unlock-key  Manage the unlock key
  update      Update the swarm
-------------------------------------------------------------------

[example]

$ docker swarm init
-----------------------------------------------------------------------------------
Swarm initialized: current node (xuoisgtch2ht3ija12rv6jo39) is now a manager.
-----------------------------------------------------------------------------------

$ docker swarm join-token manager
$ docker swarm join-token worker



$ docker node --help

-------------------------------------------------------------------
Usage: docker node COMMAND

Manage Swarm nodes

Commands:
  demote      Demote one or more nodes from manager in the swarm
  inspect     Display detailed information on one or more nodes
  ls          List nodes in the swarm
  promote     Promote one or more nodes to manager in the swarm
  ps          List tasks running on one or more nodes, defaults to current node
  rm          Remove one or more nodes from the swarm
  update      Update a node
-------------------------------------------------------------------

[example]

$ docker node ls --> Entire list
--------------------------------------------------------------------------------------------
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
xuoisgtch2ht3ija12rv6jo39 *   ip-172-31-28-47     Ready               Active              Leader              18.09.5
--------------------------------------------------------------------------------------------

$ docker node ps --> Current Executing list
--------------------------------------------------------------------------------------------
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE               ERROR       PORTS
lp6c58slnydn        test_nginx.1        nginx:latest        ip-172-31-28-47     Running             Running 32 minutes ago
r97y6j7h6g7v        test_nginx.2        nginx:latest        ip-172-31-28-47     Running             Running 28 minutes ago
7emcgjqq8r9t        test_nginx.3        nginx:latest        ip-172-31-28-47     Running             Running 28 minutes ago
--------------------------------------------------------------------------------------------



$ docker service --help

-------------------------------------------------------------------
Usage: docker service COMMAND

Manage services

Commands:
  create      Create a new service
  inspect     Display detailed information on one or more services
  logs        Fetch the logs of a service or task
  ls          List services
  ps          List the tasks of one or more services
  rm          Remove one or more services
  rollback    Revert changes to a service's configuration
  scale       Scale one or multiple replicated services
  update      Update a service
-------------------------------------------------------------------

[example]

$ docker service create --name <SERVICE_NAME> <OPTIONS> <IMAGE>:<IMAGE_VERSION>

$ docker service ls
--------------------------------------------------------------------------------------------
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
jwb1gh8ujbnk        test_nginx          replicated          3/3                 nginx:latest        *:6666->80/tcp
--------------------------------------------------------------------------------------------

$ docker service scale <SERVICE_NAME>=<COUNT>

$ docker service ps 
--------------------------------------------------------------------------------------------
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE               ERROR       PORTS
lp6c58slnydn        test_nginx.1        nginx:latest        ip-172-31-28-47     Running             Running 25 minutes ago
r97y6j7h6g7v        test_nginx.2        nginx:latest        ip-172-31-28-47     Running             Running 21 minutes ago
7emcgjqq8r9t        test_nginx.3        nginx:latest        ip-172-31-28-47     Running             Running 21 minutes ago
--------------------------------------------------------------------------------------------

$ docker service update --image <NEW_IMAGE> <SERVICE_NAME>



$ docker stack --help

-------------------------------------------------------------------
Usage: docker stack [OPTIONS] COMMAND

Manage Docker stacks

Options:
      --orchestrator string   Orchestrator to use (swarm|kubernetes|all)

Commands:
  deploy      Deploy a new stack or update an existing stack
  ls          List stacks
  ps          List the tasks in the stack
  rm          Remove one or more stacks
  services    List the services in the stack
-------------------------------------------------------------------


$ docker stack deploy --help

-------------------------------------------------------------------
Usage: docker stack deploy [OPTIONS] STACK

Deploy a new stack or update an existing stack

Aliases:
  deploy, up

Options:
      --bundle-file string     Path to a Distributed Application Bundle file
  -c, --compose-file strings   Path to a Compose file, or "-" to read from stdin
      --orchestrator string    Orchestrator to use (swarm|kubernetes|all)
      --prune                  Prune services that are no longer referenced
      --resolve-image string   Query the registry to resolve image digest and supported platforms ("always"|"changed"|"never") (default "always")
      --with-registry-auth     Send registry authentication details to Swarm agents
-------------------------------------------------------------------

[example]

$ docker stack deploy -c <docker-compose.yml PATH> --with-registry-auth 

 

[ 도식화 ]

 

 

 

 

root@ip-172-31-28-47:/home/ubuntu# docker --help

Usage: docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
      --config string           Location of client config files (default "/root/.docker")
      -D, --debug               Enable debug mode
      -H, --host list            Daemon socket(s) to connect to
      -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
      --tls                           Use TLS; implied by --tlsverify
      --tlscacert string       Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscert string           Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string            Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify                  Use TLS and verify the remote
      -v, --version              Print version information and quit

Management Commands:
  builder        Manage builds
  config         Manage Docker configs
  container    Manage containers
  engine        Manage the docker engine
  image         Manage images
  network     Manage networks
  node          Manage Swarm nodes
  plugin        Manage plugins
  secret        Manage Docker secrets
  service       Manage services
  stack          Manage Docker stacks
  swarm        Manage Swarm
  system       Manage Docker
  trust           Manage trust on Docker images
  volume       Manage volumes

Commands:
  attach         Attach local standard input, output, and error streams 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 between a container and the local filesystem
  create         Create a new container
  diff              Inspect changes to files or directories on a container's filesystem
  events        Get real time events from the server
  exec           Run a command in a running container
  export        Export a container's filesystem as a tar archive
  history        Show the history of an image
  images        List images
  import         Import the contents from a tarball to create a filesystem image
  info             Display system-wide information
  inspect        Return low-level information on Docker objects
  kill               Kill one or more running containers
  load             Load an image from a tar archive or STDIN
  login            Log in to a Docker registry
  logout         Log out from a Docker registry
  logs             Fetch the logs of a container
  pause          Pause all processes within one or more containers
  port            List port mappings or a specific mapping for the container
  ps               List containers
  pull             Pull an image or a repository from a registry
  push           Push an image or a repository to a registry
  rename       Rename a container
  restart        Restart one or more containers
  rm              Remove one or more containers
  rmi             Remove one or more images
  run             Run a command in a new container
  save           Save one or more images to a tar archive (streamed to STDOUT by default)
  search        Search the Docker Hub for images
  start           Start one or more stopped containers
  stats           Display a live stream of container(s) resource usage statistics
  stop           Stop one or more running containers
  tag             Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top             Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update       Update configuration of one or more containers
  version       Show the Docker version information
  wait           Block until one or more containers stop, then print their exit codes

Run  docker <COMMAND> --help  for more information on a command.

 

 

docker-compose 로 postgres + nginx + uwsgi 환경 구축과정에서 아래와 같은 오류 발생

```

postgres_1      | 2018-06-07 19:11:22.906 UTC [80] FATAL:  password authentication failed for user "db_user"

postgres_1      | 2018-06-07 19:11:22.906 UTC [80] DETAIL:  Password does not match for user "db_user".

postgres_1      | Connection matched pg_hba.conf line 95: "host all all all md5"

```

또는 `Role "db_user" does not exist.` 라는 오류도 같이 남.

uwsgi 대신 gunicorn 을 사용해서 미리 구축해둔 걸로 테스트해보면 잘됨. (설정파일 모두 동일한 걸로 맞춤)


Problem)

POSTGRES_XXX 환경변수는 모두 등록된 상태

컨테이너에서 postgres로 psql 명령어 실행 불가능 (Error: `Role "postgres" does not exist.`)

데이터베이스 조차 생성되지 않았음. (등록된 환경변수가 반영되지 않음)

  1. 이미 등록된 환경변수가 있는가?

  2. postgres의 role 이 사라진 이유?

사실 위 두 개만으로는 구글링해봐도 로컬에서 개발환경 구축 시 발생한 오류의 해결책이 많이 나옴.. (삽질의 연속)


Solution)

Is it possible that you generate the project more than once? In this scenario you get the error that you mention in your first post here. Here is what happens:


1. You generate the project the first time. The .env postgres file is populated with the random password

2. You run the docker-compose and the containers are created. The postgres container creates the database based on the .env file credentials

3. You "regenerate" the project with the same name, so the postgres .env file is populated with a **new** random password

4. You run docker-compose. Since the names of the containers are the same, docker will try to start them (**not create them from scratch** i.e. it won't _execute_ the Dockerfile to recreate the database). When this happens, it tries to start the database based on the new credentials which do not match the ones that the database was created with, and you get the error message mentioned in your first post.


If that is the case, and your object is to start a fresh production environment then you can delete the postgres volume.


결론적으로 환경변수 문제 였음


동일한 이름의 컨테이너를 다시 생성했을 때 볼륨이 살아있으면 발생한다고 함... (docker volume ls 로 볼륨 보고 rm 옵션주고 삭제할 것)



Ref.

https://github.com/pydanny/cookiecutter-django/issues/1678

https://github.com/docker-library/postgres/issues/203


+ Recent posts