0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

EC2/AWS でDocker・Docker-compose ・Image・Container・Volume・Networkを実行してみます

Last updated at Posted at 2020-04-23

Docker入門したばかりです、忘れないようにメモしていきます。

EC2でdocker、docker-composeをインストールしていきます。

// docker
sudo yum update -y
sudo yum install -y docker
sudo service docker start
sudo usermod -a -G docker ec2-user

// docker compose
sudo curl -L "https://github.com/docker/compose/rel... -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Image

コンテナの基になるやつ dockerコンテナを立ち上げる基になるのがdocker imageです。

// docker centos検索
docker search centos

// イメージ一覧
docker image ls

// Image IDでimage削除
sudo docker rmi [Image ID]
注意: imageのcontainerはランチ中なら、先にcontainerを削除することが必要です。

// プルimage
docker pull centos:7

Container

imageから仮環境を設定します

// imageからcontainerを行う
docker run --privileged -d -p 80:80 [Image Name] /sbin/init

例:docker run --privileged -d -p 80:80 centos:7 /sbin/init

// container ID チェック
docker ps

// containerに入り 
docker exec -it [Container ID] /bin/bash 

// Apacheインストール
yum -y install httpd
systemctl status httpd
systemctl start httpd
systemctl enable httpd

echo "Hello World" > /var/www/html/index.html

// containerをexit
exit

Docker Hub

docker hubというdockerの公式サイトからpull(ダウンロード)してくることもできるし、自分で作ることもできます。

// 他のデバイスのimage 作成
docker commit -m "Comment" -a "筆者"  [Container ID] [Image Name]
例:docker commit -m "Centos Project01" -a "Nguyen A" d452f1a1b69d project01:v1

// docker/hubにログイン
docker login

// docker hubにプッシュ
docker tag [local image] [origin image]
例:docker tag test/project01:v1 origin/test:v1

docker push [image名]
例:docker push origin/test:v1

// container動くチェック
sudo docker ps -a

// container状態
docker container ls -a

// containner削除
sudo docker rm [Container ID]

// container中止
docker container stop [Container ID]

// 再起動
docker container restart [Container ID]

// container一旦動きを止める
docker container pause  [Container ID]

// container動くに入れる
docker container attach [Container ID]


// 全container中止
docker stop $(docker ps -a -q)

// 全container削除
docker rm $(docker ps -a -q)

// 全image削除
docker rmi -f $(docker images -a -q)

Dockerfile

Imageを作成するために、一覧操作をまとめるのはDocker fileです。

# イメージベース
FROM centos:7

# Author
MAINTAINER "test"

# Apache設定
RUN yum update -y
RUN yum install -y sudo
RUN yum install -y epel-release
RUN yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
RUN yum clean all
RUN yum -y install wget
RUN yum -y install httpd
RUN yum -y install --enablerepo=remi,remi-php71 php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt php-pgsql
 
# Dir設定
WORKDIR /var/www/html

#localから仮定に移動
ADD ./code /var/www/html

# start httpd
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

# 80 443 など
EXPOSE 80


2. Build image
docker build -t httpd_sample .

3. containerを作成、実行
docker run -d -p 80:80 httpd_sample

Docker Compose

複数のコンテナから成るサービスを構築・実行する手順を自動的にし、管理を容易にする機能です。

# docker file
FROM centos:7
RUN yum -y update
RUN yum -y install httpd php
WORKDIR /var/www/html
ADD ./code /var/www/html
EXPOSE 80

# docker compose yml
version: '3'
services:
  web:
    build: .
    command: ["/usr/sbin/httpd", "-D", "FOREGROUND"]
    volumes:
      - ./code:/var/www/html
    ports:
      - "80:80"

# build image
docker-compose build

# run 
docker-compose up
docker-compose up -d (background制度)

# stop
docker-compose stop

# start
docker-compose start

# stop and delete container
docker-compose down

Docker Volume, Networks

Volume

目的はcontainerを削除するとき、データを削除しないように作成します。

# docker volume create       作成
# docker volume inspect      詳細
# docker volume ls           一覧
# docker volume rm           削除
# docker volume prune        全部削除

例1
docker volume create project01_code
docker run --name project01 -p 8081:80 -v project01_code:/usr/local/apache2/htdocs -d httpd

例2
docker container run --name mysql -e MYSQL_ROOT_PASSWORD=pass -p 3306:3306 -d mysql:5.7

docker volume create pj01_data
docker container run --name mysql -v pj01_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=pass -p 3306:3306 -d mysql:5.7

Networks

同じネットワーク場合は複数containerを接続できます。

# docker network create        作成
# docker network inspect       詳細
# docker network ls             一覧
# docker network rm            削除
# docker network prune         要らないネットワーク削除
# docker network connect       接続作成
# docker network disconnect    接続中止

例1

docker network create --subnet 192.168.1.0/24 network1

# 作成したネットワークに設定し、接続します
docker run -itd --name=container1  --network network1 busybox
docker run -itd --name=container2  --network network1 busybox

#接続チェック
docker attach container1
ping [container2 ip]

例2
# docker run --name mysql --network network1 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.7
# docker run --name wordpress --network network1 -e WORDPRESS_DB_PASSWORD=my-secret-pw -p 8080:80 -d wordpress

よく使うコマンド

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker rmi -f $(docker images -a -q)

ご覧いただき、有難うございました。
勘違いところがあれば、気軽にコメントをしてください。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?