GithubHelp home page GithubHelp logo

cspsat-docker's Introduction

Docker image

これらの作業はサーバー管理者が行う.

dockerコマンドを実行できるユーザの登録

sudo adduser xxx docker
sudo adduser xxx users
  • xxx はユーザ名
  • ユーザ xxx はいったんログアウトしてログインする
    • groups コマンドで所属しているgroupを確認できる

カレントディレクトリのDockerfileからdocker imageを作成

docker build -t cspsat-ubuntu-base -f ubuntu/Dockerfile.base ubuntu/
docker build -t cspsat-ubuntu ubuntu/
  • ネットワーク環境の良好な場所で実行すること.
  • Dockerfile の内容にしたがってdocker imageが作成され cspsat-ubuntu-base, cspsat-ubuntu というタグが付けられる.
    • docker imageのタグは,サーバー上で一意でなければならない
    • サーバー管理者以外がdocker imageにタグを付ける場合は,自分のユーザ名を利用すること
  • 詳細は Dockerfile の内容を参照

軽量なイメージの alpine を用いる場合は以下の通り.

docker build -t cspsat-alpine-base -f alpine/Dockerfile.base alpine/
docker build -t cspsat-alpine alpine/
  • shared libraryであるglibcなどが含まれていない. Cのプログラムを実行したい場合はstatic linkで実行ファイルを作成しておくこと.

Docker imageの一覧を表示

docker image ls

Docker imageの削除

docker rmi cspsat-ubuntu
  • 必要があればタグでなくimage IDで削除する

Docker container

これらの作業は利用者各自が行う.

準備

Dockerの動作テスト

docker run --rm hello-world

作業用フォルダの作成と設定

mkdir work
chgrp -R users work
chmod -R g+x work
  • work フォルダを作成するのは,任意のフォルダ内で良い
  • work フォルダのgroupをusers (GID=100)に設定
  • work フォルダにusers groupでの書き込み権限を与える

Docker containerの作成と実行

cd work
docker run --rm -it -v `pwd`:/work cspsat-ubuntu
  • タグ cspsat-ubuntu が付いたdocker imageからcontainerが作成され,bashシェルが実行される.
  • --rm オプションにより,bashシェルが終了すればcontainerが削除される.
  • -it オプションは,インタラクティブモードを指定している.
  • -v オプションにより,カレントフォルダをcontainerの /work フォルダにマウントしている.
  • 他のオプションは docker run --help で調べられる.
    • --cpus 1 : CPUコア数を1個に制限 (未確認)
    • --memory 4g : メモリサイズを4GBに制限 (未確認)
    • --ulimit cpu=3600 : 各プロセスのCPU時間を3600秒に制限 (未確認)

bashシェルのプロンプトが表示されたのち,以下のようにしてコマンドを実行できる (csp-examples/nqueens-8.csp が存在している場合).

sugar -vv -solver minisat csp-examples/nqueens-8.csp
  • 実行権限は cspsat ユーザ (UID=2000, GID=100, PW=cspsat),最初のディレクトリは /work である (Dockerfile 中で指定).
  • ホスト側の work フォルダがGID=100でwritableであると仮定している.
  • 管理者権限でコマンドを実行したい場合は sudo を用いる.
  • /work フォルダ中にファイルを作成した場合,実際にはホスト側のカレントフォルダに作成される.
  • /work フォルダ以外に作成したファイルなどは,containerを終了した時点で削除される.

以下のようにすれば,直接実行できる.

cd work
docker run --rm -it -v `pwd`:/work cspsat-ubuntu bash -ic "sugar -vv -solver minisat csp-examples/nqueens-8.csp"
  • bash -ic でbashシェルをinteractiveモードで起動し,コマンドを実行する.
  • interactiveモードでないと .bashrc が実行されず,PATHやumaskが設定されないので注意する.

Docker containerの一覧を表示

docker ps -a
  • Container IDが表示される

Docker containerの削除

docker rm <container ID>
  • 他人のdocker containerを削除しないように注意する必要がありそう

不要なDocker volumeの削除

docker volume prune

cspsat-docker's People

Contributors

tamura70 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.