docker – create own

가. centOS Docker 설치

docker pull centos

https://hub.docker.com/_/centos/

나. Container 연결

centos Docker 를 기본으로 필요한 것들을 설치하고 이미지로 생성하여 개인 Repository 에 등록하는 순서로 진행하고자 한다.

docker run -t -i centos

 다. 개인 이미지를 만들자

컨테이너에 접속해서 원하는 라이브러리든 환경이든 구성을 한다.
예를 들면 아래와 같은 행위를 말하는 것이다. 지신이 설정하고자 하는 환경을 모두 구성한 후에 exit 명령어로 컨테이너를 종료한다

sudo yum groupinstall -y "Server with GUI"
sudo systemctl set-default graphical.target
sudo systemctl default
exit

라. Docker Commit

이제 아래와 같이 Docker 이미지를 Commit 하여 로컬에 이미지를 만든다

– m : 커밋 메시지
– a : Docker 만든 사람
– 0b261b… : 위에서 실행한 Container ID
– ouseruser/sintara:v1 : 만들고자 하는 Docker 명칭

$ docker commit -m "Added json gem" -a "Kate Smith" \
0b2616b0e5a8 tmddno1/tensormsa:v1

생성한 이미지를 확인해 보자. 정상적으로 만든 이미지가 조회가 되고 다시 컨테이너로 실행이 되면 정상이다.

docker images
docker run -t -i tmddno1/tensormsa:v1 /bin/bash

 

마. Docker Hub 에 계정 및 Repository 만들기

– https://hub.docker.com/ 에서 계정을 생성하고 Repository 를 만든다

지금까지 로컬에서 만든 이미지를 Docker Hub 에 올려서 공유해 보자
만들고 나면 docker pull tmddno1/tensormsa 이런식으로 자신의 경로가 생성된다

바. Docker Hub 에 업로드 하기

아래와 같이 로그인하고, 아까 만든 이미지를 PUSH 해주면 끝이다.

docker login 
docker push tmddno1/tensormsa

 사. Docker Hub 에서 받아서 다시 사용하기

받아서 사용하는 것은 중간에 했던 것과 동일하다.
아래와 같이 생성한 이미지를 PULL 하고 , 터미널에 실행하면 된다

docker pull tmddno1/tensormsa
docker run -t -i tmddno1/tensormsa:v1 /bin/bash

막 계정을 만들어서 최신 Tag 가 없다고 나온다면, 아래와 같이 실행하여 버전과 관계 없이 모든 내용을 다운 받도록 해보자

docker pull -a tmddno1/tensormsa

아. 사용하기

여기서 매우 중요한 것이 있다. Image 와 Container 는 다르다는 것이다.
Container 에서 아무리 수정을 하여도 Commit 하기 전까지 Image 는 절대 변경되지 않는다. 둘은 연관이 있으면서도 독립적인 관계인 것이다.
아래는 Container 관련 주요 명령어이다.

[리스트 보기]

sudo docker ps -a

[시작하기]

sudo docker start <containerID>
sudo docker attach <containerID>

[삭제하기]

sudo docker rm <containerID>

차. Docker 환경에서 Graphic 사용하기

원래 서버에는 XRDP 가 설치 되어있다고 가정하고 Container 생성시 아래와 같이 해주면 그래픽 사용가능

docker run -it --env="DISPLAY" --env="QT_X11_NO_MITSHM=1" --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" -p 8080:8080 -p 8998:8998 -p 8989:8989 -p 7077:7077 tmddno1/tensormsa:v1

Muliti – Terminal [Link]

PID=$(docker inspect --format {{.State.Pid}} 04fe75de21d4)
sudo nsenter --target $PID --mount --uts --ipc --net --pid

Container to Container Connection

sudo docker run --name db -d mongo
sudo docker run --name web -d -p 80:80 --link db:db nginx

Start Container with Daemon

docker run <option> -d <image> 
docker exec -it <container> bash

 

Leave a Reply

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