基本コマンド
## dockerのバージョン確認 docker version ## docker hub にloginする docker login ## コンテナを1つ起動(hello-worldを表示する) docker run hello-world ## 起動中のコンテナを表示 docker ps ## 起動中のコンテナを表示 -a docker ps -a ## コンテナに名前をつけて起動 docker run --name my-container hello-world ## コンテナを起動してプロセス完了後にコンテナを削除する docker run --name rmtest --rm hello-world
コンテナの作成と開始・停止
## コンテナを作成 docker run -it --name testos centos:8 /bin/bash ## コンテナを起動する docker start testos ## 起動したコンテナを確認する docker ps ## コンテナを停止する(コンテナ名を指定) docker stop testos ## コンテナを再起動する docker restart testos ## コンテナを停止する(コンテナIDを指定) docker stop {CONTAINER ID}
コンテナ内のコマンド操作
## コンテナに入る docker exec -it testos /bin/bash ## コンテナから抜ける exit ## コンテナに入らずにコマンド実行する docker exec testos cat /etc/hosts
コンテナの削除
## コンテナの削除(コンテナIDを指定) docker rm {CONTAINER ID} ## 複数のコンテナの削除(コンテナIDを指定) docker rm {CONTAINER ID} {CONTAINER ID} {CONTAINER ID} ## コンテナの削除(コンテナ名を指定) docker rm {NAMES} ## コンテナを強制的に削除(コンテナ名を指定) docker rm -f {NAMES}
dockerイメージの操作
docker imageは起動してると削除できないので、事前にコンテナを停止&削除してから削除する必要がある
## コンテナのイメージを表示 docker images ## コンテナの停止 docker stop hello-world ## コンテナの削除 docker rm hello-world ## コンテナのイメージの削除 docker rmi {IMAGE ID}
Dockerfileからイメージを作成する
## 事前にdockerfileを作成してフォルダに入れておく cat /buildtest/Dockerfile >FROM centos:7 >RUN yum update -y ## イメージのbuildを行う(Dockerfileの入っているフォルダを指定) docker build buildtest ## イメージの確認 docker images
コンテナとホストマシンでファイルのやり取りを行う
## 事前に適当なフォルダにファイルを用意 cat /command_test/test.txt > cp test ## コンテナの起動 docker start testos ## ローカル環境のファイルをコンテナにコピー docker cp command_test/test.txt testos:/opt ## コンテナにコピーされたファイルがあるか確認 docker exec testos cat opt/test.txt
コンテナのログ出力
## logの出力 docker logs testos ## logのリアルタイム監視 docker logs -f testos
コンテナの状態を確認
## コンテナの設定情報を確認 docker inspect testos
コンテナのイメージを取得する
## dockerイメージの取得 docker pull {IMAGE NAME} ## 取得したイメージの確認 docker ps
コンテナをイメージ化する
## コンテナをイメージ化する(※TAGは自由に設定 ver1.0などを指定可能) docker commit {CONTAINER NAME} {自分のdocker-id}/{作成するIMAGE NAME}:{TAG}
イメージをDockerHubにアップする
## イメージをDockerHubにアップする docker push ymtoym10/ymto-centos:v1
イメージの履歴確認
## イメージの履歴を確認 docker history {REPOSITORY}:{TAG}
dockerでnginxをローカルに立ち上げる
## nginxを立ち上げる docker run -v --name testnginx -p 8080:80 nginx:1.16 ## 事前にtestフォルダにindex.htmlを作成しておく(以下ではtestフォルダ以下にindex.htmlを作成してhello worldと記載する vi /test/index.html >hello world ## nginxを立ち上げてindex.htmlを表示する docker run -v /test/:/usr/share/nginx/html --name testnginx -p 8080:80 nginx:1.16
dockerfileからコンテナを作成する
## 事前にtest2フォルダにDockerfileを作成しておく vi /test2/Dockerfile >FROM ubuntu:20.04 >RUN apt-get update -y && \ > apt-get install -y nginx >CMD ["nginx", "-g", "demon off:"] ## dockerfileからコンテナのイメージ名をつけてbuildを行う docker build -t {IMAGE_NAME} test2/ ## dockerイメージからコンテナを立ち上げる docker run -d -p 8081:80 --name {CONTAINER_NAME} {IMAGE_NAME}
DockerfileでのCOPYの設定例
## 事前にtest3/cooyフォルダにDockerfileを作成しておく vi /test3/copy/Dockerfile >FROM ubuntu:20.04 >RUN apt-get update -y && \ > apt-get install -y nginx >COPY index.html /var/www/html >CMD ["nginx", "-g", "daemon off;"] ## 事前にtest3/copyフォルダにindex.htmlを作成しておく vi /test3/copy/index.html > <h1>hello world</h1> ## test3/copyフォルダのDockerfileからイメージを作成する docker build -t {IMAGE_NAME} test3/copy/ ## 上記で作成したイメージからコンテナを起動 docker run -d -p 8082:80 --name {CONTAINER_NAME} {IMAGE_NAME}
DockerfileでのENVの設定例
## 事前にtest4/envフォルダにDockerfileを作成しておく vi /test4/env/Dockerfile >FROM ubuntu:20.04 >RUN apt-get update -y && \ > apt-get install -y nginx >ENV TESTENV="testenv" >COPY index.html /var/www/html >CMD ["nginx", "-g", "daemon off;"] ## /test4/env/フォルダのDockerfileからイメージを作成する docker build -t {IMAGE_NAME} test4/env/ ## 上記で作成したイメージからコンテナを起動 docker run -d -p 8083:80 --name {CONTAINER_NAME} {IMAGE_NAME} ## コンテナの状況を確認 docker ps ## 登録したENVの内容確認 docker inspect {CONTAINER_NAME} | grep ENV > "TESTENV=testenv"
Dockerfileでのデータベースの設定例
## 事前にtest5/DBフォルダにDockerfileを作成しておく vi /test5/DB/Dockerfile >FROM mariadb:10.6.7 >RUN apt-get update -y >COPY test.conf /etc/mysql/conf.d >ENV MYSQL_USER=root >ENV MYSQL_DATABASE=docker >ENV MYSQL_ROOT_PASSWORD=root ## 事前にCOPY元のファイルを作成しておく touch /test5/DB/test.conf ## /test5/DBフォルダのDockerfileからイメージを作成する docker build -t {IMAGE_NAME} test5/DB/ ## イメージができているか確認 docker images ## コンテナの立ち上げ docker run -d --name {CONTAINER_NAME} {IMAGE_NAME} ## コンテナの起動確認 docker ps ## コンテナに入る docker exec -it {CONTAINER_NAME} /bin/bash ## DBへのログイン(passwordを求められるのでrootを指定) mysql -u root -p >Entry password: root ## データベースの確認 MariaDB [(none)]> show databases -> ; +--------------------+ | Database | +--------------------+ | docker | | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.021 sec)
docker-composeのコマンド
# docker-compose.ymlで管理されているコンテナを止めて削除する docker-compose down # docker-compose.ymlで管理されているコンテナを全て再起動 docker-compose restart # docker-compose.ymlで管理されているコンテナ一覧を表示 docker-compose ps # docker-compose.ymlでサービスを1つ指定してコマンドを実行 docker-compose run {サービス名}