1. required privileges before run
   basically docker needs root permission to run.
   if other user want to run docker then give group “docker”.
   sudo usermod -aG docker ${USER}

2. run docker simply
 
docker run [options] IMAGE[:TAG|@DIGEST] [COMMAND] [ARGS…]

# options
-d     detached mode 흔히 말하는 백그라운드 모드
-p     호스트와 컨테이너의 포트를 연결 (포워딩)
-v     호스트와 컨테이너의 디렉토리를 연결 (마운트)
-e     컨테이너 내에서 사용할 환경변수 설정
–name     컨테이너 이름 설정
–rm     프로세스 종료시 컨테이너 자동 제거
-it     -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션
–link     컨테이너 연결 [컨테이너명:별칭]

ex>
# run ubuntu and stop immediately
docker run ubuntu:16.04

# run ubuntu and show shell prompt . when user exits, container will be removed.
docker run –rm -it ubuntu:16.04 /bin/bash

# run redis background with forwared port
docker run -d -p 1234:6379 redis

# run mysql with specified name and env. parameter
docker run -d -p 3306:3306 \
  -e MYSQL_ALLOW_EMPTY_PASSWORD=true \
  –name mysql \
  mysql:5.7
 
# run wordpress with mariadb
## run mariadb container
docker run -d -p 3301:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true –name mariadb mariadb:10.4.10

## create database wp
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:mariadb  \           # given name to mariadb-container
  -e WORDPRESS_DB_HOST=mysql \
  -e WORDPRESS_DB_NAME=wp \
  -e WORDPRESS_DB_USER=wp \
  -e WORDPRESS_DB_PASSWORD=wp \
  wordpress

3. docker network
to connect to a service inside docker open ports by firewalld

# add docker default network interface to trusted zone
firewall-cmd –permanent –zone=trusted –add-interface=docker0

# open port
firewall-cmd –permanent –zone=trusted –add-port=8080/tcp

# flush firewalld configurations
firewall-cmd –reload

4. create new image based on running container
docker commit [container-name] [image-name]

5. install docker compose
# reference url: https://docs.docker.com/compose/install

sudo curl -L “https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

6. CMD, ENTRYPOINT, RUN  in Dockerfile
# RUN
    : layer에서 동작하는 작업
      * 패키지설치
      * 파일수정
      * etc.
# ENTRYPOINT
    : 컨테이너 실행 후 반드시 동작하는 최종 작업/동작
      * [“commang”, “param1”, …] 와 같이 array형으로 기술을 권장
      * daemon 등 을 실행

# CMD
    : 컨테이너 실행 후 반드시 동작하는 최종작업/동작
      * 사용자가 “docker run “에 다른 명령어를 전달 할 경우 over-write 되어 무효화 처리
      * ENTRYPOINT의 default 파라메터로 사용 가능하며 사용자가 “docker run”에 명령어를 전달 할 경우 over-write됨

Leave a Reply

Your email address will not be published. Required fields are marked *