2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker最低限知識

Last updated at Posted at 2021-08-03

Docker CLI

DockerHub連携

docker login 
docker logout

Docker Help使用

docker help
docker image --help

Docker Image

# 一覧
docker images
docker image ls

# Image取得
docker pull repoName/ImageName:[TagName]

# Imageプッシュ
docker push repoName/ImageName:[TagName]

# Image詳細
docker inspect ImageName

# Imageタグ付け
docker tag ImageName:[TagName] repoName/ImageName:[TagName]

# Image削除
docker rmi ImageName
docker image prune -a

Docker Container

# コンテナ起動
docker run \
    -d \ # ディスパッチモード
    -p <HostPort>:<ContainerPort> \ # パブリック設定ポート番号
    -v <ContainerPath> \ # AnonymousVolume設定
    -v <NamedVolume>:<ContainerPath> \ # Named Volume設定
    -v <HostPath>[$(pwd)]:<ContainerPath>[:ro] \ # Bind Mount設定
    --name ContainerName \ # コンテナ名指定
    --rm \ # 終了後削除設定
    --env PORT=3000 \ # 環境変数指定
    --env-file .env \ # 環境変数ファイル指定
    --network name \ # ネットワーク指定
    ImageName:[TagName] # イメージ指定

# コンテナ一覧確認
docker ps -a

# コンテナへのログイン
docker exec -it ContainerName bash

# ファイルコピー
docker cp <HostFiles> ContainerName:<ContainerPath>
docker cp ContainerName:<ContainerPath> <HostFiles>

# コンテナからDockerイメージ作成
docker commit ContainerName repoName/ImageName:[TagName]

# コンテナ起動、停止
docker start [-a] ContainerName
docker stop ContainerName

# ログ確認
docker logs [-f] ContainerName

# アタッチモード
docker attach ContainerName

# コンテナ削除
docker rm (-f) ContainerName
docker container prune

Docker Network

docker network ls
docker network create --subnet=172.19.0.0/16 mynet
docker network rm xx

Docker Volume

docker volume ls
docker volume create xx
docker volume rm xx

実例

docker run --name php74 -d -p 80 -v "C:\Acquia\docker\static":/var/www/html php:7.4-apache
docker run --name php56 -d -p 80 -v "C:\Acquia\docker\static":/var/www/html php:5.6-apache

docker run --name my-nginx -v "C:\Acquia\docker\static":/usr/share/nginx/html -d -p 80 nginx
docker tag ...
docker push 
ほかの人docker pull

docker run -v "C:\Acquia\docker\mysql":/var/lib/mysql --name my-mysql -e MYSQL_ROOT_PASSWORD=aquaring -d --net=mynet --ip=172.19.0.33 mysql

docker run --name my-drupal --net mynet -p 80 -d drupal

Dockerfile

FROM php:7.4-fpm

WORKDIR /var/www

COPY php.ini /usr/local/etc/php/

ARG DEFAULT_PORT=80

RUN cd /usr/bin && curl -s http://getcomposer.org/installer | php && ln -s /usr/bin/composer.phar /usr/bin/composer

RUN apt-get update \
&& apt-get install -y \
git \
zip \
unzip \
vim
RUN apt-get update \
    && docker-php-ext-install pdo_mysql

ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /composer
ENV PATH $PATH:/composer/vendor/bin
ENV PORT=${DEFAULT_PORT}

EXPOSE ${PORT}

RUN composer global require "laravel/installer"

CLI

docker build \
    --build-arg PORT=80
    -t repoName/ImageName:[TagName] \
    .

.dockerignoreファイル(ビルド時に除外設定)

Dockerfile
node_modules
.env
.git
.gitignore
.dockerignore

Docker Compose

  • compose使用するのは否定的だったが、docker runで実行した内容をドキュメント化する意味では単一コンテナでもcompose使用推奨
version: "3.8"
services:
  mongodb:
    image: 'mongo'
    volumes: 
      - data:/data/db
    environment: 
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: password
  backend:
    build: ./backend
    ports:
      - '80:80'
    volumes: 
      - logs:/app/logs
      - ./backend:/app
      - /app/node_modules
    env_file: 
      - ./env/backend.env
    depends_on:
      - mongodb
  frontend:
    build: ./frontend
    ports: 
      - '3000:3000'
    volumes: 
      - ./frontend/src:/app/src
    stdin_open: true
    tty: true
    depends_on: 
      - backend

volumes: 
  data:
  logs:

CLI

docker-compose build
docker-compose up -d [--build]
docker-compose down
docker-compose run --rm npm init
2
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?