iOS 코드로 UI 짜기 (Code UI)
기본 방법
iOS 텍스트필드와 델리게이트 패턴
텍스트필드는 입력에 관한 세심한 관리가 필요하다. 동작에 따른 뷰컨트롤러와의 상호작용을 위해 델리게이트 패턴을 사용한다.
동작형태의 예시
- 유저가 입력을 시작할때(활성화 할것인지)
- 유저 입력 시작되고나서
- 입력내용 전체삭제 할지 말지
- 키보드의 엔터키가 눌렸을때 (다음 동작을 허락할지)
- 입력이 끝났을때
구현 예제
Docker Compose
- kubernetes와 같이 오케스트레이션 및 컨테이너화된 애플리케이션 관리에 널리 사용되는 도구이다.
- 다중 컨테이너 Docker 애플리케이션을 정의하고 실행하기 위한 도구이며 YAML 파일을 사용하여 애플리케이션 서비스를 수행한다.
- CLI를 이용하여 모든 서비스 라이프 사이클을 관리한다.
- YAML 코드를 통하여 여러개의 docker run 및 네트워크 볼륨을 생성 할 수 있다.
- compose로 실행된 컨테이너들은 독립된 네트워크로 컨테이너 간 통신이 가능하다.
Docker Compose 3단계 프로세스
- Dockerfile 작성 — 배포하고자 하는 애플리케이션 환경 정의 (선택)
docker-compose.yaml을 통해 하나 이상의 컨테이너 서비스를 실행할 수 있도록 서비스 정의docker compose up명령으로 YAML에 정의된 서비스를 시작하고 실행한다.
장점
- 서로 다른 OS 환경이라도 동일한 환경 구성이 가능하다. (이식성)
- 동일한 환경 사용으로 개발환경 이슈 발생시 팀간 소통이 쉽다.
- 복잡한 환경도 YAML 코드로 스크립트화 할 수 있어 휴먼에러 감소 및 자동화가 가능하다.
- docker compose CLI를 이용하여 쉽게 “멀티 컨테이너 애플리케이션"을 관리 할 수 있다.
단점
- 동시에 다수의 컨테이너 서비스를 수행하는 경우(MSA) 자원 활용률이 순간 높아질 수 있다.
- docker container에 관한 기술 이해도가 필요하여 진입 장벽이 높다.
YAML
- YAML? Yet Another Markup Language or YAML ain’t markup language (Text file)
- 사람이 쉽게 읽을 수 있는 데이터 직렬화 언어(위 → 아래)로 구성파일 작성에 주로 사용된다.
- 쉽고 이해할 수 있도록 설계되어 프로그래밍 언어로 사용되거나, 클라우드 자동환경 배포 도구(IaC 환경 구성)로 많이 사용된다 (AWS CloudFormation, RedHat Ansible 등)
코드 문법적 특징 — YAML vs JSON 비교
| 항목 | YAML | JSON |
|---|---|---|
| 정식명칭 | YAML ain’t markup language | JavaScript Object Notation |
| 주석 | 사용 가능 | 사용 불가 |
| 한글/유니코드 | 그대로 사용 가능 | 멀티바이트 문자는 인코딩 수행 |
| 주 용도 | 환경 구성 등의 설정 파일 | API 작성 시 사용 |
YAML 예시
Docker DNS
Docker 컨테이너는 IP를 사용자 정의 네트워크의 컨테이너 이름으로 자동 확인하는 DNS서버가 호스트에 생성된다 (127.0.0.11)
- Docker의 기본 docker0 bridge driver에는 DNS가 포함되어 있지 않음 → Docker0 bridge driver는 작동 안함
동일 네트워크 alias 할당을 통해 하나의 타겟 그룹을 만들어 요청에 Round Robin방식으로 응답함다.
컨테이너 생성시 호스트 시스템에서 다음 세파일을 복사하여 컨테이너 내부에 적용하여 컨테이너 간에 이름으로 찾기가 가능해진다.
- /etc/hostname
- /etc/hosts
- /etc/resolv.conf
libnetwork는 핵심 네트워킹 서비스 검색 기능 제공하며 모든 컨테이너가 이름으로 서로를 찾을 수 있게 한다. ( –name or –net-alias 사용 시 DNS에 등록)
Docker Exit Code

Docker Image Push
도커 로그인
Docker Volume
Docker에서 제공하는 volume 기술은 컨테이너 애플리케이션에서 생성되고 사용되는 테이터를 유지, 보존하기 위한 메커니즘을 제공한다, 컨테이너가 삭제되어도 volum은 독립적으로 운영되어 데이터를 유지한다.
volume 기술은 Docker HostOs와 컨테이너에서 직접 접근이 가능하다.
일반적으로 컨테이너 내부의 데이터는 컨테이너의 생명주가와 연관되어 컨테이너 종료 시 삭제도지만, 이를 지속적(Persistent)으로 보존하기 위한 방법으로 volume기술이 사용된다.
Docker는 3가지 volume 기술을 제공한다.

Bind mount
- 디렉토리와 파일을 mount 가능
- “호스트파일 시스템 절대경로”:”컨테이너 내부경로” 를 직접 mount
- 사전에 연결할 파일 또는 디렉토리의 권한대로 연결된다, 존재하지 않으면 root권한으로 생성된다
- 사전정의 없이 컨테이너 실행 시 자동으로 생성되고, 컨테이너 제거시 Bind mount가 자동으로 헤제된다 이때 생성된 호스트 디렉토리 데이터(file)는 보존된다
- Bind monun 방법은 데이터를 Host의 지정된 디렉토리에서 관리한다.