OS/Docker

exec

MellowHoney 2024. 4. 1. 19:26
728x90
λ°˜μ‘ν˜•

μ„€λͺ…

πŸ”– μ‹€ν–‰ 쀑인 μ»¨ν…Œμ΄λ„ˆμ—μ„œ λͺ…λ Ή μ‹€ν–‰ 

μ‚¬μš©λ²•

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

μ˜΅μ…˜

  • μ£Ό λͺ…λ Ήμ–΄
    • -it [container] [shell] : μ»¨ν…Œμ΄λ„ˆμ—μ„œ μ‹€μ‹œκ°„μœΌλ‘œ μΌœμ ΈμžˆλŠ” μ‰˜ 터미널 μ‹€ν–‰
Option  Short Default Descripion
--detach -d   뢄리 λͺ¨λ“œ: λ°±κ·ΈλΌμš΄λ“œμ—μ„œ λͺ…λ Ή μ‹€ν–‰
--detach-keys     μ»¨ν…Œμ΄λ„ˆ 뢄리λ₯Ό μœ„ν•œ ν‚€ μ‹œν€€μŠ€ μž¬μ •μ˜
--env -e   API 1.25+ ν™˜κ²½ λ³€μˆ˜ μ„€μ •
--env-file     API 1.25+ ν™˜κ²½ λ³€μˆ˜ 파일 읽기
--interactive -i   μ—°κ²°λ˜μ§€ μ•Šμ€ κ²½μš°μ—λ„ STDIN(Standard Input)을 μ—΄μ–΄ λ‘μ‹­μ‹œμ˜€.
--privileged     λͺ…령에 ν™•μž₯ κΆŒν•œ λΆ€μ—¬
--tty -t   μ˜μ‚¬ TTY(cmd) ν• λ‹Ή
--user -u   μ‚¬μš©μž 이름 λ˜λŠ” UID(ν˜•μ‹: <name
--workdir -w   API 1.35+ μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ˜ μž‘μ—… 디렉터리

μ˜ˆμ‹œ

# 셸을 κΈ°λ³Έ ν”„λ‘œμ„ΈμŠ€λ‘œ μ‚¬μš©ν•˜μ—¬ 이미지 mycontainerμ—μ„œ 이름이 μ§€μ •λœ μ»¨ν…Œμ΄λ„ˆκ°€ μƒμ„±λ˜κ³  μ‹œμž‘. 
# μ˜΅μ…˜ ( 의 μ•½μΉ­ )은 μ˜μ‚¬ TTYκ°€ μ—°κ²°λœ( ) μƒνƒœλ‘œ 뢄리 λͺ¨λ“œλ‘œ λ°±κ·ΈλΌμš΄λ“œμ—μ„œ μ‹€ν–‰λ˜λ„λ‘ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ„€μ •. 
# μ˜΅μ…˜μ€ μ—°κ²° μœ μ§€( )둜 μ„€μ •λ˜μ–΄ ν”„λ‘œμ„ΈμŠ€κ°€ μ¦‰μ‹œ μ’…λ£Œ
$ docker run --name mycontainer -d -i -t alpine /bin/sh

# /tmp/execWorks그러면 μ‹€ν–‰ 쀑인 μ»¨ν…Œμ΄λ„ˆ 내뢀에 mycontainerλ°±κ·ΈλΌμš΄λ“œμ—μ„œ μƒˆ 파일이 생성
$ docker exec -d mycontainer touch /tmp/execWorks

# μ»¨ν…Œμ΄λ„ˆμ—μ„œ μƒˆ μ…Έ μ„Έμ…˜μ΄ μ‹œμž‘
$ docker exec -it mycontainer sh

# 이 docker execλͺ…령은 μ»¨ν…Œμ΄λ„ˆκ°€ 생성될 λ•Œ μ„€μ •λœ ν™˜κ²½ λ³€μˆ˜λ₯Ό 상속. 
# μ „μ—­ ν™˜κ²½ λ³€μˆ˜λ₯Ό μž¬μ •μ˜ν•˜κ±°λ‚˜ μ—μ„œ μ‹œμž‘ν•œ ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•œ μΆ”κ°€ ν™˜κ²½ λ³€μˆ˜λ₯Ό μ„€μ •ν•˜λ €λ©΄ --env(λ˜λŠ” μ•½μΉ­)을 μ‚¬μš©.
$ docker exec -e VAR_A=1 -e VAR_B=2 mycontainer env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=f64a4851eb71
VAR_A=1
VAR_B=2
HOME=/root

# --workdirμ˜΅μ…˜(λ˜λŠ” -wλ‹¨μΆ•ν˜•)을 μ‚¬μš©ν•˜μ—¬ μ‹€ν–‰ν•  λͺ…령에 λŒ€ν•œ λŒ€μ²΄ μž‘μ—… 디렉터리λ₯Ό μ§€μ •
$ docker exec -it -w /root mycontainer pwd
/root
λ°˜μ‘ν˜•