컨테이너 생성하기

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

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

우분투 컨테이너 실행하기

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

$ docker run ubuntu:16.04

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

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

다양한 docker run 옵션들 : https://docs.docker.com/engine/reference/commandline/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

이미지 이름에 별도의 태그를 붙이지 않으면 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

mysql 컨테이너에 설정할 수 있는 환경변수들 : https://hub.docker.com/_/mysql

위 명령어를 실행하면 두 가지 환경변수가 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 명령어를 사용한다.

Last updated