[Docker] 컨테이너 관리
도커에서 실행되고 있는 컨테이너 목록은 ps로 확인할 수 있다.
아직은 아무도 없다고 한다.
이제 하나를 띄워보자
centos와 archlinux 이미지가 docker pull로 설치되어있는 상태다.
저것들을 컨테이너로 올려보자
백그라운드로 컨테이너 로드
컨테이너 실행은 기본적으로 run 명령을 통해 수행할 수 있다.
이미지파일명을 인자로 받으며, -i와 -t 플래그는 기본으로 줘야 한다. i는 interactive, t는 tty의 축약이다.
그리고 -d를 주면 백그라운드로 실행된다.

백그라운드 컨테이너 접속
근데 저래서는 올라가기만 하지, 뭔가 컨테이너 내에서는 작업을 할 수가 없다.
도커 DSL로 처리를 하면 되긴 될텐데 그건 미뤄두고, 올려둔 컨테이너에 접속을 해보자.
exec 명령에 -i와 -t, 그리고 위에서 확인한 컨테이너의 ID, bash를 넣어주면 된다.

그럼 잘 들어간다.

접속상태에서 나가려면 그냥 exit를 치면 된다.
그럼 백그라운드에서는 여전히 실행되는 상태지만, 셸은 연결이 끊어지게 된다.
다만, attatch로 접속한 상태에서는 exit로 나가면 컨테이너도 종료되게 된다.
재시작 및 종료
뭔가 안에서 문제가 생겼거나 뭐 해서 재부팅을 하고 싶다면 restart를 하면 된다.

그리고 컨테이너를 죽이려면 stop이나 kill을 쓰면 된다. 둘이 무슨 차이가 있는지는 잘 모르겠다.
근데 그냥 죽이면 이제까지 한게 다 날라가니까, 저장을 해놓고 죽이자.
컨테이너를 이미지로 저장
그냥 컨테이너를 돌리기만 하면, 해당 시스템의 데이터들이 컨테이너에만 머무를 뿐이다.
그래서 컨테이너를 죽이면 그냥 다 날라간다.
저장하려면 commit 명령을 쓰면 된다. 첫번째 인자가 컨테이너의 식별자, 두번째 인자가 저장될 이름이다.
그럼 이제 저걸로 다시 컨테이너를 올려서 쓸 수 있다.
그렇다.
참조
https://stackoverflow.com/questions/20932357/how-to-enter-in-a-docker-container-already-running-with-a-new-tty
https://nicewoong.github.io/development/2018/03/06/docker-commit-container/