실습 환경 : Ubuntu 20.04.6 LTS
Ubuntu 버전 확인lsb_release -a
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo systemctl status docker
run
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...
docker run ubuntu:20.04
컨테이너 실행 시 이미지가 없다면 설치 후 컨테이너를 실행한다.
docker run --rm -it ubuntu:20.04 /bin/sh
-it
옵션으로 /bin/sh
에 접속해 컨테이너로 실행시킨 ubuntu의 쉘에 접속할 수 있다.
--rm
옵션으로 프로세스 종료 시 컨테이너가 자동 삭제되도록 한다.
docker run --rm -p 5678:5678 hashicorp/http-echo -text="hello world"
-p
옵션으로 내 PC의 5678번 포트와 hashicorp의 5678번 포트가 연결되어 명령을 보내면 "hello world" 을 반환해주는 웹 서버를 띄웠다.
docker run -d -p 3306:3306 \
-e MYSQL_ALLOW_EMPTY_PASSWORD=true \
--name mysql \
mysql:5.7
3306번 포트를 열고, MySQL을 비밀번호 없이 접속하며, 컨테이너 이름은 mysql이고, 사용 할 이미지는 mysql:5.7
docker exec -it mysql mysql
띄운 mysql 컨테이너를 접속해서
DB를 만들고 접근 권한을 설정해준다.
docker ps
docker ps -a
-a
옵션을 붙이면 중지된 컨테이너도 볼 수 있다.
컨테이너 실행 시 이름을 따로 정해주지 않으면 랜덤으로 이름이 정해진다.
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker rm [OPTIONS] CONTAINER [CONTAINER...]
docker logs [OPTIONS] CONTAINER
docker ps
로 확인한 컨테이너 아이디로 해당 컨테이너의 로그를 볼 수 있다.
docker images
docker rmi 이미지 이름
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
network
app-network 라는 이름의 네트워크를 만들고
mysql 컨테이너를 app-network에 연결시키고
wordpress 컨테이너를 app-network로 띄우면
접속 성공
wordpress와 같은 가상 네트워크 상에 있는 mysql에 wordpress 관련 테이블들이 생성된 것을 볼 수 있음
volume
-v /my/own/datadir:/var/lib/mysql
컨테이너 실행 시 -v
옵션으로 실제 서버의 경로를 연결시켜준다.
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
docker-compose up
없는 이미지는 pull 받고, DB가 올라오고, wordpress가 올라오고 있는 로그들을 직관적으로 볼 수 있다.
docker-compose down
도커 컴포즈로 띄운 mysql과 wordpress를 종료한다.
.dockerignore
.gitignore과 비슷한 역할로, 도커 이미지를 만들 때 민감한 정보가 든 파일을 제외시킴
ubuntu:latest 이미지를 사용하고, git을 설치하라는 명령을 Dockerfile로 작성한다.
docker build -t [이름]/[이미지 이름]:[tag] .
docker images
를 입력하면 생성된 이미지를 확인할 수 있다.