👉🏻 컨테이너 실행에 필요한 모든 정보(파일, 설정값)들을 포함
docker 설치 : https://haengsin.tistory.com/128 참고
(1) touch Dockerfile
touch Dockerfile 명령어를 통해 아무것도 없는 Dockerfile 생성(현재는 Docker 위치에서 진행)
(2) Dockerfile에 ubuntu 설치
Dockerfile에 18.04 버전 ubuntu 추가(만약, FROM ubuntu만 한다면 가장 최신 버전으로 설치)
(3) 이미지 생성
docker build -t image이름 .
명령어를 통해 Dockerfile이 있는 현재 경로(.)에서 test_image 라는 이름의 도커 image가 생성
(4) 생성된 이미지 확인
docker images
docker rmi image이름
docker run
docker ps
& docker ps -a
docker exec -it test_container bash
docker cp 로컬경로/옮길파일 컨테이너명:/컨테이너경로
ex) docker cp /DATA/Nanum/NanumGothic.ttf \
test_container:/usr/share/fonts/dejavu/
docker commit -a '작성자_strtype' 가동중인컨테이너 생성할이미지명
ex) docker commit -a 'auth_je' test_container test_image0.2`
-> container to image
docker save -o "test_image0.2" "test_image0.2.tar"
: 이미지를 tar파일로 만들어 filezila에서 로컬 컴퓨터에 옮긴 다음 다른 서버에도 동일하게 환경 설정 가능
-> image to tar
docker load -i "test_image0.2tar"
: tar파일로 만들어진 이미지를 다른 서버에서 읽은 후 다시 이미지로 만들기
-> tar to image
docker stop $(docker ps -q) && docker rm $(docker ps -aq)
docker rmi $(docker images -f "dangling=true" -q)
docker exec -u 0 -it airflow-airflow-triggerer-1 bash
docker-compose up
docker-compose up --build
🖥 build_image.sh
# !/bin/bash
# 필요한 주석
# 설정값
NAME = "이미지명"
docker build -t $NAME ./경로
echo "built $NAME image"
🖥 container_start.sh
# !/bin/bash
# 설정값
HOST_NAME = `hostname`
HOST_IP = `hostname -l | awk "{print $1}"`
NAME = "컨테이너명"
VOLUMNE = '/로컬경로/:/컨테이너경로/'
PID = `docker ps -a -f name=$NAME -q`
if [-n "$PID"]
then
echo "$NAME already exists"
exit 1
fi
docker run -d --restart=always \
-p 80:80 \ # <host포트>:<container포트>
-u aiusr \
-e HOST_NAME = $HOST_NAME \
-e HOST_IP = $HOST_IP \
-v $VOLUMNE \
--name 이미지명
$NAME
🖥 container_stop.sh
# !/bin/bash
# 설정값
NAME = "컨테이너명"
PID = `docker ps -a -f name=$NAME -q`
if [-n "$PID"]
then
docker stop $PID
docker rm $PID
echo "$NAME stopped"
fi
1) docker group 확인
# docker group 이 존재하는 것을 출력값을 통해 확인 가능
$ cat /etc/group | grep docker
docker:x:999:
# 만약 docker group이 존재하지 않는다면 아래 명령어 입력
$ sudo groupadd docker
# docker group에 사용자 추가 확인
$ id $USER
2) 사용자를 Docker group에 추가
# 현재 사용자($USER)를 docker 그룹에 추가
$ sudo usermod -aG docker $USER
# 새로고침
$ newgrp docker
1) 현재 docker daemoun 경로 확인
$ sudo systemctl status docker
docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2024-12-27 01:57:36 UTC; 28min ago
TriggeredBy: ● docker.socket
2) docker mount 경로 변경
$ sudo vi /lib/systemd/system/docker.service
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --data-root=/data/docker --user devops
ExecReload=/bin/kill -s HUP $MAINPID
--data-root=/data/docker --user {username}
추가