공식 튜토리얼로 배우는 도커 강의 2편

김태인·2022년 7월 15일
0

Docker

목록 보기
2/3
post-thumbnail

도커 7강 docker hub에 이미지 푸쉬하기

  • git이 github가 있다면, docker는 docker hub가 있다.
  • docker hub에 저장한 이미지를 푸시하고 원격으로 저장하기

Docker Hub Container Image Library | App Containerization

  • 이미지를 도커 허브에 원격으로 올리기위해 도커 허브에서 레포지토리를 만든다
  • 생성할 때는 PUBLIC으로 만들자
# 도커 허브로 푸시하는 쉘 명령어
docker push {아이디}/{이미지이름:tagname(버전)}
  • 도커 이미지에는 {아이디}/ 로 시작하는 이미지 네임은 없기 때문에 이미지가 존재하지 않는다는 오류가 발생한다!
  • 똑같이 이미지 이름을 맞춰주기 위해 태그를 작성하는 명령어를 사용한다
docker tag getting-started 유저네임/getting-started
  • 기존 이름의 이미지 또한 docker ps 로 존재한다는걸 확인할 수 있다!
  • docker image ls 를 통해 이미지의 존재 여부를 볼 수 있다
  • tag는 미입력 시 default 값으로 latest 가 붙는다.
docker login -u {유저네임}
# 입력 시 비밀번호 입력란이 나옴
# 도커 허브로 푸시하는 쉘 명령어
# 처음에는 오류가 발생했기 때문에 다시 푸시해준다
docker push {아이디}/{이미지이름:tagname(버전)}

도커 8강 새로운 환경에서 컨테이너 실행하기

Play with Docker

  • Play with Docker 사이트 이용하기
    • ADD NEW INSTANCE 로 가상의 환경을 만들어준다

      # window
      docker run -dp 3000:3000 {아이디}/{이미지이름}getting-started
  • Mac os M1을 쓰는 사람들은 하기의 설정을 해줘야 함
    • platform이 amd64인 이미지를 만들어 주는 것

      # mac os (M1)
      docker build --platform=linux/amd64 -t {아이디}/{이미지이름}getting-started:amd64 .
  • M1 Push
    docker push {아이디}/{이미지이름}:amd64

도커 9강 컨테이너와 이미지 지우기

  • 저장된 컨테이너 지우기(docker 프로그램으로도 지울 수 있다.)
# 실행중인 컨테이너 멈추기
docker stop {container id} or {image name}
# 컨테이너 삭제
docker rm {container id} or {image name}
# 강제로 실행 종료하고 컨테이너 지우기
docker rm -f {container id} or {image name}
  • 도커 이미지 지우기
# 생성되어있는 도커 이미지 확인하기
docker image ls
# 도커 이미지 삭제하기
docker rmi {image id} or {image name:tagname(버전)}
  • 동일한 아이디로 존재하는 이미지가 삭제되지 않는다면
    • 태그(버전이 있다면 버전이름까지)를 직접 적어 삭제한다

도커 10강 컨테이너들의 파일시스템 분리

  • 컨테이너는 시스템에 메모리를 할당받음
  • 하나의 이미지에서 나온 컨테이너라 하더라도 각각의 독립적으로 존재하기때문에 서로 접근할 수 없음
  • echo 명령어를 활용하여 string값을 데이터에 저장할 수 있음
docker run -d ubuntu bash -c "echo 'hello world' > data.txt && tail -f /dev/null"
  • tail부분은 프로세스가 끝나도 컨테이너가 꺼지지 않도록 하기 위해 붙여줌
  • Docker Dashboard에서 컨테이너 옆 open in terminal 버튼 클릭
ls
# 데이터 확인 명령어
cat /{데이터명}data.txt
# -i 는 상호교류를 하겠다 -t 는 터미널
docker run -it ubuntu
# ls 로 확인해보면 txt파일 없음 여기엔 
exit
docker ps
# 다시 확인해보면 처음 실행한 컨테이너만 남아있음 위에서 실행한 건 바로 없어짐
  1. ubuntu라는 도커에서 즉시 사용할 수 있는 이미지를 컨테이너로 run
    • 그런데 data.txt를 곁들인
  2. 실행해보니 data.txt가 들어있음
  3. 곁들이지 않은 ubuntu를 run -it 로 실행
  4. 실행해보니 여기에는 data.txt가 들어있지 않음
  • 즉, 바로 실행 가능한 ubuntu 라는 이미지를 예시로 실행해보니
    • 같은 이미지더라도 다른 작업을 해서 실행한 컨테이너라면
    • 그 결과가 다르다!
    • 하나의 이미지에서 생성한 컨테이너들은 독립적이며
    • 서로의 파일에 접근권한이 없다
# 처음 실행했던 컨테이너도 삭제
docker rm -f {container id}

# ps 로 확인해보면 아무것도 없음
# 이제 프로세시와 저장공간이 분리된 걸 확인했으니 볼륨을 이용해보좌

도커 11강 볼륨을 이용해서 데이터 유지하기

  • Docker Dashboard에서 컨테이너 옆 open in terminal 버튼 클릭
# 저장되는 db 위치 확인

ls
#상위 폴더 접근
cd ..
#etc 확인
ls
cd etc
# todos 확인
ls
cd todos
# todo.db가 있는걸 확인
ls
  • 볼륨 만들기
docker volume create {volume name}
  • 볼륨을 etc/todos 폴더에 저장되도록 마운트 해줌
docker run -dp 3000:3000 -v {volume name}:/etc/todos {image name}
  • 3000번 포트로 접속해서 디비를 쌓아본 후 다시 3001번 포트로 연결해보아도 디비가 살아있는것을 확인할 수 있음
docker run -dp 3001:3000 -v {volume name}:/etc/todos {image name}
profile
코딩이 취미가 되는 그날까지

0개의 댓글