Play with DockerでUbuntuを使う (2) 一般ユーザーになってみる

## この記事の対象者

- 高校生から大学1年生くらいの人。
- Dockerを初めて使ってみる人。
- Linux (Ubuntu)を試してみたい人。
- Windowsを利用しているがWSLが利用できない環境にある人。（MacOSはUNIX系OSです）


投稿者にとっては備忘録です。

前回の記事は下記の通り。

https://qiita.com/momozuka/items/c52b7b8d102d59b5caa6

## Ubuntuコンテナをバックグラウンドで起動する

### バックグラウンドで起動

Ubuntuのコンテナに`my-ubuntu`という名前を付けて、Ubuntuコンテナをバックグラウンドで起動する。

（前回のUbuntuの利用法では、Ubuntuからログアウトすると、コンテナが停止し、Ubuntuで設定した内容はすべて再利用できなくなってしまっていた。）


`$ docker run -dit --name my-ubuntu ubuntu`

- -d: コンテナをバックグラウンドで実行。
- -i: 標準入力を開いたままにする（インタラクティブな操作を可能にする）。
- -t: 疑似TTYを割り当てる（ターミナルでの操作を可能にする）。
- --name my-ubuntu: コンテナにmy-ubuntuという名前を付ける。
- ubuntu: 使用するDockerイメージを指定する（ここではUbuntuを使用）。

```shell
$ docker run -dit --name my-ubuntu ubuntu
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
5a7813e071bf: Pull complete
Digest: sha256:hoge
Status: Downloaded newer image for ubuntu:latest
hoge
[node1] (local) root@192.168.0.23 ~
$
```

### Ubuntuコンテナにbashでログイン

前回同様、rootとしてログインしている。IDにパスワードは設定されていない。

`$ docker exec -it my-ubuntu bash`

```shell
$ docker exec -it my-ubuntu bash
root@c9dd8b301986:/#
```

## Ubuntuを使ってみる

### apt updateする

`# apt update`

```shell
root@d2ce1c07db42:/# apt update
Get:1 http://archive.ubuntu.com/ubuntu noble InRelease [256 kB]
Get:2 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB]
（以下省略）
```

### adduser



`adduser`とは、ユーザーを追加する機能である。一般ユーザーを追加することにする。

`# apt install -y adduser`

```shell
root@d2ce1c07db42:/# apt install -y adduser
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
```

### 一般ユーザーを追加

ここでは、myuserという名前の一般ユーザーを追加している

`# adduser myuser`

```shell
root@d2ce1c07db42:/# adduser myuser
info: Adding user `myuser' ...
info: Selecting UID/GID from range 1000 to 59999 ...
info: Adding new group `myuser' (1001) ...
info: Adding new user `myuser' (1001) with group `myuser (1001)' ...
info: Creating home directory `/home/myuser' ...
info: Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for myuser
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] Y
info: Adding new user `myuser' to supplemental / extra groups `users' ...
info: Adding user `myuser' to group `users' ...
root@d2ce1c07db42:/#
```

### 一般ユーザに管理者権限の付与


もし一般ユーザーにも管理者権限を与えたい場合は、sudo を追加

`# apt install sudo`


```shell
root@d2ce1c07db42:/# apt install sudo
Reading package lists... Done
（中略）
After this operation, 3665 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libapparmor1 amd64 4.0.1really4.0.1-0ubuntu0.24.04.3 [50.3 kB]
Get:2 http://archive.ubuntu.com/ubuntu noble/main amd64 sudo amd64 1.9.15p5-3ubuntu5 [948 kB]
（以下省略）
root@d2ce1c07db42:/#
```
myuserに管理者権限を付与する。

`# usermod -aG sudo myuser`

```shell
root@d2ce1c07db42:/# usermod -aG sudo myuser
root@d2ce1c07db42:/#
```

### 一般ユーザー（ユーザー名myuser）になる

`# su - myuser`

```shell
root@d2ce1c07db42:/# su - myuser
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

myuser@d2ce1c07db42:~$
```

### 名前の確認

`$ whoami`

```shell
myuser@d2ce1c07db42:~$ whoami
myuser
```

### ディレクトリの確認など

`$ pwd` 現在いるディレクトリの確認

```shell
myuser@d2ce1c07db42:~$ pwd
/home/myuser
myuser@d2ce1c07db42:~$
```


`$ ls` ファイル名の取得

```shell
myuser@d2ce1c07db42:~$ ls
myuser@d2ce1c07db42:~$
```


`$ ls -la` 隠しファイルも表示する。詳細を表示する。

```shell
myuser@d2ce1c07db42:~$ ls -la
total 16
drwxr-x--- 2 myuser myuser   78 Mar 21 08:59 .
drwxr-xr-x 1 root   root     35 Mar 21 08:54 ..
-rw------- 1 myuser myuser   13 Mar 21 08:59 .bash_history
-rw-r--r-- 1 myuser myuser  220 Mar 21 08:53 .bash_logout
-rw-r--r-- 1 myuser myuser 3771 Mar 21 08:53 .bashrc
-rw-r--r-- 1 myuser myuser  807 Mar 21 08:53 .profile
myuser@d2ce1c07db42:~$
```


### テキストファイルを作ってみる

現在いるディレクトリにtest.txtというファイルを作って、そこに「私の名前は山田太郎です」と書き込み、内容を確認する。（勉強のためには、viエディタなどが使用できるようになるといい。）

```shell
myuser@c9dd8b301986:~$ touch test.txt
myuser@c9dd8b301986:~$
myuser@c9dd8b301986:~$ echo "私の名前は山田太郎です" > test.txt
myuser@c9dd8b301986:~$
myuser@c9dd8b301986:~$ cat test.txt
私の名前は山田太郎です
myuser@c9dd8b301986:~$
```

## Linuxの勉強をしたい人向け

リンク先には無料のテキストが掲載されている。

https://linuc.org/textbooks/linux/