📙
Daeun's devlogs
  • First page
  • Docker
    • 이미지, 레이어
    • 컨테이너 생성하기
    • Dockerfile로 이미지 생성하기
    • 이미지를 dockerhub repo에 push하기
  • Python
  • Algorithm Study
  • 방향없는 그래프(undirected graph)
  • 방향있는 그래프(directed graph)
  • 위상 정렬(topological sort)
  • BFS(Breadth-First Search)
  • 다익스트라(Dijkstra)
  • 벨만-포드(Bellman-Ford) 알고리즘
  • 최소신장트리(Minimum Spanning Tree)
  • 크루스칼(Kruskal) 알고리즘
  • Algorithm quiz
    • quizzes & solutions
    • graph에서 cycle 유무 확인하기
    • bipartite(이분그래프) 확인하기
    • Dijkstra 알고리즘으로 모든 정점으로의 최단 경로 구하기
  • operating system
  • 스루풋 & 레이턴시
  • Cloud Computing
    • cloud computing 의 종류
    • CloudFormation으로 EC2 & ElasticIP 생성하기
  • Network
    • DataLink 계층
    • Network 계층
    • subnetting & CIDR
    • Domain Name System
    • Transport 계층
  • Unix
    • dig 커맨드로 DNS서버에 질의하기
    • APT(Advanced Package Tool)로 젠킨스 설치하기
    • usermod 로 그룹에 유저 추가하기
    • sysctl 로 커널 변수 조회하기
  • Django
    • 마이그레이션 실행여부 확인하기
    • 마이그레이션 DDL 쿼리 확인하기
  • Kubernetes
  • 쿠버네티스(Kubernetes) 개념
  • k8s 클러스터에 애플리케이션 서버 실행하기
  • kops로 AWS에 k8s 클러스터 생성하기
  • k8s 클러스터에 replicaset 생성하기
  • Nginx & WSGI pod를 service로 노출하기
  • Helm으로 쿠버네티스 리소스 배포하기
Powered by GitBook
On this page

Was this helpful?

  1. Docker

컨테이너 생성하기

Previous이미지, 레이어NextDockerfile로 이미지 생성하기

Last updated 5 years ago

Was this helpful?

컨테이너를 실행하는 명령어는 아래와 같다.

$ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

우분투 컨테이너 실행하기

우분투 이미지를 이용하여 우분투 컨테이너를 실행해보겠다. 로컬에 이미지가 없다면 자동으로 dockerhub에서 이미지를 내려받아 설치한다.

$ docker run ubuntu:16.04

별도의 옵션을 주지 않았기 때문에 컨테이너는 실행 후에 바로 종료된다. (컨테이너도 프로세스에 속한다.) 생성된 컨테이너에 터미널로 접속하고 싶다면 아래와 같이 옵션을 준다.

$ docker run -it --name ubuntu -v /Users/daeun/home/ ubuntu:16.04

--interactive, -i

표준입출력을 유지한다.

--tty, -t

가상 터미널을 할당한다.

--name

컨테이너에 이름을 붙인다.

--volume, -v

로컬의 디렉토리를 컨테이너에 마운팅시킨다.

다양한 docker run 옵션들 :

위 명령어를 실행하면 우분투 컨테이너를 실행하고 컨테이너 가상 터미널로 접속하게 된다. $ docker ps 로 실행중인 컨테이너들을 조회하면 아래와 같다.

CONTAINER ID    IMAGE            COMMAND CREATED        STATUS      PORTS  NAMES 
c8569ddafa3e ubuntu:16.04 "bash" 4 seconds ago         Up 3 seconds       ubuntu

redis 컨테이너 실행하기

레디스의 기본 포트는 6379번이다. 레디스 컨테이너를 백그라운드로 실행하고 컨테이너의 포트를 로컬호스트의 포트로 연결해보겠다.

$ docker run -d -p 1234:6379 redis

--detach, -d

컨테이너를 백그라운드로 실행하고 ID를 출력한다.

--publish, -p

컨테이너의 포트를 호스트로 연결한다. 호스트포트 : 컨테이너포트 형식.

이미지 이름에 별도의 태그를 붙이지 않으면 latest 태그가 자동으로 붙어서 최신버전의 이미지를 로컬에서 찾거나 dockerhub에서 내려받는다.

백그라운드로 redis 컨테이너가 실행되고 있는지 ping으로 테스트해보자. 로컬호스트의 1234번 포트와 연결되어 있으므로 포트번호 1234로 테스트한다.

➜  ~ ping localhost -p 1234
PATTERN: 0x1234
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.052 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.101 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.100 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.091 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.094 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.094 ms
^C
--- localhost ping statistics ---
6 packets transmitted, 6 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.052/0.089/0.101/0.017 ms

mysql 컨테이너 실행하기

환경변수를 옵션으로 줘서 mysql 컨테이너를 실행해보겠다.

$ docker run -e MYSQL_ALLOW_EMPTY_PASSWORD=true -e MYSQL_DATABASE='daeun-db' -p 3306:3306 mysql

--env, -e

컨테이너에 환경변수를 설정한다.

위 명령어를 실행하면 두 가지 환경변수가 mysql 에 셋팅된다.( root계정으로 로그인 시 비밀번호를 입력을 생략하고 daeun-db 라는 이름의 데이터베이스를 생성한다.) 컨테이너에 들어가서 확인해보자.

➜  ~ docker exec -it f43167e21be6 bash
root@f43167e21be6:/# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.17 MySQL Community Server - GPL

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| daeun-db           |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

mysql>

이미 실행중인 컨테이너에 접속하려면 $ docker exec 명령어를 사용한다.

mysql 컨테이너에 설정할 수 있는 환경변수들 :

https://docs.docker.com/engine/reference/commandline/run/
https://hub.docker.com/_/mysql