docker images
docker rmi [삭제할 이미지 이름] 또는 [Image Id = docker images에서 확인하면 된다]
window는 cls 이고 리눅스,mac은 clear이다
docker ps
unable to delete a88c3e85e887 (must be forced) - image is being used by stopped container 8fe99d6fa543
이게 뜨면 종료된 컨테이너를 봐야한다
- docker ps -a 이렇게 치면 모든 컨테이너를 확인할수 있다
docker rm [컨테이너 아이디] ->docker ps -a 에서 보면 컨테이너 아이디가 있다
- 컨테이너 삭제후 다시 이미지를 삭제 해야 완전히 삭제 된거다.
docker stop [컨테이너 아이디] -> docker ps에서 dontainer ID를 확인
docker run [이미지 이름]
docker run -d {이미지 이름}
- 눈에 안보이게 띄운다는 뜻이다 docker run 보다는 백그라운드로 돌리기
docker run -d -p [포트번호:포트][이미지이름]
ex 1) docker run -d -p 8080:80 httpd
외부에서 8080이라고 하면 80으로 접속되게 한다는것이다
이렇게 하는이유는 httpd는 80으로 내부를 돌기때문이다
ex 2) docker run -d -p 8081:80 nginx
위에하고 비슷한데 여기서는 nginx라는 이미지를 다운받지 않았다
하지만 이렇게 명령어를 입력하면 nginx이미지가 다운받아지고 위 처럼 똑같이 동작을 한다.
ex 3) docker run -d [이미지이름]
docker run -d httpd 이렇게 하면 다운받지 않았으면 다운받고 나서 run한다.
ex 4) docker run -d --name [만들 이름][다운받을 이미지]
docker run -d --name myubuntu ubuntu
이렇게 입력하면 컨테이너 이름을 만들어줄 수 있다
문제는 이렇게 하면 이미지는 다운받아지는데 실행은 안된다
그리고 docker run -dit --name myubuntu ubuntu 이걸로 다시 입력하면
- Error response from daemon: Conflict. The container name "/myubuntu" is already in use by container "bcd2c56dcd6f0e13b01729f48101733b7b73caf76d792de3ecf1e0eb3c8d19f1". You have to remove (or rename) that container to be able to reuse that name.
이러한 에러가 뜬다 = 종료된컨테이너를 들고 있다는 거다
이게 뜨면 docker ps -a 로 컨테이너 id를 확인후 docker rm [컨테이너 ID] 를 치고 지운후 다시 docker run -dit --name myubuntu ubuntu 를 입력 하면 들고 있는 이미지를 실행한다.
docker run -dit [이미지 이름]
ex 1)docker run -dit --name myubuntu ubuntu
ex 2) docker run dit -p 8080:80 httpd (중요)
이렇게 해도 백그라운드로 접속되고 이미지가 없으면 다운까지 받아진다
docker attach [컨테이너 id]를 입력하면 도커 내부로 들어갈수 있다
docker exec -it [컨테이너 id] bash
- docker exec -it [컨테이너 id] bash
이렇게 하면 command(docker ps 로 확인하면된다) 를 bash라는 모드로 실행을 하면서 -it로 진입(=리눅스)된다
cmd에서 도커 run하고 중지할때는 다른 cmd 창을 켜서 도커를 중지하기 아니면 ctrl+c하면 나가진다
(1)프로세스 종료
1. docker ps
2. docker stop 컨테이너ID
(2)종료된 컨테이너 삭제
1. docker ps -a
2. docker rm 컨테이너ID
(3)이미지
1.docker images
2.docker rmi 이미지이름
windows
- for /f "delims=" %A in ('docker ps -q') do (set rm1=%A)
- for /f "delims=" %A in ('docker ps -a -q') do (set rm2=%A)
- for /f "delims=" %A in ('docker images -q') do (set rm3=%A)
- docker stop %rm1%
- docker rm %rm2%
- docker rmi -f %rm3%
복사용
for /f "delims=" %A in ('docker ps -q') do (set rm1=%A)
for /f "delims=" %A in ('docker ps -a -q') do (set rm2=%A)
for /f "delims=" %A in ('docker images -q') do (set rm3=%A)
docker stop %rm1%
docker rm %rm2%
docker rmi -f %rm3%
linux, mac , git bash(이거 추천) 명령어
- docker stop $(docker ps -q) 또는 docker stop $(docker ps -a -q)
- docker rm $(docker ps -a -q)
- docker rmi -f $(docker images -q)
복사용
docker stop $(docker ps -q)
docker rm $(docker ps -a -q)
docker rmi -f $(docker images -q)
docker run -d -p [포트번호]:80 경로 :/usr/local/apache2/htdcos [이미지이름]
ex)docker run -d -p 8080:80 -v c:\users[경로이름]\webapp:/usr/local/apache2/htdcos httpd
불륨연결
이거는 이미지들끼리 의존하고 있기 때문에 삭제가 안되는거다 그러므로 의존 안하는것부터삭제한다 = 내가만든 이미지부터 먼저 삭제하면된다
Error response from daemon: conflict: unable to delete a8257c41c9c1 (cannot be forced) - image has dependent child images
내가 뭔가를 다운받으면서 실행을 시킬거면
docker run -d [이미지이름]
ex) docker run -d ubuntu
docker ps 를 하면 죽어있다 왜냐하면 이거는 os여서 실행시킬게 없기때문에 바로 꺼진다
ex) docker run -d -p 8080:80 httpd
docker ps 를 하면 살아있다 왜냐하면 이거는 os를 설치하고 그리고 서버를 설치하고
서버를 실행시킨 img를 들고있기 때문에 살아있다
-d를 붙여야 cmd에서 제어가 가능하다
내부적으로 프로세스가 들고있지 않은것들은
docker run -dit [이미지이름] bash
ex)docker run -dit ubuntu bash
command가 bash모드가 되어야 죽지 않는다
docker attach [컨테이너 id]를 쓰면 내부를제어할수 있다
os (ubuntu) 만설치 =여기는 attach 가능
docker run -dit ubuntu bash
docker attach 컨테이너ID
while process (httpd) = 여기는 command bash가 아니기 때문 attach사용 x
docker run -d -p 8080:80 httpd 또는docker run -dit -p 8080:80 httpd
둘중에 아무거나 써도 상관없다
docker exec -it 컨테이너ID bash