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?

macでDocker(いまさらなのでメモです)

0
Last updated at Posted at 2026-08-11

いまさらながら、Docker始めました。

しかも、macで・・
メモです。

環境

DockerDesktopよりも、Macだと Orbstackがいいって誰かが言ってたので、Orbstack配下でDockerを動かしてみます。

階層イメージ

こんなイメージにしたいです。

Mac
│
├── エディタ
│    └── ソース編集
│
├── ~/prg/orbtest/
│    ├── Dockerfile
│    ├── compose.yaml
│    ├── hogehoge.c
│    ├── hogehoge.py
│    └── .venv/
│
└── OrbStack
     └── Docker
          └── my-dev-container
               │
               ├── Ubuntu 24.04
               │
               ├── dev ← 普段のユーザー
               │
               ├── gcc
               ├── Python
               └── Git

Orbstackのインストール

homebrewでインストールしました。

$ brew install --cask orbstack

インストールしたら、ランチャー(今だと「アプリ」)からOrbStackを起動しました。
なんかボタンおしました。

Dockerが動いてるか確認

$ docker --version

Docker version 28.x.x, build xxxxx
途中で、のように表示されたので、OKですね!

お試しをやってみます。

$ docker run --rm hello-world

を実行します。

Hello from Docker!
と表示されたので、OKですね。

なんか、満足。
でも、もうちょっとやります。

macのフォルダとDockerフォルダの同期?

日本語あってるかわかんないですが、Docker上でコードを書くより、Mac上で慣れたエディタで書いたほうがいいです。

フォルダの作成

いつも、~/prgフォルダの下に、ファルダ作ってるので、今回は下記にしました。

$ cd
$ cd prg
$ mkdir orbtest

Docker起動

$ cd orbtest
$ docker run -it --rm \
  -v "$PWD:/workspace" \
  -w /workspace \
  ubuntu:24.04 \
  bash
root@xxxxxxxx:/workspace#

ってなったので、Dockerからファイルを作ってみて動作確認してみます。

# echo "Hello hogehoge" > hello.txt
# ls

ファイルできてますね。

Dockerから抜けます。

# exit

Macに戻ったので、

$ ls
hello.txt

ファイルありますね。
中身も念のため・・

$ cat hello.txt

同期取れてますね。かなり満足。
でも続きます・・

Dockerfileの作成

これ作らないとですね。

エディタで、同じフォルダにDockerfileを作ります。

gccやpythonその他、思いついたのを書いときます。
又、devっていうユーザーを作って、使うようにするので、sudoも入れときます。

FROM ubuntu:24.04

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && apt-get install -y \
    build-essential \
    git \
    curl \
    wget \
    sudo \
    python3 \
    python3-pip \
    python3-venv \
    && rm -rf /var/lib/apt/lists/*

# 開発用ユーザーを作成
RUN useradd -m -s /bin/bash dev \
    && echo "dev ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/dev \
    && chmod 0440 /etc/sudoers.d/dev

WORKDIR /workspace

USER dev

CMD ["/bin/bash"]

compose.yamlの作成

同じフォルダにエディタで作りました。
その辺からコピペしてきたんですが、あってるかな・・

services:
  dev:
    build: .
    working_dir: /workspace
    volumes:
      - .:/workspace
    tty: true
    stdin_open: true

実行!

$ docker compose up -d --build

最初はbuildで、時間かかりました。
大丈夫っぽい。

動いてるかな・・

$ docker compose ps
NAME            IMAGE         COMMAND       SERVICE   CREATED         STATUS         PORTS
orbtest-dev-1   orbtest-dev   "/bin/bash"   dev       5 seconds ago   Up 4 seconds   

動いてるっぽい。

ログインしてみます。

$ docker compose exec dev bash
dev@xxxxxxxx:/workspace$

オッケー!

なにか作ってみる

Dockerから抜けます。

dev@xxxxxxxx:/workspace$ exit

もちろん「hello.c」

macでいつものコードを書きます。

#include <stdio.h>

int main(void)
{
    printf("Hello Docker!\n");
    return 0;
}

エディタで保存したら、再び、Dockerへ!

$ docker compose exec dev bash
dev@xxxxxxxx:/workspace$ gcc hello.c -o hello
dev@xxxxxxxx:/workspace$ ./hello
Hello Docker! 

できたー。

おまけメモ

停止

$ docker compose down

起動

$ docker compose up -d

プロセス確認

$ docker compose ps

ログイン?

$ docker compose exec dev bash

完成

めでたしめでたし。

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?