Skip to content

ToshikiNakamura0412/dockerfiles

Repository files navigation

dockerfiles

License: MIT

image

  • Development environment using Docker for some Linux distributions
  • You can use GUI applications without setting up xhost.
    • Linux Only
    • You use macOS, you need to set up xhost.
  • dotfiles is included in the image
    • tmux prefix set to C-q

Environment

OS

  • Linux
  • macOS (Not support GPU)

Architecture

  • x86_64
  • arm64

Editor

  • VSCode
  • Neovim (Not support completion: ROS2)
    • CentOS Stream: Not support Neovim. Please use Vim.

Prerequisites

Common

GPU

Use

  • nvidia-container-runtime
    • If you can't install this package, install nvidia-container-toolkit before installing this package.
    • If you can't use GPU, execute the following command:
      sudo systemctl restart docker

Not use

  • Please disable GPU by custom setup

Installation

Clone

git clone https://github.com/ToshikiNakamura0412/dockerfiles.git

Setup

Default

create directories (e.g. workspace)

cd dockerfiles
make setup # create directories

Custom

cd dockerfiles
make [target] [arg=<arg>]
...
make setup # create directories
  • show help of make: make help
  • show help of target: make [target] arg=-h
    • target: change_root_dir, disable_gpu, select_shell, setup, sync_git_user

If you already start the container, you need to execute the following command to reflect the changes.

docker compose up [option -d]

Clean

  • remove directories (e.g. workspace) and revert to the default state
    • If the directories are not empty, they will not be deleted
cd dockerfiles
make clean

Docker

Distro Default Shell Base Image Contents README
alpine3.17 Alpine3.17 zsh alpine (Official)
archlinux ArchLinux zsh archlinux (Official)
centos-stream9 CentOS Stream9 zsh centos (Official)
debian12 Debian12 zsh debian (Official)
fedora40 Fedora40 zsh fedora (Official)
humbe Ubuntu22.04 zsh ros (Official) ROS2 Humble
noetic Ubuntu20.04 zsh ros (Official) ROS1 Noetic
noetic-cuda Ubuntu20.04 zsh cuda (Official) ROS1 Noetic + CUDA-11.6.1-devel
noetic-cuda-opencv Ubuntu20.04 zsh noetic-cuda (Custom) ROS1 Noetic + CUDA-11.6.1-devel + OpenCV-5.x README
noetic-cudnn Ubuntu20.04 zsh cuda (Official) ROS1 Noetic + CUDA-11.6.1-cuDNN8-devel
noetic-cudnn-opencv Ubuntu20.04 zsh noetic-cudnn (Custom) ROS1 Noetic + CUDA-11.6.1-cuDNN8-devel + OpenCV-5.x README
noetic-pcl10 Ubuntu20.04 zsh noetic (Custom) ROS1 Noetic + PCL10 README
noetic-pcl14 Ubuntu20.04 zsh noetic (Custom) ROS1 Noetic + PCL14 README
opensuse-leap15.6 OpenSUSE Leap15.6 zsh opensuse/leap (Official)
ubuntu20.04 Ubuntu20.04 zsh ubuntu (Official)
ubuntu22.04 Ubuntu22.04 zsh ubuntu (Official)
  • Alpine does not yet support nvidia-container-runtime
  • macOS does not support ROS, so please use virtual machines like UTM

Workspace

  • host:
    • default: ~/ws
    • ROS1: ~/ros1_ws
    • ROS2: ~/ros2_ws
  • container:
    • all: ~/ws

Usage

Basic usage

cd <target image dir>
docker compose up [option -d]  # create and start (-d: detached)
docker compose start           # start
docker compose stop            # stop
docker compose down            # stop and remove

If you want to create different containers of the same environment, execute the following:

docker compose -p <project name> up [option -d]

Use Shell

cd <target image dir>
docker compose exec ws <command> # e.g. zsh, bash, tmux
  • bash: All Distro Support
  • zsh: Only Ubuntu Support

Use VSCode

prerequisite: extension ms-vscode-remote.remote-containers

cd <target image dir>
code .
  • Click on Reopen in container to run container
  • If you don't click on Reopen in container, execute ~/install_vscode_extensions.sh in the container to install the extension

Recommendation

  • If you are creating a new IMAGE, it is recommended that you build the provided image and create an image based on it.
  • Use docker compose up to check if the build is done correctly.

References