[基本環境]
- Debian 12 (amd64)
- Docker 27.3.1
[やりたいこと]
- gcloudコマンドがインストール済みのDockerコンテナを作りたい
- ついでに、日本語入力対応済みのコンテナにする
[注意]
[Dockerコンテナの展開手順]
- Dockerイメージを作成する
※ ubuntu 22.04を基礎とする
※ Dockerイメージ名をubuntu2204:gcloudにしている
$ docker pull ubuntu:22.04
$ touch Dockerfile
$ editor Dockerfile
Dockerfileの中に、以下の内容を書いて保存する
FROM ubuntu:22.04
RUN apt-get update -y && \
apt-get install -y curl && \
apt-get install -y apt-transport-https && \
apt-get install -y ca-certificates && \
apt-get install -y gnupg
RUN echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list && \
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg && \
apt-get update -y && \
apt-get install google-cloud-cli -y
RUN apt-get update -y && \
apt-get install -y locales && \
locale-gen ja_JP.UTF-8 && \
each "export LANG=ja_JP.UTF-8" >> ~/.bashrc
$ docker build ./ -t ubuntu2204:gcloud
- Dockerイメージを確認する
$ docker images
このコマンドを実行すると
ubuntu2204 gcloud ..略..
という行があるはず
- Dockerコンテナを展開する
※ コンテナ名をgoogle-envにしている
$ docker run -itd --privileged --name google-env ubuntu2204:gcloud
$ docker exec -it google-env /bin/bash
このコマンドを実行して
root@<コンテナID>:/#
が表示されていれば、コンテナの展開に成功している
Read more →
[基本環境]
- Ubuntu 18.04
- Docker 19.03.12
[参考サイト]
[注意]
[Dockerコンテナの展開(ホストOS上で実行)]
- docker pull ubuntu:18.04
- docker run -itd --privileged -p 80:80/tcp --name redmine ubuntu:18.04
- docker exec -it redmine /bin/bash
[コンテナ(redmine)内での手続き]
- adduser ubuntu
- apt-get update
- apt-get upgrade
- apt-get install sudo
- usermod -G sudo ubuntu
- su - ubuntu
- sudo apt-get install locales
- sudo locale-gen ja_JP.UTF-8
- locale -a
- sudo apt-get install build-essential zlib1g-dev libssl-dev libreadline-dev
- sudo apt-get install libyaml-dev libcurl4-openssl-dev libffi-dev
- sudo apt-get install postgresql libpq-dev
- sudo apt-get install apache2 apache2-dev
- sudo apt-get install imagemagick fonts-takao-pgothic
- sudo apt-get install subversion git vim
- curl -O https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.5.tar.gz
- tar xvf ruby-2.6.5.tar.gz
- cd ruby-2.6.5
- ./configure --disable-install-doc
- make
- sudo make install
- cd
- ruby -v
- sudo service postgresql start
- sudo -u postgres createuser -P redmine
- sudo -u postgres createdb -E UTF-8 -l ja_JP.UTF-8 -O redmine -T template0 redmine
- sudo mkdir /var/lib/redmine
- sudo chown www-data /var/lib/redmine
- sudo -u www-data svn co https://svn.redmine.org/redmine/branches/4.1-stable /var/lib/redmine
- cd
- vi database-yml.sh
- chmod 755 database-yml.sh
- sudo ./database-yml.sh
- more /var/lib/redmine/config/database.yml
- ファイルの存在を確認
- password:にpostgresqlのユーザredmineのパスワードを書く
- vi configuration-yml.sh
- chmod 755 configuration-yml.sh
- sudo ./configuration-yml.sh
- more /var/lib/redmine/config/configuration.yml
- cd /var/lib/redmine/config/
- sudo chown www-data:www-data database.yml
- sudo chown www-data:www-data configuration.yml
- cd /var/lib/redmine/
- sudo -u www-data bundle install --without development test --path vendor/bundle
- sudo -u www-data bin/rake generate_secret_token
- sudo -u www-data RAILS_ENV=production bin/rake db:migrate
- sudo gem install passenger -N
- sudo passenger-install-apache2-module --auto --languages ruby
- cd
- vi redmine-conf.sh
- chmod 755 redmine-conf.sh
- sudo ./redmine-conf.sh
- more /etc/apache2/conf-available/redmine.conf
- ファイルの存在を確認
- 3行目(</Directory>)以降の内容がpassenger-install-apache2-module --snippetの出力結果であることを確認
- sudo a2enconf redmine
- apache2ctl configtest
- sudo service apache2 reload
- sudo vi /etc/apache2/sites-enabled/000-default.conf
- DocumentRootの値を /var/lib/redmine/public に変更
- apache2ctl configtest
- sudo service apache2 reload
- sudo service apache2 start
- sudo vi /etc/init.d/redmine-start.sh
- sudo chmod 755 /etc/init.d/redmine-start.sh
- sudo vi /etc/init.d/redmine-stop.sh
- sudo chmod 755 /etc/init.d/redmine-stop.sh
- sudo service postgresql stop
- sudo service apache2 stop
- exit
- exit
[Dockerイメージの生成(ホストOS上で実行)]
- docker stop redmine
- docker commit redmine ubuntu1804:redmine
[DockerイメージからRedmineを展開(ホストOS上で実行)]
- docker run -itd --privileged -p 8080:80 --name sample ubuntu1804:redmine
- docker exec sample /etc/init.d/redmine-start.sh
[Redmineコンテナの停止]
- docker exec sample /etc/init.d/redmine-stop.sh
- docker stop sample
[Redmineコンテナの起動]
- docker start sample
- docker exec sample /etc/init.d/redmine-start.sh
[Redmineの起動を確認]
- 手元PCのウェブブラウザで http://RedmineのIPアドレス:8080/ に接続する
Read more →
[基本環境]
- Python 3.7.3
- Docker 19.03.8
[注意]
- Docker SDK for Pythonを基にしたDocker制御ではない
- Subprocessを基にしたDocker制御である
- Dockerのオプションを多様したいなら、結局、Subprocessに落ち着く
[Dockerコンテナ一覧の取得]
- Dockerコマンドなら
- Pythonコードなら
- import subprocess
- comp = subprocess.run([‘docker’, ‘ps’, ‘-a’], encoding=‘utf-8’, stdout=subprocess.PIPE)
- print(comp)
[Dockerコンテナの起動]
- Dockerコマンドなら
- docker run -itd --priviledged -p 80:80/tcp --name websrv debian:stable
- Pythonコードなら
- import subprocess
- comp = subprocess.run([‘docker’, ‘run’, ‘-itd’, ‘--priviledged’, ‘-p’, ‘80:80/tcp’, ‘--name’, ‘websrv’, ‘debian:stable’], encoding=‘utf-8’, stdout=subprocess.PIPE)
- print(comp)
[まとめ]
- subprocess.runの第一引数のリストにコマンドとオプションを列挙することで、オプションが増えても気にせず実行できる
Read more →
[基本環境]
- Debian 10.3.0 (amd64)
- Docker 19.03.8
[参考サイト]
[注意]
- Docker環境の構築や他のサイトを読んで、Docker環境を構築していること
- 本記事は、Jupyter NotebookをWEBブラウザで確認するまでの手続きである
[Dockerコンテナの展開]
- docker pull debian:stable
- docker run -itd --privileged -p 8888:8888/tcp -p 8888:8888/udp --name jupyter debian:stable
- docker exec -it jupyter /bin/bash
[コンテナ(jupyter)内での手続き]
- apt update
- apt upgrade
- apt install git
- apt install curl
- apt install bzip2
- apt install vim
- git clone https://github.com/pyenv/pyenv.git ~/.pyenv
- echo ’export PYENV_ROOT="${HOME}/.pyenv"’ » ~/.bash_profile
- echo ’export PATH="${PYENV_ROOT}/bin:$PATH"’ » ~/.bash_profile
- echo ’export PATH="${PYENV_ROOT}/shims:$PATH"’ » ~/.bash_profile
- echo ’eval “$(pyenv init -)”’ » ~/.bash_profile
- source ~/.bash_profile
- pyenv install anaconda3-5.3.1
- echo ’export PATH="$PYENV_ROOT/versions/anaconda3-5.3.1/bin:$PATH"’ » ~/.bash_profile
- source ~/.bash_profile
- pyenv versions
- pyenv global anaconda3-5.3.1
- ipython3
- In [1]: from IPython.lib import passwd
- In [2]: passwd()
- Jupyter Notebookを開くときのパスワードを設定する
- Out[2]: ‘sha1:xxxxxxxxx’ これをメモしておく
- In[3]: quit()
- jupyter-notebook --generate-config
- vi ~/.jupyter/jupyter_notebook_config.py
- 先頭(本当はどこでも良い)に以下の内容を追加する
c.IPKernelApp.pylab = ‘inline’
c.NotebookApp.ip = ‘*’
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888
c.NotebookApp.password = u’sha1:xxxxxxxxx’ メモしたやつ
[Jupyter Notebookの起動]
- mkdir workspace ホームディレクトリで実行する
- cd workspace
- jupyter-notebook --allow-root
- WEBブラウザで http://IPアドレス:8888/ にアクセスする
- パスワードには上の passwd() で設定したものを記述する
- 停止するときはControl + Zを押す
- プロセスが生きていたらkillで強制終了する
[おまけ:コンテナ起動時にJupyter Notebookを一緒に起動する]
- シェルスクリプトを仕込む (コンテナ内で実行する)
- vi /etc/rc.local
- 以下の内容を記述する
#!/bin/bash
/etc/init.d/jupyter.sh
- chmod 755 /etc/rc.local
- vi /etc/init.d/jupyter.sh
- 以下の内容を記述する
#!/bin/bash
. ~/.bash_profile
cd /workspace
sleep 3;jupyter-notebook --allow-root
- chmod 755 /etc/init.d/jupyter.sh
- exit コンテナ(jupyter)から一度出る
- コンテナ(jupyter)を起動する
- docker restart jupyter
- docker exec jupyter /etc/rc.local
Read more →
[基本環境]
- Debian 10.3.0 (amd64)
- Docker 19.03.8
[注意]
[Dockerコンテナの展開]
- mkdir /home/ユーザ名/workspace
- ホストのディレクトリをコンテナでマウントするための準備
- ユーザ名は各々の環境に合わせて置き換える
- docker run -itd --privileged -v /home/ユーザ名/workspace:/mnt --name wordcloud debian:stable
- docker exec -it wordcloud /bin/bash
[コンテナ(wordcloud)内での手続き]
- apt update
- apt install python-pip python3-pip
- pip3 install wordcloud
- apt install vim
- cd /mnt
- vi sample.py
- python3 sample.py
Read more →
[基本環境]
[Docker環境の構築手順]
- Dockerをインストールする
$ sudo apt update
$ sudo apt install apt-transport-https
$ sudo apt install ca-certificates
$ sudo apt install curl
$ sudo apt install gnupg2
$ sudo apt install software-properties-common
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
$ sudo apt update
$ sudo apt install docker-ce
- Dockerの動作状況を確認する
$ sudo systemctl status docker
このコマンドを実行して
Active: active (running)
が表示されるなら、Dockerは動作中である
$ sudo docker ps -a
このコマンドを実行して
CONTAINER ID IMAGE ..略..
が表示されるなら、Dockerコマンドも正しく動作している
- 一般ユーザにDockerコマンドの実行権限を与える
$ sudo usermod -aG docker ${USER}
$ sudo reboot
[Dockerコンテナの展開]
- Dockerイメージをダウンロードする
※ 例として、Debianのイメージファイルをダウンロードしている
$ docker pull debian:stable
- 新規コンテナを展開する
※ ホストとの間で80(HTTP)ポートを繋いだコンテナを作っている
※ コンテナ名をwebservにしている
$ docker run -itd --privileged -p 80:80/tcp -p 80:80/udp --name webserv debian:stable
- コンテナの中にログインする
$ docker exec -it webserv /bin/bash
Read more →