ถ้ามี container ที่รันอยู่แล้ว เช่น container ที่รัน MySQL อยู่ เช็คด้วย docker ps
แล้วเจอแบบนี้
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
963b015eb1c1 mysql:8 "docker-entrypoint.s…" 4 weeks ago Up 2 days 0.0.0.0:3306->3306/tcp, 33060/tcp mysql_container
แล้วถ้าเราอยากสั่งรันโปรแกรมอื่นๆ เช่นจะเรียกใช้ mysql client command ที่ติดตั้งไว้ภายใต้ container ที่กำลังรันอยู่นี้ด้วย เราสามารถใช้คำสั่ง docker exec
ช่วยได้
เราลองดู help ของคำสั่งนี้กันก่อนด้วย docker help exec
จะเจอแบบนี้
$ docker help exec
Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
Run a command in a running container
Options:
-d, --detach Detached mode: run command in the background
--detach-keys string Override the key sequence for detaching a container
-e, --env list Set environment variables
--env-file list Read in a file of environment variables
-i, --interactive Keep STDIN open even if not attached
--privileged Give extended privileges to the command
-t, --tty Allocate a pseudo-TTY
-u, --user string Username or UID (format: <name|uid>[:<group|gid>])
-w, --workdir string Working directory inside the container
ซึ่งในกรณีนี้เราจะใช้ option -it
เพราะต้องการให้ client ทำงานโดยมี interactive terminal รอรับคำสั่งที่เราจะพิมพ์ลงไปที่ mysql client ด้วย
ตัวอย่างการใช้งานในการเรียก mysql client ให้รันภายใต้ container ชื่อ mysql_container เป็นดังนี้
$ docker exec -it mysql_container mysql -p test
นั่นคือสั่ง docker exec -it
ตามด้วยชื่อ container mysql_container
ตามด้วยคำสั่งและ option ของคำสั่งที่จะรัน mysql -p test
เท่านี้เราก็รันคำสั่งที่ต้องการภายใต้ container ที่กำลังทำงานอยู่ได้แล้ว
Top comments (0)