

 AWS Cloud9 는 더 이상 신규 고객이 사용할 수 없습니다. AWS Cloud9 의 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. [자세히 알아보기](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 에 대한 Docker 자습서 AWS Cloud9
<a name="sample-docker"></a>

이 자습서에서는 AWS Cloud9 SSH 개발 환경을 Amazon EC2의 Amazon Linux 인스턴스 내에서 실행 중인 Docker 컨테이너에 연결하는 방법을 보여줍니다. 이를 통해 AWS Cloud9 IDE를 사용하여 Docker 컨테이너 내부의 코드 및 파일로 작업하고 해당 컨테이너에서 명령을 실행할 수 있습니다. 도커에 대한 자세한 내용은 도커 웹 사이트의 [도커란 무엇인가?](https://www.docker.com/what-docker)를 참조하십시오.

이 자습서를 따르고이 샘플을 생성하면 AWS 계정에 요금이 부과될 수 있습니다. 여기에는 Amazon EC2와 같은 서비스에 대해 발생할 수 있는 요금이 포함됩니다. 자세한 내용은 [Amazon EC2 요금](https://aws.amazon.com/ec2/pricing/)을 참조하세요.

**Topics**
+ [사전 조건](#sample-docker-prereqs)
+ [1단계: Docker 설치 및 실행](#sample-docker-install)
+ [2단계: 이미지 빌드](#sample-docker-build)
+ [3단계: 컨테이너 실행](#sample-docker-run)
+ [4단계: 환경 생성](#sample-docker-env)
+ [5단계: 코드 실행](#sample-docker-code)
+ [6단계: 정리](#sample-docker-clean-up)

## 사전 조건
<a name="sample-docker-prereqs"></a>
+  **Amazon Linux 또는 Ubuntu Server를 실행 중인 Amazon EC2 인스턴스가 있어야 합니다.** 이 샘플에서는 AWS 계정에 Amazon Linux 또는 Ubuntu Server를 실행하는 Amazon EC2 인스턴스가 이미 있다고 가정합니다. Amazon EC2 인스턴스를 시작하려면 [Linux 가상 머신 시작](https://aws.amazon.com/getting-started/tutorials/launch-a-virtual-machine/)을 참조하세요. 마법사의 [**Amazon 머신 이미지(AMI) 선택(Choose an Amazon Machine Image (AMI))**] 페이지에서 표시 이름이 **Amazon Linux AMI** 또는 **Ubuntu Server**로 시작하는 AMI를 선택합니다.
+  **Amazon EC2 인스턴스가 Amazon VPC에서 실행되는 경우 추가 요구 사항이 수반됩니다.** [AWS Cloud9 개발 환경에 대한 VPC 설정](vpc-settings.md)을(를) 참조하세요.
+  **Amazon EC2 인스턴스에 사용 가능한 디스크 공간이 8\$116GB 이상 있어야 합니다.** 이 샘플은 크기가 3GB를 초과하는 도커 이미지를 사용하며 추가 증분량이 3GB 이상인 디스크 공간을 사용하여 이미지를 빌드할 수 있습니다. 사용 가능한 공간이 8GB 미만인 디스크에서 이 샘플을 실행하려 할 경우 도커 이미지를 빌드할 수 없거나 도커 컨테이너가 실행되지 않을 것입니다. 인스턴스의 사용 가능한 디스크 공간을 확인하려면 인스턴스에서 ** `df -h`**("인간 판독 가능한 형식의 디스크 파일 시스템 정보")와 같은 명령을 실행할 수 있습니다. 기존 인스턴스의 디스크 크기를 늘리려면 *Amazon EC2 사용 설명서*의 [볼륨 수정](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-modify-volume.html)을 참조하세요.

## 1단계: Docker 설치 및 실행
<a name="sample-docker-install"></a>

이 단계에서는 Docker가 Amazon EC2 인스턴스에 설치되어 있는지 여부를 확인하고 아직 설치되지 않은 경우 Docker를 설치합니다. 도커를 설치한 후에는 인스턴스에서 도커를 실행합니다.

1. **`ssh` **유틸리티 또는 PuTTY와 같은 SSH 클라이언트를 사용하여 실행 중인 Amazon EC2 인스턴스에 연결합니다. 이렇게 하려면 [Linux 가상 머신 시작](https://aws.amazon.com/getting-started/tutorials/launch-a-virtual-machine/)에서 "3단계: 인스턴스에 연결"을 참조하십시오.

1. 도커가 인스턴스에 설치되었는지 확인합니다. 이렇게 하려면** `--version` **옵션을 사용하여 인스턴스에 대해** `docker` **명령을 실행합니다.

   ```
   docker --version
   ```

   도커가 설치되면 도커 버전과 빌드 번호가 표시됩니다. 이 경우, 이 절차의 뒷부분인 5단계로 이동합니다.

1. 도커를 설치합니다. 이렇게 하려면 설치할 ** `docker` ** 또는 ** `docker.io` ** 패키지를 지정하고 ** `install` ** 작업을 사용하여 ** `yum` ** 또는 ** `apt` ** 명령을 실행합니다.

   Amazon Linux의 경우:

   ```
   sudo yum install -y docker
   ```

   Ubuntu Server:

   ```
   sudo apt install -y docker.io
   ```

1. 도커가 설치되었는지 확인합니다. 이렇게 하려면 ** `docker --version` ** 명령을 다시 실행합니다. 도커 버전 및 빌드 번호가 표시됩니다.

1. 도커를 실행합니다. 이렇게 하려면 ** `docker` ** 서비스와 ** `start` ** 작업을 사용하여 ** `service` ** 명령을 실행합니다.

   ```
   sudo service docker start
   ```

1. 도커가 실행 중인지 확인합니다. 이렇게 하려면** `info` **작업을 사용하여** `docker` **명령을 실행합니다.

   ```
   sudo docker info
   ```

   도커를 실행 중인 경우 도커에 대한 정보가 표시됩니다.

## 2단계: 이미지 빌드
<a name="sample-docker-build"></a>

이 단계에서 Dockerfile을 사용하여 도커 이미지를 인스턴스에 빌드합니다. 이 샘플에서는 Node.js와 샘플 채팅 서버 애플리케이션을 포함하는 이미지를 사용합니다.

1. 인스턴스에서 Dockerfile을 생성합니다. 이렇게 하려면 인스턴스의 `/tmp` 디렉터리에서 인스턴스에 여전히 연결되어 있는 SSH 클라이언트를 사용하여 `Dockerfile` 이름의 파일을 생성합니다. 예를 들면 다음과 같이 **`touch`** 명령을 실행합니다.

   ```
   sudo touch /tmp/Dockerfile
   ```

1. 다음 내용을 `Dockerfile` 파일에 추가합니다.

   ```
   # Build a Docker image based on the Amazon Linux 2 Docker image.
   FROM amazonlinux:2
   
   # install common tools
   RUN yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
   RUN yum update -y
   RUN yum install -y sudo bash curl wget git man-db nano vim bash-completion tmux  gcc gcc-c++ make tar
   
   # Enable the Docker container to communicate with AWS Cloud9 by
   # installing SSH.
   RUN yum install -y openssh-server
   
   # Ensure that Node.js is installed.
   RUN yum install -y nodejs
   
   # Create user and enable root access
   RUN useradd --uid 1000 --shell /bin/bash -m --home-dir /home/ubuntu ubuntu && \
       sed -i 's/%wheel\s.*/%wheel ALL=NOPASSWD:ALL/' /etc/sudoers && \
       usermod -a -G wheel ubuntu
   
   # Add the AWS Cloud9 SSH public key to the Docker container.
   # This assumes a file named authorized_keys containing the
   # AWS Cloud9 SSH public key already exists in the same
   # directory as the Dockerfile.
   RUN mkdir -p /home/ubuntu/.ssh
   ADD ./authorized_keys /home/ubuntu/.ssh/authorized_keys
   RUN chown -R ubuntu /home/ubuntu/.ssh /home/ubuntu/.ssh/authorized_keys && \
   chmod 700 /home/ubuntu/.ssh && \
   chmod 600 /home/ubuntu/.ssh/authorized_keys
   
   # Update the password to a random one for the user ubuntu.
   RUN echo "ubuntu:$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)" | chpasswd
   
   # pre-install Cloud9 dependencies
   USER ubuntu
   RUN curl https://d2j6vhu5uywtq3.cloudfront.net/static/c9-install.sh | bash
   
   USER root
   # Start SSH in the Docker container.
   CMD ssh-keygen -A && /usr/sbin/sshd -D
   ```

   앞의 내용을 `Dockerfile` 파일에 추가하려면 다음과 같이 인스턴스에서 **`vi`** 유틸리티를 사용할 수 있습니다.

   1.  AWS Cloud9 를 사용하여 `/tmp/Dockerfile` 파일을 열고 편집합니다.

      ```
      sudo vi /tmp/Dockerfile
      ```

   1. 앞의 내용을 `Dockerfile` 파일에 붙여 넣습니다. 이 동작을 수행하는 방법을 잘 모르는 경우 SSH 클라이언트 설명서를 참조하십시오.

   1. 명령 모드로 전환합니다. 이렇게 하려면 `Esc` 키를 누릅니다. 그러면 `-- INSERT --`가 창의 하단에서 사라집니다.

   1. `:wq`를 입력하여 `/tmp/Dockerfile` 파일에 쓰고 나서 파일을 저장한 다음 **`vi`**를 종료한 후, `Enter`를 누릅니다.
**참고**  
자주 업데이트되는 Docker 이미지 목록에 액세스할 수 있습니다 AWS CodeBuild. 자세한 내용은 *AWS CodeBuild 사용 설명서*에서 [CodeBuild에서 제공하는 Docker 이미지](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-available.html)를 참조하세요.

1. 인스턴스에서 사용할 Docker 컨테이너에 대한 AWS Cloud9 SSH 퍼블릭 키가 포함된 파일을 생성합니다. 이렇게 하려면 예를 들어** `touch` **명령을 실행하여 `Dockerfile` 파일과 같은 디렉터리에 이름이 `authorized_keys`인 파일을 생성합니다.

   ```
   sudo touch /tmp/authorized_keys
   ```

1. `authorized_keys` 파일에 AWS Cloud9 SSH 퍼블릭 키를 추가합니다. AWS Cloud9 SSH 퍼블릭 키를 가져오려면 다음을 수행합니다.

   1. [https://console.aws.amazon.com/cloud9/](https://console.aws.amazon.com/cloud9/) AWS Cloud9 콘솔을 엽니다.

   1.  AWS 탐색 모음의 AWS 리전 선택기에서이 주제의 뒷부분에서 AWS Cloud9 개발 환경을 생성할 AWS 리전을 선택합니다.

   1. 시작 페이지가 표시되면 **새 AWS Cloud9 환경에서** **환경 생성을** 선택합니다. 그렇지 않으면 **Create environment**(환경 생성)를 선택합니다.

   1. [**환경 이름 지정(Name environment)**] 페이지의 [**이름(Name)**]에 환경의 이름을 입력합니다. (여기서는 이름이 중요하지 않습니다. 나중에 다른 이름을 선택할 수 있습니다.)

   1. **다음 단계**를 선택합니다.

   1. **Environment type(환경 유형)**에서 **Connect and run in remote server(SSH)(원격 서버에서 연결 및 실행(SSH))**를 선택합니다.

   1. **View public SSH key(퍼블릭 SSH 키 보기)**를 확장합니다.

   1. **Copy key to clipboard(클립보드에 키 복사)**를 선택합니다. (이 항목은 **View public SSH key(퍼블릭 SSH 키 보기)** 및 **Advanced settings(고급 설정)** 사이에 있습니다.)

   1. **취소**를 선택합니다.

   1. 클립보드의 내용을 `authorized_keys` 파일에 붙여 넣고 나서 파일을 저장합니다. 예를 들어 이 단계의 앞부분에서 설명한 대로 **`vi`** 유틸리티를 사용할 수 있습니다.

1. ** `build` ** 작업을 사용하고 `cloud9-image:latest` 태그를 이미지에 추가하고 사용할 `Dockerfile` 파일의 경로를 지정하여 ** `docker` ** 명령을 실행함으로써 이미지를 빌드합니다.

   ```
   sudo docker build -t cloud9-image:latest /tmp
   ```

   명령이 성공적으로 실행되면 빌드 출력의 마지막 두 줄에 `Successfully built` 및 `Successfully tagged`가 표시됩니다.

   Docker가 이미지를 성공적으로 빌드했는지 확인하려면 `image ls` 작업을 사용하여** `docker` **명령을 실행합니다.

   ```
   sudo docker image ls
   ```

   명령이 성공적으로 실행되면 출력 디스플레이에 항목 하나가 표시됩니다. 이 항목에서 `REPOSITORY` 필드는 `cloud9-image`로 설정되었으며 `TAG` 필드는 `latest`로 설정되었습니다.

1. Amazon EC2 인스턴스의 퍼블릭 IP 주소를 적어둡니다. [4단계: 환경 생성](#sample-docker-env)에 필요한 정보입니다. 인스턴스의 퍼블릭 IP 주소를 잘 모르는 경우 인스턴스에서 다음 명령을 실행하여 해당 주소를 가져올 수 있습니다.

   ```
   curl http://169.254.169.254/latest/meta-data/public-ipv4
   ```

## 3단계: 컨테이너 실행
<a name="sample-docker-run"></a>

이 단계에서는 인스턴스에서 도커 컨테이너를 실행합니다. 이 컨테이너는 이전 단계에서 빌드한 이미지에 기초합니다.

1. Docker 컨테이너를 실행하려면** `run` **작업과 다음 옵션을 사용하여 인스턴스에 대해** `docker` **명령을 실행합니다.

   ```
   sudo docker run -d -it --expose 9090 -p 0.0.0.0:9090:22 --name cloud9 cloud9-image:latest
   ```
   +  `-d`는 컨테이너를 분리 모드로 실행하고 컨테이너(이 샘플에서는 SSH 클라이언트)를 실행하는 데 사용되는 루트 프로세스가 종료될 때마다 종료합니다.
   +  `-it`는 의사 TTY가 할당된 컨테이너를 실행하고 컨테이너가 연결되지 않았어도 STDIN을 열린 상태로 유지합니다.
   +  `--expose`는 지정한 포트(이 샘플에서는 `9090`)를 컨테이너에서 사용할 수 있도록 설정합니다.
   +  `-p`는 지정한 IP 주소 및 포트를 통해 지정한 포트를 Amazon EC2 인스턴스 내부에서 사용할 수 있도록 설정합니다. 이 샘플에서 컨테이너의 포트 `9090`은 Amazon EC2 인스턴스의 포트 `22`를 통해 내부에서 액세스할 수 있습니다.
   +  `--name`은 컨테이너용 인간이 읽을 수 있는 이름(이 샘플에서는 `cloud9`)입니다.
   +  `cloud9-image:latest`는 컨테이너를 실행하는 데 사용할 빌드된 이미지의 인간이 읽을 수 있는 이름입니다.

   Docker가 컨테이너를 성공적으로 실행하고 있는지 확인하려면 `container ls` 작업을 사용하여** `docker` **명령을 실행합니다.

   ```
   sudo docker container ls
   ```

   명령이 성공적으로 실행되면 출력 디스플레이에 항목 하나가 표시됩니다. 이 항목에서 `IMAGE` 필드는 `cloud9-image:latest`로 설정되었으며 `NAMES` 필드는 `cloud9`로 설정되었습니다.

1. 실행 중인 컨테이너에 로그인합니다. 이렇게 하려면** `exec` **작업과 다음 옵션을 사용하여** `docker` **명령을 실행합니다.

   ```
   sudo docker exec -it cloud9 bash
   ```
   +  `-it`는 의사 TTY가 할당된 컨테이너를 실행하고 컨테이너가 연결되지 않았어도 STDIN을 열린 상태로 유지합니다.
   +  `cloud9`는 실행 중인 컨테이너의 인간이 읽을 수 있는 이름입니다.
   +  `bash`는 실행 중인 컨테이너에서 표준 셸을 시작합니다.

   성공할 경우 터미널 프롬프트가 변경되어 컨테이너의 로그인된 사용자 이름과 컨테이너의 ID를 표시합니다.
**참고**  
실행 중인 컨테이너에서 로그아웃하려면 **`exit`** 명령을 실행합니다. 터미널 프롬프트가 다시 변경되어 인스턴스의 로그인된 사용자 이름과 인스턴스의 프라이빗 DNS를 표시합니다. 컨테이너가 여전히 실행 중이어야 합니다.

1. 로그인 후 시작 AWS Cloud9 하려는 실행 중인 컨테이너의 디렉터리에 대해 액세스 권한을 ** `rwxr-xr-x` **로 설정합니다. 다시 말해서 소유자에게는 읽기/쓰기/실행 권한, 그룹에는 읽기/실행 권한, 그리고 그 밖의 사람에게는 읽기/실행 권한이 부여됩니다. 예를 들어 디렉터리의 경로가 `~`인 경우 다음과 같이 실행 중인 컨테이너에서 **`chmod`** 명령을 실행하여 디렉터리에서 이러한 권한을 설정할 수 있습니다.

   ```
   sudo chmod u=rwx,g=rx,o=rx ~
   ```

1. Node.js 바이너리를 포함하는 실행 중인 컨테이너의 디렉터리에 대한 경로를 적어둡니다. 이 경로는 [4단계: 환경 생성](#sample-docker-env)에 필요합니다. 이 경로를 잘 모르면 실행 중인 컨테이너에서 다음 명령을 실행하여 가져옵니다.

   ```
   which node
   ```

## 4단계: 환경 생성
<a name="sample-docker-env"></a>

이 단계에서는 AWS Cloud9 를 사용하여 AWS Cloud9 SSH 개발 환경을 생성하고 이를 실행 중인 Docker 컨테이너에 연결합니다. 가 환경을 AWS Cloud9 생성하면 컨테이너의 파일 및 코드 작업을 시작할 수 있도록 AWS Cloud9 IDE가 표시됩니다.

 AWS Cloud9 콘솔을 사용하여 AWS Cloud9 SSH 개발 환경을 생성합니다. CLI를 사용하여 SSH 환경을 만들 수는 없습니다.

### 사전 조건
<a name="prerequisites"></a>
+ 먼저 [설 AWS Cloud9정](setting-up.md)의 단계를 완료했는지 확인합니다. 이렇게 해야 AWS Cloud9 콘솔에 로그인하여 환경을 생성할 수 있습니다.
+ 환경에 연결 AWS Cloud9 하려는 기존 클라우드 컴퓨팅 인스턴스(예:의 Amazon EC2 인스턴스 AWS 계정) 또는 자체 서버를 식별합니다.
+ 기존 인스턴스 또는 자체 서버가 모든 [SSH 호스트 요구 사항](ssh-settings.md#ssh-settings-requirements)을 충족해야 합니다. 이러한 요구 사항에는 특정 버전의 Python, Node.js 및 기타 구성 요소 설치, 로그인 후 AWS Cloud9 이 시작하도록 할 디렉터리에 대한 특정 권한 설정, 연결된 Amazon Virtual Private Cloud 설정이 포함됩니다.

### SSH 환경 생성
<a name="create-the-envsshtitle"></a>

1. 위의 사전 조건을 완료해야 합니다.

1. 아직 연결되지 않은 경우 SSH 클라이언트를 사용하여 기존 인스턴스 또는 자체 서버에 연결합니다. 이렇게 하면 필요한 공개 SSH 키 값을 인스턴스나 서버에 추가할 수 있습니다. 이 절차의 뒷부분에서 자세하게 설명합니다.
**참고**  
기존 AWS 클라우드 컴퓨팅 인스턴스에 연결하려면 다음 리소스 중 하나 이상을 참조하세요.  
Amazon EC2의 경우 *Amazon EC2 사용 설명서*에서 [Linux 인스턴스에 연결](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html)을 참조하세요.
Amazon Lightsail에 대해서는 **Amazon Lightsail 설명서의 [Linux/UNIX 기반 Lightsail 인스턴스에 연결](https://lightsail.aws.amazon.com/ls/docs/how-to/article/lightsail-how-to-connect-to-your-instance-virtual-private-server)을 참조하세요.
자세한 AWS Elastic Beanstalk내용은 *AWS Elastic Beanstalk 개발자 안내서*의 [서버 인스턴스 나열 및 연결을 참조하세요](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.ec2connect.html).
의 경우 *AWS OpsWorks 사용 설명서*의 [SSH를 사용하여 Linux 인스턴스에 로그인](https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-ssh.html)을 AWS OpsWorks참조하세요.
기타 정보는 해당 특정 서비스에 대한 설명서를 AWS 서비스참조하세요.
자체 서버에 연결하려면 SSH를 사용하세요. SSH는 macOS 및 Linux 운영 체제에서는 이미 설치되어 있습니다. 윈도우에서 SSH를 사용하여 서버에 연결하려면 [PuTTY](https://www.putty.org/)를 설치해야 합니다.

1. [https://console.aws.amazon.com/cloud9/](https://console.aws.amazon.com/cloud9/) AWS Cloud9 콘솔에 로그인합니다.

1.  AWS Cloud9 콘솔에 로그인한 후 상단 탐색 모음에서 환경을 생성할 AWS 리전 를 선택합니다. 사용 가능한 목록은의 섹션을 AWS 리전참조[AWS Cloud9](https://docs.aws.amazon.com/general/latest/gr/rande.html#cloud9_region)하세요*AWS 일반 참조*.  
![\[AWS Cloud9 콘솔의 리전 선택기\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/consolas_region_new_UX.png)

1. 개발 환경을 처음 생성하는 경우 시작 페이지가 표시됩니다. **새 AWS Cloud9 환경** 패널에서 **환경 생성을** 선택합니다.

   이전에 개발 환경을 생성한 경우 화면 왼쪽의 창을 확장합니다. **Your environments**(사용자 환경)를 선택하고 **Create environment**(환경 생성)를 선택합니다.

   **시작** 페이지에서:  
![\[시작 페이지가 표시되면 Create environment(환경 생성) 버튼 선택\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/create_welcome_env_new_UX.png)

   또는 **Your environments**(환경) 페이지에서:  
![\[시작 페이지가 표시되지 않으면 Create environment(환경 생성) 버튼 선택\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/console_create_env_new_UX.png)

1. **Create environment(환경 생성)** 페이지에 환경의 이름을 입력합니다.

1. **Description**(설명)에 환경에 대한 설명을 입력합니다. 본 자습서에서는 `This environment is for the AWS Cloud9 tutorial.`을 사용합니다.

1. **Environment type**(환경 유형)에서는 다음 옵션 중에서 **Existing Compute**(기존 컴퓨팅)를 선택합니다.
   + **새 EC2 인스턴스** - SSH를 통해 직접에 연결할 AWS Cloud9 수 있는 Amazon EC2 인스턴스를 시작합니다.
   + ** 기존 컴퓨팅 ** - 열린 인바운드 포트가 필요하지 않은 Amazon EC2 인스턴스를 시작합니다.는를 통해 인스턴스에 AWS Cloud9 연결합니다[AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html).
     + **Existing compute**(기존 컴퓨팅) 옵션을 선택하면 Systems Manager가 사용자를 대신하여 EC2 인스턴스와 상호 작용할 수 있도록 서비스 역할과 IAM 인스턴스 프로파일이 생성됩니다. 인터페이스의 더 아래에 있는 **Service role and instance profile for Systems Manager access**(Systems Manager 액세스를 위한 서비스 역할 및 인스턴스 프로파일) 섹션에서 서비스 역할과 인스턴스 프로파일의 이름을 모두 확인할 수 있습니다. 자세한 내용은 [를 사용하여 수신하지 않는 EC2 인스턴스에 액세스 AWS Systems Manager](ec2-ssm.md) 단원을 참조하십시오.
**주의**  
환경에 대한 EC2 인스턴스를 생성하면 Amazon EC2 AWS 계정 에 대한 요금이에 부과될 수 있습니다. Systems Manager를 사용하여 EC2 인스턴스에 대한 연결을 관리하는 데 따른 추가 비용은 없습니다.
**주의**  
AWS Cloud9 는 SSH 퍼블릭 키를 사용하여 서버에 안전하게 연결합니다. 보안 연결을 설정하려면 다음 단계에서 공개 키를 `~/.ssh/authorized_keys` 파일에 추가하고 로그인 보안 인증 정보를 제공하십시오. **Copy key to clipboard**(클립보드에 키 복사)를 선택하여 SSH 키를 복사하거나, **View public SSH key**(공개 SSH 키 보기)를 선택하여 키를 표시합니다.

1. **Existing compute**(기존 컴퓨팅) 패널의 **User**(사용자)에 이 절차의 앞부분에서 인스턴스 또는 서버에 연결하는 데 사용한 로그인 이름을 입력합니다. 예를 들어 AWS 클라우드 컴퓨팅 인스턴스의 경우 이 값은 `ec2-user`, `ubuntu` 또는 `root`일 수 있습니다.
**참고**  
로그인 이름이 인스턴스 또는 서버의 관리 권한 또는 관리자 사용자와 연결되는 것이 좋습니다. 더 자세히 말하자면, 이 로그인 이름은 인스턴스 또는 서버에서 Node.js 설치를 소유하는 것이 좋습니다. 이를 확인하려면 인스턴스 또는 서버의 터미널에서 ** `ls -l $(which node)` **(또는 `nvm`을 사용하는 경우 ** `ls -l $(nvm which node)` **) 명령을 실행합니다. 이 명령은 Node.js 설치의 소유자 이름을 표시합니다. 설치의 권한, 그룹 이름과 위치도 표시합니다.

1. **Host**(호스트)에 인스턴스 또는 서버의 퍼블릭 IP 주소(기본) 또는 호스트 이름을 입력합니다.

1. **포트에** 인스턴스 또는 서버에 연결하기 위해 AWS Cloud9 사용할 포트를 입력합니다. 또는 기본 포트를 그대로 유지합니다.

1. **Additional details - optional**(추가 상세 정보 - 선택 사항)을 선택하여 환경 경로, node.js 바이너리 경로 및 SSH 점프 호스트 정보를 표시합니다.

1. **환경 경로**에 시작 AWS Cloud9 하려는 인스턴스 또는 서버의 디렉터리 경로를 입력합니다. 이 절차의 사전 요구 사항에서 이를 이미 확인했습니다. 이 항목을 비워 두면 AWS Cloud9 은 로그인 후 인스턴스 또는 서버가 일반적으로 시작되는 디렉터리를 사용합니다. 이 디렉터리는 일반적으로 홈 또는 기본 디렉터리입니다.

1. **Path to Node.js binary path**(Node.js 바이너리 경로로 가는 경로)에 경로 정보를 입력하여, 인스턴스 또는 서버의 Node.js 바이너리로 가는 경로를 지정합니다. 경로를 가져오려면 인스턴스 또는 서버에서 **`which node`**(또는 `nvm`을 사용하는 경우 ** `nvm which node` **) 명령을 실행할 수 있습니다. 예를 들어 이 경로는 `/usr/bin/node`일 수 있습니다. 이 항목을 비워 두면 AWS Cloud9 은 연결을 시도할 때 Node.js 바이너리의 위치를 추측합니다.

1. **SSH jump host**(SSH 점프 호스트)에 인스턴스 또는 서버가 사용하는 점프 호스트에 대한 정보를 입력합니다. 형식 `USER_NAME@HOSTNAME:PORT_NUMBER`(예:`ec2-user@:ip-192-0-2-0:22`)를 사용합니다.

   점프 호스트는 다음 요구 사항을 충족해야 합니다.
   + SSH를 사용하여 퍼블릭 인터넷을 통해 접근 가능해야 합니다.
   + 지정된 포트를 통해 어떤 IP 주소에서든 인바운드 액세스를 허용해야 합니다.
   + 기존 인스턴스 또는 서버의 `~/.ssh/authorized_keys` 파일에 복사된 퍼블릭 SSH 키 값을 점프 호스트의 `~/.ssh/authorized_keys` 파일에도 복사해야 합니다.
   + Netcat이 설치되어 있어야 합니다.

1. 각 태그에 **키**와 **값**을 지정하여 최대 50개의 태그를 추가합니다. **Add new tag**(새 태그 추가)를 선택하면 됩니다. 태그는 리소스 태그로 AWS Cloud9 환경에 연결되며 CloudFormation 스택, Amazon EC2 인스턴스 및 Amazon EC2 보안 그룹의 기본 리소스로 전파됩니다. 태그에 대한 자세한 내용은 *[IAM 사용 설명서](https://docs.aws.amazon.com/IAM/latest/UserGuide/)*의 [AWS 리소스 태그를 사용한 액세스 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html) 및이 설명서의 태그에 대한 [고급 정보를](tags.md) 참조하세요.
**주의**  
태그를 생성한 후 이러한 태그를 업데이트하면 변경 사항이 기본 리소스에 전파되지 않습니다. 자세한 내용은 [태그](tags.md)에 대한 고급 정보에서 [기본 리소스에 태그 업데이트 전파](tags.md#tags-propagate) 섹션을 참조하세요.

1. **Create**(생성)를 선택하여 환경을 만들면 홈 페이지로 리디렉션됩니다. 계정이 성공적으로 생성되면 AWS Cloud9 콘솔 상단에 녹색 플래시 바가 나타납니다. 새 환경을 선택하고 **Open in Cloud9**(Cloud9에서 열기)을 선택하여 IDE를 시작할 수 있습니다.  
![\[AWS Cloud9 AWS Cloud9 콘솔의 IDE 선택기\]](http://docs.aws.amazon.com/ko_kr/cloud9/latest/user-guide/images/cloud9-ide-open.png)

   계정이 생성되지 못하면 AWS Cloud9 콘솔 상단에 적색 플래시바가 나타납니다. 웹 브라우저, AWS 액세스 권한, 인스턴스 또는 연결된 네트워크의 문제로 인해 계정이 생성되지 않을 수 있습니다. 계정 장애를 일으킬 수 있는 문제를 해결하는 방법 관련 정보는 [AWS Cloud9 문제 해결 섹션](troubleshooting.md#troubleshooting-env-loading)에서 확인할 수 있습니다.

**참고**  
환경에서 프록시를 사용하여 인터넷에 액세스하는 경우 종속성을 설치할 수 AWS Cloud9 있도록에 프록시 세부 정보를 제공해야 합니다. 자세한 내용은 [종속성을 설치하지 못함](troubleshooting.md#proxy-failed-dependencies) 단원을 참조하십시오.

## 5단계: 코드 실행
<a name="sample-docker-code"></a>

이 단계에서는 AWS Cloud9 IDE를 사용하여 실행 중인 Docker 컨테이너 내에서 샘플 애플리케이션을 실행합니다.

1. 실행 중인 컨테이너에 대해 AWS Cloud9 IDE가 표시된 상태에서 샘플 채팅 서버를 시작합니다. 이렇게 하려면 **Environment(환경)** 창에서 샘플 `workspace/server.js` 파일을 마우스 오른쪽 버튼으로 클릭하고 나서 **Run(실행)**을 선택합니다.

1. 샘플 애플리케이션을 미리 봅니다. 이렇게 하려면 **Environment(환경)** 창에서 `workspace/client/index.html` 파일을 엽니다. 그런 다음, 메뉴 모음에서 **Tools, Preview, Preview Running Application(도구, 미리 보기, 실행 중인 애플리케이션 미리 보기)**을 선택합니다.

1. 애플리케이션의 미리 보기 탭에서 **Your Name(이름)**에 자신의 이름을 입력합니다. [**Message**]에 메시지를 입력합니다. 그런 다음 **Send(전송)**를 선택합니다. 채팅 서버에서 이름과 메시지를 목록에 추가합니다.

## 6단계: 정리
<a name="sample-docker-clean-up"></a>

이 단계에서는 환경을 삭제하고 Amazon EC2 인스턴스에서 AWS Cloud9 및 Docker 지원 파일을 제거합니다. 또한이 샘플 사용을 완료한 후 AWS 계정에 지속적인 요금이 부과되지 않도록 하려면 Docker를 실행하는 Amazon EC2 인스턴스를 종료해야 합니다.

### 6.1단계: 환경 삭제
<a name="step-6-1-delete-the-envtitle"></a>

환경을 삭제하려면 [에서 환경 삭제 AWS Cloud9](delete-environment.md) 섹션을 참조하세요.

### 6.2단계: 컨테이너에서 AWS Cloud9 지원 파일 제거
<a name="step-6-2-remove-ac9-support-files-from-the-container"></a>

환경을 삭제한 후에도 일부 AWS Cloud9 지원 파일은 여전히 컨테이너에 남아 있습니다. 컨테이너를 계속 사용하고 싶지만 이러한 지원 파일이 더 이상 필요하지 않은 경우 로그인 후 시작 AWS Cloud9 하도록 지정한 컨테이너의 디렉터리에서 `.c9` 폴더를 삭제합니다. 예를 들어 디렉터리가 `~`인 경우 다음과 같이 ** `-r` ** 옵션을 사용하여 ** `rm` ** 명령을 실행합니다.

```
sudo rm -r ~/.c9
```

### 6.3단계: 인스턴스에서 Docker 지원 파일 제거
<a name="step-6-3-remove-docker-support-files-from-the-instance"></a>

Amazon EC2 인스턴스에서 Docker 컨테이너, Docker 이미지 및 Docker를 더 이상 유지하지 않고 인스턴스만 유지하려는 경우 다음과 같이 이러한 Docker 지원 파일을 제거할 수 있습니다.

1. 인스턴스에서 도커 컨테이너를 제거합니다. 이렇게 하려면 ** `stop` ** 및 ** `rm` ** 중지 작업과 사용자가 알아볼 수 있는 컨테이너 이름을 사용하여 인스턴스에 대해 ** `docker` ** 명령을 실행합니다.

   ```
   sudo docker stop cloud9
   sudo docker rm cloud9
   ```

1. 인스턴스에서 도커 이미지를 제거합니다. 이렇게 하려면** `image rm` **작업과 이미지의 태그를 사용하여 인스턴스에 대해** `docker` **명령을 실행합니다.

   ```
   sudo docker image rm cloud9-image:latest
   ```

1. 여전히 존재할 수 있는 추가 도커 지원 파일을 제거합니다. 이렇게 하려면** `system prune` **작업을 사용하여 인스턴스에 대해** `docker` **명령을 실행합니다.

   ```
   sudo docker system prune -a
   ```

1. 도커를 제거합니다. 이렇게 하려면 제거할 ** `docker` ** 패키지를 지정하고 ** `remove` ** 작업을 사용하여 인스턴스에 대해 ** `yum` ** 명령을 실행합니다.

   Amazon Linux의 경우:

   ```
   sudo yum -y remove docker
   ```

   Ubuntu Server:

   ```
   sudo apt -y remove docker
   ```

   또한 이전에 생성한 `Dockerfile` 및 `authorized_keys` 파일도 제거할 수 있습니다. 예를 들면 인스턴스에서 **`rm`** 명령을 실행합니다.

   ```
   sudo rm /tmp/Dockerfile
   sudo rm /tmp/authorized_keys
   ```

### 6.4단계: 인스턴스 종료
<a name="step-6-4-terminate-the-instance"></a>

Amazon EC2 인스턴스를 종료하려면 *Amazon EC2 사용 설명서*에서 [인스턴스 종료](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)를 참조하세요.