スポンサーリンク

基本コマンド

## 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 {サービス名}
おすすめの記事