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됨