English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Docker 컨테이너 사용

Docker 클라이언트

docker 클라이언트는 매우 간단하며, docker 명령어를 직접 입력하여 Docker 클라이언트의 모든 명령어 옵션을 확인할 수 있습니다.

w3codebox@w3codebox:~# docker

명령어를 사용하여 docker command --help 지정된 Docker 명령어의 사용 방법에 대한 더 깊은 이해를 얻을 수 있습니다.

예를 들어, 다음과 같이 docker stats 명령어의 구체적인 사용 방법:

w3codebox@w3codebox:~# docker stats --help

컨테이너 사용

이미지 가져오기

우리가 ubuntu 이미지가 없다면, docker pull 명령어를 사용하여 ubuntu 이미지를 로드할 수 있습니다:

$ docker pull ubuntu

컨테이너 시작

다음 명령어는 ubuntu 이미지를 사용하여 컨테이너를 시작하며, 명령행 모드로 컨테이너에 접속하는 파라미터를 설정합니다:

$ docker run -it ubuntu /bin/bash

파라미터 설명:

  • -i: 상호작용式 작업.

  • -t: 터미널.

  • ubuntu: ubuntu 이미지.

  • /bin/bash명령어는 이미지 이름 뒤에 위치하며, 여기서는 상호작용式 셸을 원하므로 /bin/bash.

터미널을 나가려면 exit:

root@ed09e4490c57:/# exit

중지된 컨테이너를 시작

모든 컨테이너를 확인하는 명령어는 다음과 같습니다:

$ docker ps -a

이미지를 클릭하여 큰 이미지를 볼 수 있습니다:

docker start 명령어로 중지된 컨테이너를 시작할 수 있습니다:

$ docker start b750bbbcfd88

배경으로 실행

대부분의 상황에서 docker의 서비스가 배경에서 실행되기를 원합니다. 따라서 -d는 컨테이너의 실행 모드를 지정합니다.

$ docker run -itd --이름 ubuntu-test ubuntu /bin/bash

이미지를 클릭하여 큰 이미지를 볼 수 있습니다:

주의사항:추가된 -d 파라미터는 기본적으로 컨테이너에 들어가지 않습니다. 컨테이너에 들어가려면 명령어를 사용해야 합니다 docker exec아래에서 설명할 것입니다).

컨테이너를 중지

컨테이너를 중지하는 명령어는 다음과 같습니다:

$ docker stop <컨테이너 ID>

중지된 컨테이너는 docker restart 명령어로 다시 시작할 수 있습니다:

$ docker restart <컨테이너 ID>

컨테이너에 접속

사용할 때 -d 파라미터를 설정하면 컨테이너가 배경으로 실행됩니다. 이때 컨테이너에 접속하려면 다음 명령어를 사용할 수 있습니다:

  • docker attach

  • docker exec추천해 주세요 docker exec 명령어를 사용하십시오. 이 명령어는 컨테이너가 중지되지 않도록 컨테이너 터미널을 종료합니다.

attach 명령어

아래는 docker attach 명령어를 사용하는 예제입니다.

$ docker attach 1e560fca3906

주의: 이 컨테이너에서 나가면 컨테이너가 중지됩니다.

exec 명령어

아래는 docker exec 명령어를 사용하는 예제입니다.

docker exec -it 243c32535da7 /bin/bash

주의: 이 컨테이너에서 나가면 컨테이너가 중지되지 않습니다. 이는 docker exec을 추천하는 이유입니다. docker exec 의 이유로.

더 많은 파라미터 설명은 docker exec을 사용하세요. --help 명령어를 확인하세요.

컨테이너 내보내기 및 가져오기

컨테이너 내보내기

로컬 컨테이너를 내보내려면 사용할 수 있습니다. docker export 명령어.

$ docker export 1e560fca3906 > ubuntu.tar

컨테이너 내보내기 1e560fca3906 로컬 파일로 스냅샷 ubuntu.tar。

이렇게 하면 컨테이너 스냅샷을 로컬 파일로 내보낼 수 있습니다.

컨테이너 스냅샷 가져오기

docker import를 사용하여 컨테이너 스냅샷 파일을 다시 이미지로 가져올 수 있습니다. 아래 예제에서는 스냅샷 파일 ubuntu.tar을 이미지 test에 가져옵니다./ubuntu:v1:

$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1

또한, URL이나 특정 디렉토리를 지정하여 가져올 수도 있습니다. 예를 들어:

$ docker import http://example.com/exampleimage.tgz example/imagerepo

컨테이너 삭제

컨테이너 삭제 사용 docker rm 명령어:

$ docker rm -f 1e560fca3906

아래 명령어는 종료 상태의 모든 컨테이너를 정리할 수 있습니다.

$ docker container prune

웹 애플리케이션 실행

이전에 실행한 컨테이너는 특별한 용도가 없습니다.

그래서 docker를 사용하여 웹 애플리케이션을 구축해 보겠습니다.

우리는 docker 컨테이너에서 Python Flask 애플리케이션을 실행하여 웹 애플리케이션을 실행합니다.

w3codebox@w3codebox:~# docker pull training/webapp # 이미지 로드
w3codebox@w3codebox:~# docker run -d -P training/webapp python app.py

파라미터 설명:

  • -d:컨테이너가 배경에서 실행됩니다.

  • -P:컨테이너 내에서 사용하는 네트워크 포트를 우리가 사용하는主机에 랜덤으로 매핑합니다.

WEB 애플리케이션 컨테이너 확인

docker ps를 사용하여 실행 중인 컨테이너를 확인하세요:

w3codebox@w3codebox:~#    docker ps
docker ps를 사용하여 실행 중인 컨테이너를 확인하세요:                 
d3d5e39ed9d3        training/CONTAINER ID    IMAGE    COMMAND    ...    PORTS32769->5000/tcp

webapp "python app.py" ... 0.0.0.0:

여기서 포트 정보가 추가되었습니다.
0.0.0.0:32769->5000/tcp

PORTS 5Docker는 포트를 열었습니다: 32769 000 포트(기본 Python Flask 포트)가 호스트 포트로 매핑되었습니다.

에서.

이제 웹 애플리케이션에 접근할 수 있습니다. -p 매개변수를 사용하여 다른 포트를 설정할 수 있습니다:

w3codebox@w3codebox:~$ docker run -d -p 5000:5000 training/webapp python app.py

docker ps실행 중인 컨테이너 확인

w3codebox@w3codebox:~#    docker ps
CONTAINER ID         IMAGE                             PORTS                     NAMES
bf08b7f2cd89        training/webapp     ...         0.0.0.0:5000->5000/tcp    wizardly_chandrasekhar
d3d5e39ed9d3        training/webapp     ...         0.0.0.0:32769->5000/tcp    xenodochial_hoov

컨테이너 내부의 5000 포트가 우리의 로컬 호스트에 매핑되었습니다. 5000 포트에 있습니다.

네트워크 포트의 단축 방법

을 통해 docker ps 명령어를 사용하여 컨테이너의 포트 매핑을 확인할 수 있습니다.docker 또 다른 단축 방법을 제공합니다. docker port를 사용하여 docker port 지정된 (ID 또는 이름) 컨테이너의 특정 포트가 호스트 머신의 포트로 매핑되는 것을 확인할 수 있습니다.

위에서 생성한 웹 애플리케이션 컨테이너 ID는 bf08b7f2cd89  이름은 wizardly_chandrasekhar.

docker port bf0을 사용할 수 있습니다.8b7f2cd89  또는 docker port wizardly_chandrasekhar를 사용하여 컨테이너 포트 매핑 상태를 확인할 수 있습니다.

w3codebox@w3codebox:~$ docker port bf08b7f2cd89
5000/tcp -> 0.0.0.0:5000
w3codebox@w3codebox:~$ docker port wizardly_chandrasekhar
5000/tcp -> 0.0.0.0:5000

WEB 애플리케이션 로그 확인

docker logs [ID 또는 이름]를 사용하여 컨테이너 내부의 표준 출력을 확인할 수 있습니다.

w3codebox@w3codebox:~$ docker logs -f bf08b7f2cd89
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
192.168.239.1 - - [09/May/2016 16:30:37] "GET / HTTP/1.1" 200 -
192.168.239.1 - - [09/May/2016 16:30:37] "GET /favicon.ico HTTP/1.1" 404 -

-f: 허용합니다: docker logs 사용하면 tail -f 같이 내부 컨테이너의 표준 출력을 출력합니다.

위에서 볼 수 있듯이, 애플리케이션에서 사용하는 것은 5000 端口并且能够查看到应用程序的访问日志。

000 포트에서 애플리케이션의 접근 로그를 확인할 수 있습니다.

WEB 애플리케이션 컨테이너의 프로세스를 확인하다

w3codebox@w3docker top을 사용하여 컨테이너 내부에서 실행되는 프로세스를 확인할 수 있습니다.
codebox:~$ docker top wizardly_chandrasekhar
UID     PID         PPID         ...       TIME               CMD    23245       23228         root

...       00:00:00           python app.py

WEB 애플리케이션을 확인하다 docker inspect Docker의 기본 정보를 확인하려면 사용하세요. 이는 Docker 컨테이너의 구성과 상태 정보를 기록한 JSON 파일을 반환합니다.

w3codebox@w3codebox:~$ docker inspect wizardly_chandrasekhar
[
    {
        "Id": "bf0"8b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85",
        "Created": ""2018-09-17T01:41:26.174228707Z",
        "Path": "python",
        "Args": [
            "app.py"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 23245,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": ""2018-09-17T01:41:26.494185806Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        }
......

WEB 애플리케이션 컨테이너 중지

w3codebox@w3codebox:~$ docker stop wizardly_chandrasekhar   
wizardly_chandrasekhar

WEB 애플리케이션 컨테이너 재시작

중지된 컨테이너는 docker start 명령어를 사용하여 시작할 수 있습니다.

w3codebox@w3codebox:~$ docker start wizardly_chandrasekhar
wizardly_chandrasekhar

docker ps -l 최근 생성된 컨테이너를 조회하다:

# docker ps -l 
CONTAINER ID         IMAGE                             PORTS                     NAMES
bf08b7f2cd89        training/webapp     ...         0.0.0.0:5000->5000/tcp    wizardly_chandrasekhar

실행 중인 컨테이너는 docker restart 명령어를 사용하여 다시 시작할 수 있습니다.

WEB 애플리케이션 컨테이너 제거

불필요한 컨테이너를 제거하기 위해 docker rm 명령어를 사용할 수 있습니다.

w3codebox@w3codebox:~$ docker rm wizardly_chandrasekhar  
wizardly_chandrasekhar

컨테이너를 제거할 때, 컨테이너가 중지 상태여야 합니다. 그렇지 않으면 다음과 같은 오류가 발생합니다.

w3codebox@w3codebox:~$ docker rm wizardly_chandrasekhar
데몬으로부터의 오류 응답: 실행 중인 컨테이너 bf0를 제거할 수 없습니다.8b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85컨테이너를 제거하려고 시도하기 전에 컨테이너를 중지하세요. 강제 제거할 수 있습니다.