[Docker] 컨테이너 실행 및 도커 기본 명령어

2024. 5. 28. 19:06·log.info
목차
  1. Intro
  2. 컨테이너 사용 명령어의 기본 형태
  3. 컨테이너 실행
  4. 도커 기본 명령어
  5. 8) 컨테이너 명령어 실행(exec)

Intro

여기서는 가볍게 자주 쓰는 명령어만 다룬다.

모든 명령어는 여기서 참고하자.


컨테이너 사용 명령어의 기본 형태

docker 커맨드 (옵션) 대상 (인자)

컨테이너를 다루는 모든 명령은 docker로 시작한다.

 

 

컨테이너 실행

✔ 도커 실행 명령어

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

 

✔ 자주 사용하는 옵션

옵션 설명
-d 백그라운드 모드(detached mode)
-p 호스트와 컨테이너의 포트 연결(포워딩)
-v 호스트와 컨테이너의 디렉토리 연결(마운트)
-e 컨테이너 내에서 사용할 환경변수 설정
-name 컨테이너 이름 설정
-rm 프로세스 종료 시 컨테이너 자동 제거
-it 터미널 입력 옵션 (-i, -t)
-link 컨테이너 연결 [컨테이너명:별칭]

 

1) ubuntu 22.04 container

ubuntu 22.04 컨테이너를 생성하고 컨테이너 내부에 들어가 보자.

docker run ubuntu:22.04

 

run 명령어를 사용하면 사용할 이미지가 저장되어 있는지 확인하고,

없다면 다운로드(pull)를 한 후 컨테이너를 생성(create)하고 시작(start)한다.

여기서는 ubuntu:22.04 이미지를 다운 받은 적이 없기 때문에 이미지를 다운로드 한 후 컨테이너가 실행되었다.

컨테이너는 정상적으로 실행되었지만, 명령어를 전달하지 않았기 때문에 생성되자마자 종료되었다.

컨테이너는 프로세스이기 때문에 실행 중인 프로세스가 없다면 컨테이너는 종료된다.

 

이번에는 /bin/bash 명령어를 입력해서 ubuntu:22.04 컨테이너를 실행해 보자.

docker run --rm -it ubuntu:16.04 /bin/bash

# in container
$ cat /etc/issue
Ubuntu 22.04.4 LTS \n \l

$ ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr

 

 

  • bin/bash: 컨테이너 내부에 들어가기 위해 실행하는 쉘
  • -it: 키보드 입력을 위한 옵션
  • --rm: 프로세스가 종료되면 컨테이너 자동 삭제
  • exit: bash 쉘을 종료하면 컨테이너도 같이 종료

이번에는 위에서 이미지를 다운 받아놨기 때문에 이미지를 다운로드 하는 과정 없이 바로 실행되었다.

 

2) Redis container

redis는 메모리 기반의 스토리지이다. 6379 포트로 통신하며 telnet 명령어로 테스트해 볼 수 있다.

detached mode로 실행하기 위해 -d 옵션을 추가하고, 컨테이너의 포트를 호스트의 포트로 연결하기 위해 -p 옵션을 추가하자.

docker run -d -p 1234:6379 redis

# redis test
$ telnet localhost 1234
set mykey hello
+OK
get mykey
$5
hello

-d 옵션을 주었기 때문에 컨테이너를 실행하자마자 컨테이너의 ID(5165d6...)를 보여 주고 바로 쉘로 돌아온다.

컨테이너는 종료된 것이 아니라 백그라운드 모드로 동작하고 있고 컨테이너 ID를 이용하여 컨테이너를 제어할 수 있다.

-p 옵션을 이용하여 호스트의 1234 포트를 컨테이너의 6379 포트로 연결하였고, localhost의 1234 포트로 접속하면 redis를 사용할 수 있다.

호스트의 포트만 다르게 하면 하나의 서버에 여러 개의 redis 서버를 띄우는 것도 매우 간단하다.

 

3) MySQL 8.0 container

사용법: https://hub.docker.com/_/mysql/

호스트 OS에 MySQL 클라이언트가 설치되어 있어야 한다.

 

-e 옵션을 이용하여 환경변수를 설정하고, --name 옵션을 이용하여 컨테이너에 읽기 어려운 ID 대신 쉬운 이름(mysql)을 부여했다.

패스워드 없이 root 계정을 만들기 위해 MYSQL_ALLOW_EMPTY_PASSWORD 환경변수를 설정했다.

백그라운드 모드로 띄우기 위해 -d 옵션을 설정하고, 3307 포트를 사용했다.

(3306 포트로 했다가 기존 MySQL 서버와 충돌이 난 건지 계속 오류가 떠서 임시로 3307 포트로 진행했다.)

 

docker run -d -p 3307:3306 \
  -e MYSQL_ALLOW_EMPTY_PASSWORD=true \
  --name mysql \
  mysql:8.0

# MySQL test
$ mysql -h127.0.0.1 -uroot

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> quit

 

4) WordPress container

위에서 생성했던 MySQL 컨테이너에 워드프레스 데이터베이스를 만들고, 워드프레스 컨테이너를 실행할 때 --link 옵션을 이용하여 MySQL 컨테이너를 연결해 보자.

 

--link 옵션은 환경변수와 IP 정보를 공유하는데, 링크한 컨테이너의 IP 정보를 /etc/hosts에 자동으로 입력한다.

그래서 워드프레스 컨테이너가 MySQL 데이터베이스의 정보를 알 수 있는 것이다.

 

1. 워드프레스용 데이터베이스 생성

2. 워드프레스 컨테이너 실행

    - 호스트의 8080포트를 컨테이너의 80포트로 연결, MySQL 컨테이너와 연결

    - 각종 데이터베이스 설정 정보를 환경변수로 입력

# create mysql database
$ docker exec -it mysql mysql -uroot -p

create database wp CHARACTER SET utf8;
create user 'wp'@'%' identified by 'wp';
grant all privileges on wp.* to 'wp'@'%' with grant option;
flush privileges;
quit

# run wordpress container
docker run -d -p 8080:80 \
  --link mysql:mysql \
  -e WORDPRESS_DB_HOST=mysql \
  -e WORDPRESS_DB_NAME=wp \
  -e WORDPRESS_DB_USER=wp \
  -e WORDPRESS_DB_PASSWORD=wp \
  wordpress

 

이제 컨테이너가 제대로 실행되었는지 웹 브라우저로 확인해 보자. [실행 완료!]

http://localhost:8080/wp-admin/install.php?step=1

 

참고
이번 예제는 테스트 용으로만 사용해야 한다. 운영 환경에서 사용하려면 추가 세팅이 필요하다.

 

 


도커 기본 명령어

컨테이너의 상태를 살펴 보고 어떤 이미지가 설치되어 있는지 확인하는 명령어를 알아보자.

 

1) 컨테이너 목록 확인하기(ps)

docker ps [OPTIONS]
CONTAINER ID   IMAGE                           COMMAND                  CREATED             STATUS             PORTS                                                    NAMES
745adc0cf30e   teamlab/pydata-tensorflow:0.1   "/opt/start"             4 minutes ago       Up 4 minutes       0.0.0.0:6006->6006/tcp, 22/tcp, 0.0.0.0:8888->8888/tcp   mystifying_hawking
1c31d6c6edca   wordpress                       "docker-entrypoint.s…"   31 minutes ago      Up 31 minutes      0.0.0.0:8080->80/tcp                                     quizzical_lewin
ce33ab37a923   mysql:8.0                       "docker-entrypoint.s…"   About an hour ago   Up About an hour   33060/tcp, 0.0.0.0:3307->3306/tcp                        mysql
e6a452c59a12   redis                           "docker-entrypoint.s…"   4 hours ago         Up 4 hours         0.0.0.0:1234->6379/tcp                                   heuristic_northcutt

 

detached mode로 실행 중인 컨테이너들이 출력된다.

어떤 이미지를 기반으로 만들었는지, 어떤 포트와 연결되어 있는지 등을 볼 수 있다.

 

 

docker ps -a
CONTAINER ID   IMAGE                           COMMAND                  CREATED             STATUS                   PORTS                                                    NAMES
745adc0cf30e   teamlab/pydata-tensorflow:0.1   "/opt/start"             7 minutes ago       Up 7 minutes             0.0.0.0:6006->6006/tcp, 22/tcp, 0.0.0.0:8888->8888/tcp   mystifying_hawking
1c31d6c6edca   wordpress                       "docker-entrypoint.s…"   34 minutes ago      Up 34 minutes            0.0.0.0:8080->80/tcp                                     quizzical_lewin
ce33ab37a923   mysql:8.0                       "docker-entrypoint.s…"   About an hour ago   Up About an hour         33060/tcp, 0.0.0.0:3307->3306/tcp                        mysql
6b7bb3228401   wordpress                       "docker-entrypoint.s…"   2 hours ago         Created                  80/tcp, 0.0.0.0:8080->8080/tcp                           angry_galois
c6eaa3c348c1   wordpress                       "docker-entrypoint.s…"   2 hours ago         Created                  0.0.0.0:8080->80/tcp                                     mystifying_wilson
02a401a67051   wordpress                       "docker-entrypoint.s…"   2 hours ago         Created                  0.0.0.0:8080->80/tcp                                     blissful_babbage
3b0d6baa155b   wordpress                       "docker-entrypoint.s…"   2 hours ago         Created                  0.0.0.0:8080->80/tcp                                     silly_chatelet
d2183b1e6cd5   redis                           "docker-entrypoint.s…"   3 hours ago         Created                                                                           condescending_vaughan
5165d6cfa75f   redis                           "docker-entrypoint.s…"   4 hours ago         Created                                                                           agitated_pascal
6bc590bdd4bb   redis                           "docker-entrypoint.s…"   4 hours ago         Created                                                                           objective_archimedes
1ef262ae35b2   redis                           "docker-entrypoint.s…"   4 hours ago         Created                                                                           objective_bhaskara
e6a452c59a12   redis                           "docker-entrypoint.s…"   4 hours ago         Up 4 hours               0.0.0.0:1234->6379/tcp                                   heuristic_northcutt
c34f624d8c97   ubuntu:22.04                    "/bin/bash"              9 hours ago         Exited (0) 9 hours ago                                                            nervous_shaw

-a 옵션을 추가로 실행하면, 실행했다가 종료된 컨테이너가 추가로 출력된다.

컨테이너는 종료되어도 삭제되지 않고 남아 있다. 종료된 건 다시 시작할 수 있고 컨테이너의 읽기/쓰기 레이어는 그대로 존재한다.

 

2) 컨테이너 중지(stop)

docker stop [OPTIONS] CONTAINER [CONTAINER...]
root@DESKTOP-DOPLEQK:~# docker ps
CONTAINER ID   IMAGE                           COMMAND                  CREATED             STATUS             PORTS                                                    NAMES
745adc0cf30e   teamlab/pydata-tensorflow:0.1   "/opt/start"             10 minutes ago      Up 10 minutes      0.0.0.0:6006->6006/tcp, 22/tcp, 0.0.0.0:8888->8888/tcp   mystifying_hawking

root@DESKTOP-DOPLEQK:~# docker stop 745adc0cf30e
745adc0cf30e  //tensorflow ID

root@DESKTOP-DOPLEQK:~# docker ps -a
CONTAINER ID   IMAGE                           COMMAND                  CREATED             STATUS                       PORTS                               NAMES
745adc0cf30e   teamlab/pydata-tensorflow:0.1   "/opt/start"             10 minutes ago      Exited (137) 5 seconds ago                                       mystifying_hawking

 

컨테이너를 중지하려면 컨테이너의 ID 또는 이름을 입력하면 된다.

도커 ID의 길이는 64자리지만, 명령어의 인자로 전달할 때에는 전부 입력하지 않아도 된다.

ex) ID: abcdefgh..... -> abcd 입력만 해도 됨(겹치지만 않는다면!)

 

중지 시킨 컨테이너의 상태를 보면 Exited 상태로 변경된 걸 확인할 수 있다.

 

3) 컨테이너 제거(rm)

docker rm [OPTIONS] CONTAINER [CONTAINER...]
root@DESKTOP-DOPLEQK:~# docker ps -a
CONTAINER ID   IMAGE                           COMMAND                  CREATED             STATUS                       PORTS                               NAMES
745adc0cf30e   teamlab/pydata-tensorflow:0.1   "/opt/start"             10 minutes ago      Exited (137) 5 seconds ago                                       mystifying_hawking

#tensorflow 컨테이너 제거
root@DESKTOP-DOPLEQK:~# docker rm 745a
745a

#컨테이너가 말끔히 제거되었다.
root@DESKTOP-DOPLEQK:~# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED             STATUS                   PORTS                               NAMES
1c31d6c6edca   wordpress      "docker-entrypoint.s…"   43 minutes ago      Up 43 minutes            0.0.0.0:8080->80/tcp                quizzical_lewin
ce33ab37a923   mysql:8.0      "docker-entrypoint.s…"   About an hour ago   Up About an hour         33060/tcp, 0.0.0.0:3307->3306/tcp   mysql
6b7bb3228401   wordpress      "docker-entrypoint.s…"   2 hours ago         Created                  80/tcp, 0.0.0.0:8080->8080/tcp      angry_galois
c6eaa3c348c1   wordpress      "docker-entrypoint.s…"   2 hours ago         Created                  0.0.0.0:8080->80/tcp                mystifying_wilson
02a401a67051   wordpress      "docker-entrypoint.s…"   2 hours ago         Created                  0.0.0.0:8080->80/tcp                blissful_babbage
3b0d6baa155b   wordpress      "docker-entrypoint.s…"   2 hours ago         Created                  0.0.0.0:8080->80/tcp                silly_chatelet
d2183b1e6cd5   redis          "docker-entrypoint.s…"   4 hours ago         Created                                                      condescending_vaughan
5165d6cfa75f   redis          "docker-entrypoint.s…"   4 hours ago         Created                                                      agitated_pascal
6bc590bdd4bb   redis          "docker-entrypoint.s…"   4 hours ago         Created                                                      objective_archimedes
1ef262ae35b2   redis          "docker-entrypoint.s…"   4 hours ago         Created                                                      objective_bhaskara
e6a452c59a12   redis          "docker-entrypoint.s…"   4 hours ago         Up 4 hours               0.0.0.0:1234->6379/tcp              heuristic_northcutt
c34f624d8c97   ubuntu:22.04   "/bin/bash"              9 hours ago         Exited (0) 9 hours ago                                       nervous_shaw

 

중지 상태의 컨테이너 일괄 삭제
docker rm -v $(docker ps -a -q -f status=exited)​

 

 

4) 이미지 목록 확인하기(images)

docker images [OPTIONS] [REPOSITORY[:TAG]]
REPOSITORY                  TAG       IMAGE ID       CREATED       SIZE
redis                       latest    01afb31d6d63   5 days ago    173MB
wordpress                   latest    f468bab53528   2 weeks ago   972MB
mysql                       8.0       aba83ec239df   3 weeks ago   778MB
ubuntu                      22.04     a6d2b38300ce   4 weeks ago   117MB
teamlab/pydata-tensorflow   0.1       cb5e036afc0a   7 years ago   4.59GB

 

 

5) 이미지 다운로드(pull)

docker pull [OPTIONS] NAME[:TAG|@DIGEST]
docker pull ubuntu:22.04

 

6) 이미지 삭제(rmi)

docker rmi [OPTIONS] IMAGE [IMAGE...]
REPOSITORY                  TAG       IMAGE ID       CREATED       SIZE
redis                       latest    01afb31d6d63   5 days ago    173MB
wordpress                   latest    f468bab53528   2 weeks ago   972MB
mysql                       8.0       aba83ec239df   3 weeks ago   778MB
ubuntu                      22.04     a6d2b38300ce   4 weeks ago   117MB
teamlab/pydata-tensorflow   0.1       cb5e036afc0a   7 years ago   4.59GB

#tensorflow 삭제
root@DESKTOP-DOPLEQK:~# docker rmi cb5e

Untagged: teamlab/pydata-tensorflow:0.1
Deleted: sha256:cb5e036afc0aa647a6fe1f384475275aeed946c751de5209d84282c986589b7f

단, 컨테이너에서 실행 중인 이미지는 삭제할 수 없다.

 

7) 컨테이너 로그 확인(logs)

docker logs [OPTIONS] CONTAINER
#워드프레스의 마지막 10개의 로그 확인
root@DESKTOP-DOPLEQK:~# docker logs --tail 10 1c31
172.17.0.1 - - [28/May/2024:09:20:02 +0000] "GET /wp-includes/js/dist/i18n.min.js?ver=5e580eb46a90c2b997e6 HTTP/1.1" 200 4012 "http://localhost:8080/wp-admin/install.php?step=1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
172.17.0.1 - - [28/May/2024:09:20:02 +0000] "GET /wp-admin/js/password-strength-meter.min.js?ver=6.5.3 HTTP/1.1" 200 964 "http://localhost:8080/wp-admin/install.php?step=1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
172.17.0.1 - - [28/May/2024:09:20:02 +0000] "GET /wp-includes/js/dist/vendor/wp-polyfill.min.js?ver=3.15.0 HTTP/1.1" 200 14177 "http://localhost:8080/wp-admin/install.php?step=1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
172.17.0.1 - - [28/May/2024:09:20:02 +0000] "GET /wp-includes/js/wp-util.min.js?ver=6.5.3 HTTP/1.1" 200 1098 "http://localhost:8080/wp-admin/install.php?step=1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
172.17.0.1 - - [28/May/2024:09:20:02 +0000] "GET /wp-includes/js/underscore.min.js?ver=1.13.4 HTTP/1.1" 200 7655 "http://localhost:8080/wp-admin/install.php?step=1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
172.17.0.1 - - [28/May/2024:09:20:02 +0000] "GET /wp-admin/js/user-profile.min.js?ver=6.5.3 HTTP/1.1" 200 2705 "http://localhost:8080/wp-admin/install.php?step=1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
172.17.0.1 - - [28/May/2024:09:20:02 +0000] "GET /favicon.ico HTTP/1.1" 302 404 "http://localhost:8080/wp-admin/install.php?step=1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
172.17.0.1 - - [28/May/2024:09:20:02 +0000] "GET /wp-includes/js/zxcvbn.min.js HTTP/1.1" 200 400393 "http://localhost:8080/wp-admin/install.php?step=1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
172.17.0.1 - - [28/May/2024:09:20:02 +0000] "GET /wp-admin/install.php HTTP/1.1" 200 4663 "http://localhost:8080/wp-admin/install.php?step=1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
127.0.0.1 - - [28/May/2024:09:20:07 +0000] "OPTIONS * HTTP/1.0" 200 126 "-" "Apache/2.4.59 (Debian) PHP/8.2.19 (internal dummy connection)"

 

번외) 실시간으로 로그 확인 (-f 옵션)

docker logs -f 1c31  #워드프레스 ID

로그를 켜 놓은 상태에서 워드프레스 페이지를 새로고침하여 로그를 업데이트하는 방식으로 확인했다.

실시간 로그를 중지하려면 ctrl + c를 입력하면 된다.

 

도커는 로그 파일을 자동으로 감지하는 것이 아닌, 표준 스트림(Standard streams) 중 stdout, stderr를 수집한다.

따라서 컨테이너에서 실행되는 프로그램의 로그 설정을 표준 출력으로 바꾸어야 한다.

단지 출력 방식만 바꾸는 것으로 모든 컨테이너는 로그에 대해 같은 방식으로 관리할 수 있게 된다.

 

그리고 컨테이너의 로그 파일은 JSON 방식으로 저장된다.

도커는 다양한 플러그인을 지원하여 JSON이 아닌 특정 로그 서비스에 스트림을 전달할 수 있다.

어느 정도 앱의 규모가 커지면 기본적인 방식 대신 로그 서비스를 이용하는 걸 고려해야 한다.

 

8) 컨테이너 명령어 실행(exec)

컨테이너를 관리하다 보면 실행 중인 컨테이너에 들어가 보거나, 컨테이너의 파일을 실행하고 싶을 때가 있다.

컨테이너에 SSH를 설치하면 되지 않을까? -> 권장하지 않는다.

예전에는 nsenter라는 프로그램을 이용하였는데, 도커에 exec라는 명령어로 흡수되었다.

 

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

run 명령어와 유사해 보이지만 차이가 있다.

  • run: 새로 컨테이너를 만들어서 실행
  • exec: 실행 중인 컨테이너에 명령어 실행

실행 중인 MySQL 컨테이너에 접속해보자.

키보드 입력이 필요하므로 -it 옵션을 주었다.

이렇게 컨테이너에 접속하면 컨테이너를 마음대로 관리할 수 있다.

 

 

 

참고: https://subicura.com/2017/01/19/docker-guide-for-beginners-2.html

'log.info' 카테고리의 다른 글

[Docker] 이미지, 컨테이너 요약  (0) 2024.06.13
[Docker] 이미지 만들기  (0) 2024.05.29
[Docker] 컨테이너 업데이트, Docker Compose  (0) 2024.05.28
[Docker] 설치  (0) 2024.05.28
[Docker] Docker란?  (0) 2024.05.28
  1. Intro
  2. 컨테이너 사용 명령어의 기본 형태
  3. 컨테이너 실행
  4. 도커 기본 명령어
  5. 8) 컨테이너 명령어 실행(exec)
'log.info' 카테고리의 다른 글
  • [Docker] 이미지 만들기
  • [Docker] 컨테이너 업데이트, Docker Compose
  • [Docker] 설치
  • [Docker] Docker란?
wool_
wool_
wool_
나만의 자산
wool_
전체
오늘
어제
  • 분류 전체보기
    • log.info
    • Project
    • TIL
    • 알고리즘
    • 회고
    • Trouble Shooting
    • 기타

블로그 메뉴

  • 🍀 Github
  • 📃 Notion

공지사항

인기 글

태그

항해99
retry
브루트포스
정렬
취리코
이분 탐색
코딩테스트
Trouble Shooting
Til
개발자이력서
Refresh Token
개발자포트폴리오
구현
resilience4j
취업리부트코스
docker
개발자취업
jwt
그리디 알고리즘
Spring Security
회복 탄력성
docker-compose
스택
개발자취준
redis
바인드 마운트
리팩토링
spring boot
개발자포트포리오
volume

최근 댓글

최근 글

hELLO· Designed By정상우.v4.5.3
wool_
[Docker] 컨테이너 실행 및 도커 기본 명령어
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.