ホストからDockerコンテナーでコマンドを実行する

Docker

Dockerコンテナーでコマンドを実行するには、コンテナーにアクセスしてからコマンドを入力する必要がありますが、コンテナーの数が多い場合、一度に1つのコンテナーにアクセスしてコマンドを実行してもまったく効果がありません。 この記事では、コンテナにアクセスせずにコンテナでコマンドを実行する方法を説明します。

コンテナーにアクセスしてファイルを作成する

まず、docker psコマンドを使用して、現在実行中のコンテナーを一覧表示します

# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fa05e898c196 centos "/bin/bash" About a minute ago Up 11 seconds CENTOS7

次のコマンドでコンテナにアクセスします。

docker exec -it CENTOS7 /bin/bash

構文:

docker exec -it <container id hoc tên container> /bin/bash

/ optディレクトリにテストファイルを作成します

[root@fa05e898c196 /]# touch /opt/test.txt
[root@fa05e898c196 /]# ls -l /opt/
drwxr-xr-x 2 root root 6 Nov 16 03:57 test.txt

コンテナを終了し、Ctrl + Dを押します

ホストからDockerコンテナーでコマンドを実行する

ホストからコンテナ内のステートメントを実行するには、次の構文でコマンドを実行します。

docker exec /bin/bash -c ''

例:

# docker exec CENTOS7 /bin/bash -c 'ls -l /opt'
total 0
drwxr-xr-x 2 root root 6 Nov 16 03:57 test.txt

ホストから、コンテナCENTOS 7のコマンドls -l /optディレクトリを使用しました。より複雑なコマンドを実行したり、複数のコマンドを組み合わせたりできます。
例:

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"'

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です