반응형
컨테이너 일회성 가동
[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 |