출처: subicura.com/2017/01/19/docker-guide-for-beginners-2.html
docker version
버전을 확인합니다 (client와 Server 정보가 출력됩니다)
도커는 Client와 Server역할을 동시에 수행할 수 있습니다.
도커 커맨드를 입력하면 도커 클라이언트가 도커 서버로 명령을 전송하고 결과를 받아 터미널에 출력합니다.
docker run
컨테이너를 실행합니다. 이미지가 저장되어 있는지 확인하고 이미지가 없다면 다운로드 (pull)한 후 컨테이너를 생성하고 시작합니다.
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
자주 사용하는 옵션들입니다.
옵션설명
-d | detached mode 흔히 말하는 백그라운드 모드 |
-p | 호스트와 컨테이너의 포트를 연결 (포워딩) |
-v | 호스트와 컨테이너의 디렉토리를 연결 (마운트) |
-e | 컨테이너 내에서 사용할 환경변수 설정 |
–name | 컨테이너 이름 설정 |
–rm | 프로세스 종료시 컨테이너 자동 제거 |
-it | -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션 |
–link | 컨테이너 연결 [컨테이너명:별칭] |
몇 가지 예시를 들자면,
- ubuntu container 만들기
$ docker run ubuntu:18.04
이미지를 다운받고, 컨테이너가 실행되었지만, 그 이후 따로 명령어가 없기 때문에 컨테이너는 생성되자마자 종료됩니다.
이번에는 /bin/bash 명령어를 입력해서 컨테이너를 실행해 보겠습니다.
$ docker run --rm -it ubuntu:18.04 /bin/bash
--rm 옵션을 넣으면 실행되고 꺼질때 Container가 삭제된다. -it 옵션은 command line을 통해 docker와 통신하기 위해서 이루어집니다.
당연한 얘기겠지만 리눅스에서 시스템을 짤 경우 ubuntu를 실행할 이유가 없겠습니다.
- redis container 만들기
$ docker run -d -p 1234:6379 redis
-d 키를 입력하지 않으면 프로세스가 foreground로 실행되어 아무키도 입력할 수 없게 됩니다. ctrl-c 키로 빠져나올 수 있습니다. -p 옵션을 사용하여 호스트의 1234포트를 컨테이너의 6379포트로 연결하였습니다.
~ telnet localhost 1234
Trying ::1...
Connected to localhost.
Escape character is '^]'.
set mykey hello
+OK
get mykey
$5
hello
quit
+OK
Connection closed by foreign host.
~
이런식으로 Telnet을 이용해서 연결이 가능합니다.
- mysql container 만들기
docker run -d -p 3306:3306 \
-e MYSQL_ALLOW_EMPTY_PASSWORD=true \
--name mysql \
mysql:5.7
# MySQL test
$ mysql -h127.0.0.1 -uroot
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql> quit
-d 옵션은 백그라운드 모드, -p는 port연결을 위해 주는 옵션입니다.
MYSQL_ALLOW_EMPTY_PASSWORD는 패스워드 없이 root계정을 만들기 위해 설정합니다.
--name은 컨테이너의 이름을 설정해 줍니다. --name이없을 경우 랜덤하게 이름이 만들어집니다.
이 방법은 host os 에 mysql이 깔려있어야 합니다.
mysql 까는 방법:
www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-18-04
- wordpress container 만들기
위에서 만든 데이터베이스를 링크하는 법. 현재 --link는 deprecated되서 더이상 쓰진 않는다고 하는데,
docker network를 이용해야 한다고 합니다. --link는 개념용으로만 사용하는걸로...
# create mysql database
$ mysql -h127.0.0.1 -uroot
create database wp CHARACTER SET utf8;
grant all privileges on wp.* to wp@'%' identified by 'wp';
flush privileges;
quit
# run wordpress container
docker run -d -p 8080:80 \
--link mysql:mysql \
-e WORDPRESS_DB_HOST=mysql \
-e WORDPRESS_DB_NAME=wp \
-e WORDPRESS_DB_USER=wp \
-e WORDPRESS_DB_PASSWORD=wp \
wordpress
로컬호스트 8080 포트로 연결하면 웹 페이지를 볼 수 있습니다.
- tensorflow container 만들기
$ docker run -d -p 8888:8888 -p 6006:6006 teamlab/pydata-tensorflow:0.1
위 container는 numpy, scipy, pandas, jupyter, scikit-learn, gensim, BeautifulSoup4, Tensorflow 등이 설치되어 있습니다.
주피터 노트북으로 접속이 가능합니다.
'Cloud > Docker' 카테고리의 다른 글
Docker commit 하고, dockerhub에 push 하기 (0) | 2021.04.13 |
---|---|
컨테이너 업데이트와 Docker Compose (0) | 2020.12.10 |
도커(docker) 기본 commands (0) | 2020.12.07 |
도커(docker) 설치하고 실행하기 (0) | 2020.12.04 |
도커(docker)의 기본개념(basics) (0) | 2020.12.04 |