Để thực thi lệnh trong một Docker Container chúng ta phải truy cập vào container sau đó tiến hành gõ lệnh, tuy nhiên nếu số lượng Container nhiều, việc lần lượt truy cập từng Container để thực thi lệnh sẽ không hiệu quả chút nào. Bài viết này sẽ hướng dẫn các bạn thực thi lệnh trong Container mà không cần truy cập vào nó.
Xem thêm:
- Docker là gì?
- Sử dụng Docker như thế nào?
- Truyền lệnh từ Host vào Docker Container
- Sử dụng Docker: Export/Import, Save/Load Container
- Sử dụng Docker: Dockerfile
- Tạo và sử dụng Docker Registry
- Cài đặt và sử dụng Private Docker Registry trên Localhost
Truy cập Container và tạo file
Trước hết dùng lệnh docker ps để liệt kê các Container đang chạy
[root@itfromzero ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fa05e898c196 centos "/bin/bash" About a minute ago Up 11 seconds CENTOS7
Truy cập vào Container bằng lệnh sau:
docker exec -it CENTOS7 /bin/bash
Cú pháp:
docker exec -it <container id hoặc tên container> /bin/bash
Tạo test file tại thư mục /opt
[root@fa05e898c196 /]# mkdir /opt/test.txt [root@fa05e898c196 /]# ls -l /opt/ drwxr-xr-x 2 root root 6 Nov 16 03:57 test.txt
Thoát khỏi container các bạn nhấn tổ hợp phím Ctrl + D
Thực thi câu lệnh trong Docker Container từ Host
Để thực thi câu lệnh trong Container từ Host các bạn thực thi lệnh theo cú pháp sau:
docker exec <container id hoặc tên container> /bin/bash -c ‘<câu lệnh>’
Ví dụ:
[root@itfromzero ~]# docker exec CENTOS7 /bin/bash -c 'ls -l /opt' total 0 drwxr-xr-x 2 root root 6 Nov 16 03:57 test.txt [root@itfromzero ~]#
Từ host mình đã dùng lệnh ls -l thư mục opt trong Container CENTOS 7. Các bạn có thể thực thi nhiều lệnh phức tạp hơn, hay kết hợp nhiều lệnh với nhau. Ví dụ:
docker exec CENTOS7 /bin/bash -c 'cd /etc/init.d/ && /etc/init.d/mysqld start' docker exec CENTOS7 /bin/bash -c 'mysql -h localhost -u root -p'PassWord' DB_1 -e "truncate table DB_1.DB_LOG"' docker exec CENTOS7 /bin/bash -c 'mysql -h localhost -u root -p'PassWord' DB_2 -e "truncate table DB_2.DB_LOG"'
Chúc các bạn thành công.