Zero To One

Docker Command Line 명령어 본문

docker

Docker Command Line 명령어

Zero_To_One 2022. 3. 18. 17:14

https://docs.docker.com/engine/reference/commandline/container_run/

 

docker container run

docker container run: Run a command in a new container

docs.docker.com

docker/whalesay 실행

docker/whalesay:latest 라는 문장은 다음와 같이 읽을 수 있습니다.

  • Docker Hub라는 레지스트리에서
  • docker라는 유저가 등록한 whalesay 이미지 혹은 레포지토리에서
  • latest 태그를 가진 이미지

https://hub.docker.com/r/docker/whalesay

 

 

Docker Hub

 

hub.docker.com

1. 최신 이미지 받아오기

> sudo docker image pull docker/whalesay:latest
latest: Pulling from docker/whalesay
Image docker.io/docker/whalesay:latest uses outdated schema1 manifest format. Please upgrade to a schema2 image for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/
e190868d63f8: Already exists 
909cd34c6fd7: Already exists 
0b9bfabab7c1: Already exists 
a3ed95caeb02: Already exists 
00bf65475aba: Already exists 
c57b6bcc83e3: Already exists 
8978f6879e2f: Already exists 
8eed3712d2cf: Already exists 
Digest: sha256:178598e51a26abbc958b8a2e48825c90bc22e641de3d31e18aaf55f3258ba93b
Status: Image is up to date for docker/whalesay:latest
docker.io/docker/whalesay:latest

2. 이미지 리스트 출력

 

> sudo docker image ls
REPOSITORY                 TAG       IMAGE ID       CREATED        SIZE
httpd                      latest    b9bd7e513e0f   15 hours ago   144MB
sebcontents/server         latest    6d83150df9dd   2 months ago   178MB
sebcontents/client         latest    52bfef33cd3d   2 months ago   142MB
hello-world                latest    feb5d9fea6a5   5 months ago   13.3kB
sebcontents/part1          latest    aa619f16919f   9 months ago   138MB
danielkraic/asciiquarium   latest    7bab964067d2   3 years ago    309MB
docker/whalesay            latest    6b362a9f73eb   6 years ago    247MB

3. 받아온 이미지를 실행 (이미지 → 컨테이너)

docker container run --name 컨테이너_이름 docker/whalesay:latest cowsay boo
> sudo docker container run --name birdnine docker/whalesay:latest cowsay boo
 _____ 
< boo >
 ----- 
    \
     \
      \     
                    ##        .            
              ## ## ##       ==            
           ## ## ## ##      ===            
       /""""""""""""""""___/ ===        
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~   
       \______ o          __/            
        \    \        __/             
          \____\______/
docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]

위의 형식을 따라 작성되었습니다.

  • {container} run
    • 컨테이너를 실행합니다.
  • [OPTIONS]
    • --name : 컨테이너의 이름을 할당합니다.
  • [COMMAND]
    • command는 초기 컨테이너 실행 시 수행되는 명령어입니다.
    • cowsay : 컨테이너 실행 시 cowsay 명령어를 호출합니다. node를 호출하듯 이용합니다.
  • [ARG..]
    • boo : COMMAND인 cowsay에 넘겨질 파라미터입니다.

4. 모든 컨테이너의 리스트 출력

> sudo docker container ps -a
CONTAINER ID   IMAGE                    COMMAND                  CREATED          STATUS                      PORTS                                   NAMES
3554ec35017d   docker/whalesay:latest   "cowsay boo"             2 minutes ago    Exited (0) 2 minutes ago                                            birdnine
69014dc0b0c1   hello-world              "/hello"                 17 minutes ago   Exited (0) 17 minutes ago                                           awesome_chatelet
0fa6e33f5bed   sebcontents/client       "/docker-entrypoint.…"   4 hours ago      Up 4 hours                  0.0.0.0:8080->80/tcp, :::8080->80/tcp   client
74f2a8bdadea   sebcontents/server       "docker-entrypoint.s…"   4 hours ago      Up 4 hours                  0.0.0.0:4999->80/tcp, :::4999->80/tcp   server
fc661341d0a6   sebcontents/part1        "httpd-foreground"       4 hours ago      Up 4 hours                  0.0.0.0:3000->80/tcp, :::3000->80/tcp   vnfmsqkek3
7b92e91c086e   hello-world              "/hello"                 5 hours ago      Exited (0) 5 hours ago                                              happy_chatelet
e5ad4e2d6787   hello-world              "/hello"                 6 hours ago      Exited (0) 6 hours ago                                              trusting_pike
  • {container} ps : 컨테이너의 리스트를 출력합니다.
  • -a : Default 로는 실행되는 컨테이너지만 종료된 컨테이너를 포함하여 모든 컨테이너를 출력합니다.

5. 삭제

sudo docker container rm 컨테이너_이름
> sudo docker container rm birdnine
birdnine

또한, Stop the container before attempting removal or force remove

이란 에러 문구가 나오면 아래와 같이 입력해 주면 된다.

> sudo docker container rm -f birdnine

 

6. 도커 이미지 지우기

# docker image 의 용량 확인
docker image ls

# docker/whalesay 이미지 지우기
docker image rm docker/whalesay

danielkraic/asciiquarium

danielkraic라는 사람이 올린 이미지 asciiquarium 를 실행

docker container run -it --rm danielkraic/asciiquarium:latest

pacman 실행해보기

https://github.com/platzhersh/pacman-canvas

 

GitHub - platzhersh/pacman-canvas: An old classic, re-written in HTML5.

An old classic, re-written in HTML5. Contribute to platzhersh/pacman-canvas development by creating an account on GitHub.

github.com

 

1. git clone을 따준다.

git clone git@github.com:platzhersh/pacman-canvas.git

2. httpd를 실행 시킨다.

sudo docker container run --name 컨테이너_이름 -p 818:80 httpd
> sudo docker container run --name birdnine -p 818:80 httpd
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message
[Fri Mar 18 07:04:39.857292 2022] [mpm_event:notice] [pid 1:tid 139666027363648] AH00489: Apache/2.4.53 (Unix) configured -- resuming normal operations
[Fri Mar 18 07:04:39.857355 2022] [core:notice] [pid 1:tid 139666027363648] AH00094: Command line: 'httpd -D FOREGROUND'

 

 

3. 저 위에걸 그대로 놔둔채로 localhost:818 혹은 127.0.0.1:818에 접속한다.

잘 작동된다!

 

4. 새로운 터미널을 열고 다음을 입력한다.

> cd pacman-canvas

pacman-canvas로 들어간 뒤,

sudo docker container cp ./ 컨테이너_이름:/usr/local/apache2/htdocs/

docker container cp 커맨드를 입력해 로컬호스트에 있는 파일을 컨테이너에 전달한다.

뭔가 안되면?

sudo docker exec -it 컨테이너_이름 bash

를 입력해서 컨테이너 내부 터미널로 접속해보자.

 

 

5. docker container를 이미지로 만들어 보자

sudo docker container commit 컨테이너_이름 my_pacman:1.0
> sudo docker images
REPOSITORY                 TAG       IMAGE ID       CREATED          SIZE
my_pacman                  1.0       f06e37d39f4a   9 seconds ago    161MB

생성된 이미지를 900 포트에서 웹서버로 구동해보자

sudo docker run --name my_web2 -p 900:80 my_pacman:1.0

 

또다른 게임

https://github.com/codestates/SpaceInvaders

 

GitHub - codestates/SpaceInvaders

Contribute to codestates/SpaceInvaders development by creating an account on GitHub.

github.com

1. git clone

git clone git@github.com:codestates/SpaceInvaders.git

2. 

> sudo docker container run --name ddd -p 818:80 httpd

3. 새로운 터미널에서

> cd SpaceInvaders

4. 

> sudo docker container cp ./ ddd:/usr/local/apache2/htdocs/

5. localhost:818 접속