LoginSignup
1
0

More than 3 years have passed since last update.

DockerHubでデバッグ環境構築(Ubuntu,Rust,Docker,lldb)

Last updated at Posted at 2020-05-21

追記2020/06/20

Rustは公式でDockerイメージを公表しているので、そちらを参考にされる方がよいです。

目的

配布可能なRustの実行・デバッグ環境が必要になったのでDockerで作りました。
dockerさえインストールしてあれば1行で環境構築が終わるはず。

TLTR

dockerhubに公開したので、以下のコマンドを実行すれば実行環境が手に入るはず!

docker pull padawane15/ubuntu_rust_exa

Ubuntu 20.04 LTS
MacOS 10.15.4 Catalina
Docker version 19.03.8

docker環境を自分で構築する方法

上記の環境構築ではなく、自分で作りたい場合には以下のような手順を踏みます。

Ubuntu(イメージ?)をダウンロードして、デバッグのためのコンテナを作成する

この際、ubuntu:[バージョン]とすることで、バージョンを指定できる。指定しないと最新がインストールされる。


docker pull utuntu

docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --security-opt apparmor=unconfined -it --name ubuntu_rust_exa ubuntu  /bin/bash

必要なパッケージをインストールする

[dockerコンテナの中]

  • パッケージインストーラ
apt-get update -y && apt-get upgrade -y
apt-get install -y build-essential curl vim llvm lldb make wget git

  • もしかしたら必要なもの(要求されれば入れる)
 apt-get install -y tzdata build-essential curl git libbz2-dev libffi-dev liblzma-dev libncurses5-dev libncursesw5-dev libpq-dev libreadline-dev libsqlite3-dev libssl-dev llvm make tk-dev unzip vim wget xz-utils zlib1g-dev
  • rustのインストールとパスの設定
curl https://sh.rustup.rs -sSf | sh
source $HOME/.cargo/env
source .bashrc
rustup component add rust-src
  • 読みたいパッケージexaを用意する

ソースコードからビルドしたいので、githubのソースコードをダウンロードする

git clone https://github.com/ogham/exa.git
  • ビルドする

cargo buildでデバッグビルドになる(らしい?)
最適化は--releaseをつけてビルドする。

cd exa
cargo build --release
cargo run --release
make install
  • その他 これでもいいみたい。
cargo install --git https://github.com/ogham/exa

エラーになる原因 docker run オプションの注意点

error: process launch failed: 'A' packet returned an error: 8

dockerの内部からlldbやgdbの機能を使うと出てくる。

今回オプションに付けたもので解決できる。

解決方法の参考文献 https://forums.swift.org/t/debugging-using-lldb/18046/2

dockerの停止、再開

dockerは仮想サーバーに近い。exitで抜けても動いている。

  • 停止したdockerコンテナに対してスタートして入る
docker start ubuntu_rust_exa
docker exec -it ubuntu_rust_exa /bin/bash
  • dockerの中から抜ける
exit
  • 動いているdockerコンテナの中に入る
docker attach ubuntu_rust_exa
  • dockerの状態を確認する
docker image ls 
docker container ls
  • 実行中のプロセスを確認する
docker ps -a
  • コンテナの削除
docker rm [containerid]
  • イメージの削除
docker rmi [imageid]
  • 全コンテナ停止
docker stop $(docker ps -qa)

dockerを公開する

  • コンテナIDの確認
docker container ls
  • dockerhubにコミットする

DockerHubに自分のアカウントを作成する。
コミットが成功したら、DockerHubの自分のアカウントページを見てみましょう。そこにさっき作ったリポジトリが追加されていたら成功です。

docker commit -m "first commit " -a "username" [containerid] [username]/[containername]

参考文献

https://github.com/ogham/exa
https://www.fabrica-com.co.jp/techblog/technology/994/
https://qiita.com/kiii142/items/cad9ac53a78c401545a2
https://www.slideshare.net/ShinichiMakino1/exa-84358376
https://blog.codecamp.jp/programming-docker-hub
https://qiita.com/legokichi/items/e2f807f70316a916f4be
https://forums.swift.org/t/debugging-using-lldb/18046/2

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