Dockerメモ

ちょっとだけ触ってみた。

インストール
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –
sudo add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable”
sudo apt-get update
sudo apt-get install docker-ce
sudo cgroupfs-mount
sudo usermod -aG docker $USER
再起動
sudo cgroupfs-mount && sudo service docker start

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum makecache fast
yum install docker-ce
systemctl start docker
systemctl enable docker

利用方法

pull
イメージ取得

docker pull mysql:5.7.22 タグでバージョン指定もできる

images
イメージの一覧

rmi
イメージの削除

rmi {REPOSITORY} latestが消える
rmi {IMAGE_ID}

run {起動したいイメージ}
コンテナ作成

–rm 利用後コンテナ削除
–name 作成するコンテナに名前をつける
-it 中に入れる
-d バックグラウンドで起動
-p ポートマッピング
-v コンテナとホストのディレクトリをつなげる {ホスト側:コンテナ側}

docker run –rm -it –name aaa “mysql:5.7.22” /bin/bash
docker run –rm -v “/home/okamura:/home” –name bbb -it “mysql:5.7.22” /bin/bash
docker run –rm -d –name aaa -e “MYSQL_ROOT_PASSWORD=123” “mysql:5.7.22”
docker run –rm -it –name aaa -e “MYSQL_ROOT_PASSWORD=123” “mysql:5.7.22”
docker run -it -p 81:80 ddd /bin/bash

ちなみにMySQLの場合
Can’t create/write to file ‘/tmp/xxx’で落ちる。要調査。

docker stop {NAMES}
コンテナ停止

入っている場合は
exit
または、
Ctrl+P > Q
この2つはコンテナが停止しない

Ctrl+Dでbash
プロセスを止めると、コンテナも停止する

docker start  {NAMES}
コンテナ再実行

docker exec -it {NAMES} bash
起動済みのコンテナに入る

ps
動いているコンテナ

ps -a
停止しているコンテナ

rm {NAMES}
コンテナの削除

具体例(MySQL)

docker run -d -e MYSQL_ROOT_PASSWORD=123 -p 3306:3306 mysql:5.7
コンテナ実行

dockerをインストールしただけの状態でも自動でイメージを落としてくれる。

firewall-cmd –add-port=3306/tcp –zone=public –permanent
firewall-cmd –reload
とりあえずVPSなのでポート開けておく。

docker exec -it {NAMES} bash
入って操作する。

mysql -u root -p123;
create database test_db; use test_db; create table test (id int);

ここで、ローカルからデータを入れる。

docker stop {NAMES}
一旦停止。

もちろん停止している間はデータは入らない。

docker start {NAMES}
再度起動

データは保存されている。