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.

Docker 事始め Vagrant On rocky8

Posted at

etc docker

docker install

参考

[root@docker ~]# docker -v
Docker version 20.10.15, build fd82621

docker-compose install

curl -L https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
[root@docker vagrant]# docker-compose --version
Docker Compose version v2.5.0

Docker cmd list

URL

# 強制削除
docker rm -f getting-started-docs-1

httpd

# Docker image pull
docker pull httpd
# Docker httpd start
docker run -d --name my-apache -p 8080:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd
# 確認
curl http://localhost:8080
## FROM HOST
http://192.168.56.10:8080/
docker run -d -p 80:80 docker/getting-started
# localhost
http://192.168.56.10/tutorial/
docker stop 0c57b84663b8
docker rm reverent_vaughan
docker container kill -s KILL jolly_wing
docker container kill -s KILL my-apache
docker container prune
docker images --filter "dangling=true"

docker rmi $(docker images -f "dangling=true" -q)

Terminal

docker run --name test -it debian

サンプル・アプリケーション

Docker公式

sudo su -
cd /share/vagrant/01.sample/
## git 無かったのでHOST側で
git clone https://github.com/docker/getting-started.git
cd getting-started/app
docker build -t getting-started .
# => REPOSITORY = getting-started
docker run -dp 3000:3000 --rm --name gs getting-started  
docker container ls
CONTAINER ID   IMAGE             COMMAND                  CREATED          STATUS          PORTS                            NAMES
3799de15aa65   getting-started   "docker-entrypoint.s…"   18 seconds ago   Up 17 seconds   0.0.0.0:3000->3000/tcp   gs
docker container exec -it gs ls /bin/
docker container exec -it gs /bin/ash
http://192.168.56.10:3000
curl http://localhost:3000

DB の保持

docker volume create todo-db
docker run -dp 3000:3000 --rm --name gs -v todo-db:/etc/todos getting-started
docker container exec -it gs /bin/ash
docker volume inspect todo-db
ll /var/lib/docker/volumes/todo-db/_data/
total 8
-rw-r--r-- 1 root root 8192 May  9 21:39 todo.db
# Docker\01.sample\getting-started\app\src\persistence\sqlite.js
 1 const sqlite3 = require('sqlite3').verbose();
 2 const fs = require('fs');
 3 const location = process.env.SQLITE_DB_LOCATION || '/etc/todos/todo.db';

バインド マウント の使用

*vagrant の共有フォルダでは volume 上手く行かない

mkdir -p /share/work
cp -R /share/vagrant/01.sample/getting-started/app /share/work/.
cd /share/work/app
docker run -dp 3000:3000 --name sample \
-w /app -v "$(pwd):/app" \
node:12-alpine \
sh -c "yarn install && yarn run dev"

docker logs -f sample
vim /share/work/app/src/static/js/app.js
# 109 行目
-  {submitting ? 'Adding...' : 'Add Item'}
+  {submitting ? 'Adding...' : 'Add'}

結果

docker logs -f sample
[nodemon] 2.0.13
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node src/index.js`
Using sqlite database at /etc/todos/todo.db
Listening on port 3000
[nodemon] restarting due to changes...        # 変更を検知して再起動してくれる。
[nodemon] starting `node src/index.js`
Using sqlite database at /etc/todos/todo.db
Listening on port 3000

複数コンテナのアプリ

# pwd
/share/work/app
docker network create todo-app
  • MySQL コンテナを起動
docker run -d --name mysql --rm \
--network todo-app --network-alias mysql \
-v todo-mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=secret \
-e MYSQL_DATABASE=todos \
mysql:5.7
  • db 確認
docker exec -it mysql mysql -u root -p'secret'
  • network 確認
docker run -it --network todo-app --name net_tools nicolaka/netshoot
;; ANSWER SECTION:
mysql.                  600     IN      A       172.19.0.2
  • app 確認
docker run -dp 3000:3000 --name sample --rm \
  -w /app -v "$(pwd):/app" \
  --network todo-app \
  -e MYSQL_HOST=mysql \
  -e MYSQL_USER=root \
  -e MYSQL_PASSWORD=secret \
  -e MYSQL_DB=todos \
  node:12-alpine \
  sh -c "yarn install && yarn run dev"
docker logs -f sample
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node src/index.js`
Waiting for mysql:3306.
Connected!
Connected to mysql db at host mysql
Listening on port 3000

Docker Compose を使う

URL

[vagrant@docker ~]$ docker --version
Docker version 20.10.15, build fd82621
[vagrant@docker ~]$ docker-compose --version
Docker Compose version v2.5.0
cp /share/vagrant/01.sample/docker-compose/docker-compose.yml /share/work/app/docker-compose.yml
cd /share/work/app
[root@docker ap]# docker-compose up -d
[+] Running 4/4
 ⠿ Network docker-compose_default           Created   0.1s 
 ⠿ Volume "docker-compose_todo-mysql-data"  Created   0.0s
 ⠿ Container docker-compose-mysql-1         Started   1.9s 
 ⠿ Container docker-compose-app-1           Started   1.9s
[root@docker app]# docker ps -a                                                                                                                      
CONTAINER ID   IMAGE            COMMAND                  CREATED         STATUS        PORTS                    NAMES
4fdc0b024710   node:12-alpine   "docker-entrypoint.s…"   3 seconds ago   Up 1 second   0.0.0.0:3000->3000/tcp   app-app-1
5e3945cc7a4b   mysql:5.7        "docker-entrypoint.s…"   3 seconds ago   Up 1 second   3306/tcp, 33060/tcp      app-mysql-1
 app という名前のグループが見えます。
 これは Docker Compose による「プロジェクト名」で、同じグループのコンテナに対して使われます。
 デフォルトでは、プロジェクト名はシンプルに docker-compose.yaml が置かれているディレクトリ名(app)です。
docker-compose logs -f app
docker-compose down
ll /var/lib/docker/volumes
total 24
drwx-----x  3 root root     19 May 10 22:08 app_todo-mysql-data
brw-------  1 root root 253, 0 May 10 21:54 backingFsBlockDev
drwx-----x  3 root root     19 May 10 22:02 docker-compose_todo-mysql-data
-rw-------. 1 root root  32768 May 10 22:08 metadata.db
drwx-----x  3 root root     19 May  9 21:34 todo-db
drwx-----x  3 root root     19 May  9 22:38 todo-mysql-data
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?