반응형
Jen'_'
Jen's Space
Email
GitHub
전체 방문자
오늘
어제
  • 분류 전체보기 (98)
    • Ansible (4)
      • 우아한앤서블 (4)
    • Cloud (19)
      • AWS (17)
      • GCP (2)
    • DevOps (40)
      • Docker (6)
      • Kubernetes (26)
      • CICD (6)
      • Terraform (2)
    • Language (13)
      • Python (12)
      • Node.js (1)
    • Linux (10)
    • etc. (7)
    • 개인기록 (1)
    • AEWS (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 피드백 환영합니다 :)

인기 글

태그

  • 쿠버네티스
  • ALB
  • autoscaling
  • gitops
  • karpenter
  • CICD
  • vagrant
  • ubuntu
  • EKS
  • 우아하게앤서블
  • Kubernetes
  • ansible
  • k8s
  • argocd
  • Docker
  • INGRESS
  • terraform
  • 자격증
  • jenkins
  • AWS

최근 댓글

Jen'_'

Jen's Space

docker run 명령어 사용법, 옵션
DevOps/Docker

docker run 명령어 사용법, 옵션

2021. 5. 8. 16:57
반응형

컨테이너 일회성 가동 

[root@user1-virtual-machine: ~]#docker container run --name test1 ubuntu:latest /bin/echo "HelloWorld" 
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
345e3491a907: Pull complete 
57671312ef6f: Pull complete 
5e9250ddb7d0: Pull complete 
Digest: sha256:cf31af331f38d1d7158470e095b132acd126a7180a54f263d386da88eb681d93
Status: Downloaded newer image for ubuntu:latest
HelloWorld

이미지가 local 에 없으면 docker hub 에서 다운받는다

 

[root@user1-virtual-machine: ~]#docker container run --name test2 ubuntu:latest /bin/echo "HelloWorld" 
HelloWorld

이미지가 local 에 있으므로 바로 컨테이너가 run 된다 

 

[root@user1-virtual-machine: ~]#docker container ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

하지만 container ps 를 했을 때 컨테이너 목록이 뜨지 않는다

이는 echo "HelloWorld" 를 실행하고 종료 되었기 때문이다 

호스트 입장에서 컨테이너는 프로세스이다 내부에 실행중인 프로세스가 있어야만 가동된다 

 

 

[root@user1-virtual-machine: ~]#docker container ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
0816e73452fe        ubuntu:latest       "/bin/echo HelloWorld"   2 minutes ago       Exited (0) 2 minutes ago                       test2
f3ea4289d6e2        ubuntu:latest       "/bin/echo HelloWorld"   3 minutes ago       Exited (0) 3 minutes ago                       test1

test1은 3분전에 종료, test2는 2분전에 종료 

-a 옵션은 모든 컨테이너의 목록을 출력한다 

 

 


 

 

-it 옵션

컨테이너가 shell 을 사용할 수 있도록 함

[root@user1-virtual-machine: ~]#docker run -it --name test3 ubuntu:latest /bin/bash
root@2a9c4f5b3f50:/# [root@user1-virtual-machine: ~]#    # 컨트롤pq 를 눌러 정지시키지 않고 빠져나온다

[root@user1-virtual-machine: ~]#docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2a9c4f5b3f50 ubuntu:latest "/bin/bash" 20 seconds ago Up 19 seconds test3

 실행중인 test3 이 뜬다!

 

 

-p 옵션

-d 옵션은 백그라운드에서 실행

-p 옵션은 포트를 연결 시키는 것인데, 그뒤에 (호스트포트):(컨테이너포트) 가 온다

[root@user1-virtual-machine: ~]# docker container run --name webserver -d -p 8080:80 nginx

url에 local ip:8080 을 입력하면 nginx 웹페이지가 뜬다 

8080 포트를 이용해 local로 들어와서 container 포트로 포워딩 한 것이다

 

 

exec 명령어

실행중인 컨테이너에 들어가는 명령어이다

[root@user1-virtual-machine: ~]#docker run -it -d --name mysql -e MYSQL_ROOT_PASSWORD=abc123 -e MYSQL_DATABASE=wordpress mysql:5.7    # root의 비밀번호 설정하고 데이터베이스 만들기 

[root@user1-virtual-machine: ~]#docker exec -it mysql /bin/bash
root@b7543a28e111:/# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.34 MySQL Community Server (GPL)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases ;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| wordpress |
+--------------------+
5 rows in set (0.01 sec)

mysql 이미지 사용

 

 

-v 옵션

-v (로컬디렉터리경로):(컨테이너디렉터리경로)

로컬에 디렉터리를 생성하지 않았더라도 자동으로 생성된다

[root@user1-virtual-machine: ~]#docker container run -d --name mysql_hostvolume -e MYSQL_ROOT_PASSWORD=abc123 -e MYSQL_DATABASE=wordpress -v /root/wordpress_db:/var/lib/mysql mysql:5.7
[root@user1-virtual-machine: ~]#ls wordpress_db/
auto.cnf client-cert.pem ib_logfile0 ibtmp1 private_key.pem server-key.pem ca-key.pem client-key.pem
ib_logfile1 mysql public_key.pem sys ca.pem ib_buffer_pool ibdata1 performance_schema server-cert.pem
wordpress

[root@user1-virtual-machine: ~]#docker exec -it wordpressdb_hostvolume /bin/bash
root@852540c9da15:/# ls /var/lib/mysql/
auto.cnf client-cert.pem ib_logfile0 ibtmp1 private_key.pem server-key.pem ca-key.pem client-key.pem
ib_logfile1 mysql public_key.pem sys ca.pem ib_buffer_pool ibdata1 performance_schema server-cert.pem
wordpress

로컬 /root/wordpress_db 하위에 컨테이너 /var/lib/mysql 하위에 있는 파일이 동일하게 있다

컨테이너를 삭제하더라도 로컬의 파일들은 남아있다 

 

 

반응형
저작자표시 (새창열림)

'DevOps > Docker' 카테고리의 다른 글

Docker로 ubuntu, apache, php 환경의 이미지 만들기  (0) 2021.07.15
[docker] Failed to get D-Bus connection 에러 해결  (0) 2021.05.29
도커와 쿠버네티스 개념 정리  (0) 2021.05.11
도커 이미지 레이어(Docker Image Layer)  (0) 2021.05.10
도커 기본 명령어 정리  (0) 2021.05.08
    'DevOps/Docker' 카테고리의 다른 글
    • [docker] Failed to get D-Bus connection 에러 해결
    • 도커와 쿠버네티스 개념 정리
    • 도커 이미지 레이어(Docker Image Layer)
    • 도커 기본 명령어 정리
    Jen'_'
    Jen'_'
    DevOps 엔지니어 Jen의 기술 블로그 / 이메일: jenakim47@gmail.com

    티스토리툴바