Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

1 Commit
ย 
ย 
ย 
ย 

Repository files navigation

codyssey-workstation

1. ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” Docker๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ ์›Œํฌ์Šคํ…Œ์ด์…˜ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค.

Git๊ณผ GitHub๋ฅผ ์ด์šฉํ•œ ๋ฒ„์ „ ๊ด€๋ฆฌ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๊ณ ,
Docker๋ฅผ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜์˜ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ์ง์ ‘ ๊ตฌ์„ฑ ๋ฐ ์‹ค์Šตํ•˜์˜€๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€์™€ ์ปจํ…Œ์ด๋„ˆ์˜ ๊ฐœ๋…, ๊ทธ๋ฆฌ๊ณ  ๊ฒฉ๋ฆฌ๋œ ์‹คํ–‰ ํ™˜๊ฒฝ์˜ ํŠน์ง•์„ ์ดํ•ดํ•˜๊ณ ์ž ํ•œ๋‹ค.


2. ์‹คํ–‰ ํ™˜๊ฒฝ

  • OS: macOS (MacBook Air)
  • ํ„ฐ๋ฏธ๋„: macOS ๊ธฐ๋ณธ ํ„ฐ๋ฏธ๋„
  • Git: Git CLI
  • ์›๊ฒฉ ์ €์žฅ์†Œ: GitHub
  • ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ: OrbStack (Docker Engine)
  • Docker ๋ฒ„์ „: 28.5.2

ํ„ฐ๋ฏธ๋„ ๊ธฐ๋ณธ ๋ช…๋ น

์ˆ˜ํ–‰ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

  • [O] ํ„ฐ๋ฏธ๋„ ๊ธฐ๋ณธ ์กฐ์ž‘ ๋ฐ ํด๋” ๊ตฌ์„ฑ
  • [O] ๊ถŒํ•œ ๋ณ€๊ฒฝ ์‹ค์Šต
  • [O] Docker ์„ค์น˜ ๋ฐ ์ ๊ฒ€
  • [O] hello-world ๋ฐ ubuntu ์‹คํ–‰
  • [O] Dockerfile ๋นŒ๋“œ ๋ฐ ์‹คํ–‰
  • [O] ํฌํŠธ ๋งคํ•‘ ์ ‘์†
  • [O] ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ ๋ฐ˜์˜
  • [O] ๋ณผ๋ฅจ ์˜์†์„ฑ ๊ฒ€์ฆ
  • [O] Git ์„ค์ • ๋ฐ GitHub ์—ฐ๋™
sam@yeon-eowamaeche-ui-MacBookAir codyssey-workstation % pwd
/Users/sam/Documents/GitHub/codyssey-workstation
sam@yeon-eowamaeche-ui-MacBookAir codyssey-workstation % ls
README.md
# ํ˜„์žฌ ์œ„์น˜ ํ™•์ธ
sam@yeon-eowamaeche-ui-MacBookAir ~ % pwd
/Users/sam

# ํด๋” ์ƒ์„ฑ ๋ฐ ์ด๋™
sam@yeon-eowamaeche-ui-MacBookAir ~ % mkdir terminal_test
sam@yeon-eowamaeche-ui-MacBookAir ~ % cd terminal_test

# ๋นˆ ํŒŒ์ผ ์ƒ์„ฑ ๋ฐ ๋ชฉ๋ก ํ™•์ธ (์ˆจ๊น€ ํŒŒ์ผ ํฌํ•จ)
sam@yeon-eowamaeche-ui-MacBookAir terminal_test % touch empty_file.txt
sam@yeon-eowamaeche-ui-MacBookAir terminal_test % ls -la
total 0
drwxr-xr-x   3 sam  staff   96  3 30 21:00 .
drwxr-x---+ 85 sam  staff 2720  3 30 21:00 ..
-rw-r--r--   1 sam  staff    0  3 30 21:00 empty_file.txt

# ํŒŒ์ผ ๋‚ด์šฉ ์ž‘์„ฑ ๋ฐ ํ™•์ธ
sam@yeon-eowamaeche-ui-MacBookAir terminal_test % echo "Hello Codyssey!" > text_file.txt
sam@yeon-eowamaeche-ui-MacBookAir terminal_test % cat text_file.txt
Hello Codyssey!

# ํŒŒ์ผ ๋ณต์‚ฌ
sam@yeon-eowamaeche-ui-MacBookAir terminal_test % cp text_file.txt copy_file.txt

# ์ด๋™/์ด๋ฆ„ ๋ณ€๊ฒฝ
sam@yeon-eowamaeche-ui-MacBookAir terminal_test % mv copy_file.txt rename_file.txt

# ์ƒ์œ„ ํด๋”๋กœ ์ด๋™ ํ›„ ์‚ญ์ œ
sam@yeon-eowamaeche-ui-MacBookAir terminal_test % cd ..
sam@yeon-eowamaeche-ui-MacBookAir ~ % rm -r terminal_test

# ์‹ค์Šต ๋Œ€์ƒ ์ƒ์„ฑ
sam@yeon-eowamaeche-ui-MacBookAir ~ % touch perm_test.txt
sam@yeon-eowamaeche-ui-MacBookAir ~ % mkdir perm_test_dir

# [๋ณ€๊ฒฝ ์ „] ๊ถŒํ•œ ํ™•์ธ
sam@yeon-eowamaeche-ui-MacBookAir ~ % ls -l perm_test.txt
-rw-r--r--  1 sam  staff  0  3 30 21:05 perm_test.txt
sam@yeon-eowamaeche-ui-MacBookAir ~ % ls -ld perm_test_dir
drwxr-xr-x  2 sam  staff  64  3 30 21:05 perm_test_dir

# ๊ถŒํ•œ ๋ณ€๊ฒฝ ์ˆ˜ํ–‰ (ํŒŒ์ผ: 755, ํด๋”: 700)
sam@yeon-eowamaeche-ui-MacBookAir ~ % chmod 755 perm_test.txt
sam@yeon-eowamaeche-ui-MacBookAir ~ % chmod 700 perm_test_dir

# [๋ณ€๊ฒฝ ํ›„] ๊ถŒํ•œ ๋น„๊ต
sam@yeon-eowamaeche-ui-MacBookAir ~ % ls -l perm_test.txt
-rwxr-xr-x  1 sam  staff  0  3 30 21:05 perm_test.txt
sam@yeon-eowamaeche-ui-MacBookAir ~ % ls -ld perm_test_dir
drwx------  2 sam  staff  64  3 30 21:05 perm_test_dir
๊ฒฐ๊ณผ ํ™•์ธ:
perm_test.txt ํŒŒ์ผ์€ -rw-r--r-- (644)์—์„œ -rwxr-xr-x (755)๋กœ ๋ณ€๊ฒฝ๋˜์–ด ์†Œ์œ ์ž, ๊ทธ๋ฃน, ๊ธฐํƒ€ ์‚ฌ์šฉ์ž ๋ชจ๋‘์—๊ฒŒ ์‹คํ–‰(x) ๊ถŒํ•œ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
perm_test_dir ๋””๋ ‰ํ† ๋ฆฌ๋Š” drwxr-xr-x (755)์—์„œ drwx------ (700)์œผ๋กœ ๋ณ€๊ฒฝ๋˜์–ด ์†Œ์œ ์ž๋งŒ ์ฝ๊ธฐ/์“ฐ๊ธฐ/์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ์ ‘๊ทผ์ด ์™„๋ฒฝํžˆ ์ฐจ๋‹จ๋˜์—ˆ์Œ์„ ํ™•์ธํ•˜์˜€์Šต๋‹ˆ๋‹ค.

## Git ์„ค์ • ๋ฐ GitHub ์—ฐ๋™

### 1. Git ๊ธฐ๋ณธ ์„ค์ •

```bash
$ git config --global user.name "mackerel07"
$ git config --global user.email "b*********70@gmail.com"
$ git config --global init.defaultBranch main

$ git init
$ git remote add origin https://github.com/mackerel07/codyssey-workstation.git
sam@yeon-eowamaeche-ui-MacBookAir codyssey-workstation % git remote -v
origin  https://github.com/mackerel07/codyssey-workstation.git (fetch)
origin  https://github.com/mackerel07/codyssey-workstation.git (push)

$ touch README.md
$ git add .

sam@yeon-eowamaeche-ui-MacBookAir codyssey-workstation % git status
On branch main
Your branch is based on 'origin/main', but the upstream is gone.
  (use "git branch --unset-upstream" to fixup)

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   README.md
sam@yeon-eowamaeche-ui-MacBookAir codyssey-workstation % git add README.md 
sam@yeon-eowamaeche-ui-MacBookAir codyssey-workstation % git commit -m "feat: chore README.md"
[main abe5c36] feat: chore README.md
 1 file changed, 1 insertion(+)

**ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…**

### 1. GitHub push ์ธ์ฆ ์‹คํŒจ

#### 1) ๋ฌธ์ œ
git push ์‹คํ–‰ ์‹œ ์•„๋ž˜์™€ ๊ฐ™์€ ์ธ์ฆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค.

#### 2) ์›์ธ ๊ฐ€์„ค
GitHub์—์„œ ๋” ์ด์ƒ ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ธฐ๋ฐ˜ ์ธ์ฆ์„ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•œ ๋ฌธ์ œ๋ผ๊ณ  ํŒ๋‹จํ•˜์˜€๋‹ค.
#### 3) ํ™•์ธ
GitHub ์ •์ฑ…์„ ํ™•์ธํ•œ ๊ฒฐ๊ณผ, HTTPS ๋ฐฉ์‹์—์„œ๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ ๋Œ€์‹  Personal Access Token ๋˜๋Š” ์™ธ๋ถ€ ์ธ์ฆ ๋ฐฉ์‹์ด ํ•„์š”ํ•จ์„ ํ™•์ธํ•˜์˜€๋‹ค.
#### 4) ํ•ด๊ฒฐ / ๋Œ€์•ˆ
Visual Studio Code์—์„œ GitHub ๊ณ„์ • ๋กœ๊ทธ์ธ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ธ์ฆ์„ ์™„๋ฃŒํ•˜์˜€๋‹ค.
์ดํ›„ git push ๋ช…๋ น์ด ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜์—ˆ๋‹ค.

$ git push
Username for 'https://github.com': mackerel07
Password for 'https://mackerel07@github.com':
remote: Invalid username or token. Password authentication is not supported for Git operations.
fatal: Authentication failed

sam@yeon-eowamaeche-ui-MacBookAir codyssey-workstation % git push
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 10 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (9/9), 707 bytes | 707.00 KiB/s, done.
Total 9 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
To https://github.com/mackerel07/codyssey-workstation.git
 * [new branch]      main -> main

 ## โœ”๏ธ Git ์—ญํ• 

- ๋กœ์ปฌ์—์„œ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ˆ˜ํ–‰
- GitHub๋ฅผ ํ†ตํ•ด ์›๊ฒฉ ์ €์žฅ์†Œ์— ์ฝ”๋“œ ๊ณต์œ 

### 2.Docker ๊ธฐ๋ณธ ์‹คํ–‰
sam@yeon-eowamaeche-ui-MacBookAir codyssey-workstation % docker --version
Docker version 28.5.2, build ecc6942
sam@yeon-eowamaeche-ui-MacBookAir codyssey-workstation % docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.
##### Docker๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์„ค์น˜๋˜๊ณ  ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ด๋ฃจ์–ด์กŒ์Œ์„ ํ™•์ธํ•˜์˜€๋‹ค.

### 3. Ubuntu ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
sam@yeon-eowamaeche-ui-MacBookAir codyssey-workstation % docker run -it ubuntu bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
86790fc5660d: Pull complete 
Digest: sha256:186072bba1b2f436cbb91ef2567abca677337cfc786c86e107d25b7072feef0c
Status: Downloaded newer image for ubuntu:latest
root@6599e567239e:/# ls
bin  boot  dev  etc  home  lib  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@6599e567239e:/# echo hello
hello
#### ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ๋ช…๋ น์–ด๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๋ฉฐ, ํ˜ธ์ŠคํŠธ์™€ ๋ถ„๋ฆฌ๋œ ํ™˜๊ฒฝ์ž„์„ ํ™•์ธํ•˜์˜€๋‹ค.

### 4. Docker ์ƒํƒœ ํ™•์ธ
sam@yeon-eowamaeche-ui-MacBookAir codyssey-workstation % docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED              STATUS              PORTS     NAMES
6599e567239e   ubuntu    "bash"    About a minute ago   Up About a minute             interesting_meninsky
sam@yeon-eowamaeche-ui-MacBookAir codyssey-workstation % docker ps -a
CONTAINER ID   IMAGE         COMMAND    CREATED              STATUS                      PORTS     NAMES
6599e567239e   ubuntu        "bash"     About a minute ago   Up About a minute                     interesting_meninsky
ec0b5630d21c   hello-world   "/hello"   2 minutes ago        Exited (0) 2 minutes ago              thirsty_pike
fdc88053091b   hello-world   "/hello"   12 minutes ago       Exited (0) 12 minutes ago             goofy_moore
fd30b82f5713   hello-world   "/hello"   12 minutes ago       Exited (0) 12 minutes ago             stoic_brattain
sam@yeon-eowamaeche-ui-MacBookAir codyssey-workstation % docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
hello-world   latest    eb84fdc6f2a3   6 days ago    5.2kB
ubuntu        latest    e3847ac055b4   4 weeks ago   101MB
sam@yeon-eowamaeche-ui-MacBookAir codyssey-workstation % docker info
Client:
 Version:    28.5.2
 Context:    orbstack
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.29.1
    Path:     /Users/sam/.docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.40.3
    Path:     /Users/sam/.docker/cli-plugins/docker-compose
...์ดํ•˜ ์ƒ๋žต

sam@yeon-eowamaeche-ui-MacBookAir web % docker stats
CONTAINER ID   NAME               CPU %     MEM USAGE / LIMIT    MEM %     NET I/O           BLOCK I/O         PIDS 
5d886db78b60   my-web-container   0.00%     7.48MiB / 7.807GiB   0.09%     2.81kB / 1.18kB   10.2MB / 8.19kB   11 

sam@yeon-eowamaeche-ui-MacBookAir web % docker logs 5d886db78b60
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
์ดํ•˜์ƒ๋žต...
#### ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ์™€ ์ข…๋ฃŒ๋œ ์ปจํ…Œ์ด๋„ˆ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜์˜€๋‹ค.

### exec vs attach ์ฐจ์ด ์ •๋ฆฌ
sam@yeon-eowamaeche-ui-MacBookAir web % docker exec 5d886db78b60 ls
bin
dev
docker-entrypoint.d
docker-entrypoint.sh
์ดํ•˜ ์ƒ๋žต...
sam@yeon-eowamaeche-ui-MacBookAir web % docker attach 5d886db78b
>๋‘˜๋‹ค ์ปจํ…Œ์ด๋„ˆ์— ์ ‘์†ํ•˜๋Š” ๋ช…๋ น์–ด์ง€๋งŒ, attach๋Š” ์ปจํ…Œ์ด๋„ˆ์— ์ง์ ‘ ์—ฐ๊ฒฐํ•˜์—ฌ ์ œ์–ดํ•˜๊ณ , exec๋Š” ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์„œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ ‘์†ํ•œ๋‹ค

### ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ ์ „ํ›„ ๋ณ€๊ฒฝ

#### ํ˜ธ์ŠคํŠธ์—์„œ ํ™•์ธ
sam@yeon-eowamaeche-ui-MacBookAir ~ % mkdir bind-test
sam@yeon-eowamaeche-ui-MacBookAir ~ % cd bind-test
sam@yeon-eowamaeche-ui-MacBookAir bind-test % echo "hello" > test.txt
sam@yeon-eowamaeche-ui-MacBookAir bind-test % cat test.txt
hello

#### ์ปจํ…Œ์ด๋„ˆ์—์„œ ํ™•์ธ
sam@yeon-eowamaeche-ui-MacBookAir web % docker run -v $(pwd):/app -it ubuntu
<$(pwd) : ํ˜„์žฌ ๋‚ด ์ปดํ“จํ„ฐ ํด๋”
/app : ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ๊ฒฝ๋กœ
์ฆ‰ โ†’ ๋‚ด ํด๋” = ์ปจํ…Œ์ด๋„ˆ /app๊ณผ ์—ฐ๊ฒฐ๋จ>
root@28c86dae2666:/# cat /app/test.txt
hello

#### ์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒ ํ›„ ํ˜ธ์ŠคํŠธ์—์„œ ํŒŒ์ผ ์ˆ˜์ •
root@28c86dae2666:/# exit
exit

sam@yeon-eowamaeche-ui-MacBookAir bind-test % echo "changed" > test.txt
sam@yeon-eowamaeche-ui-MacBookAir bind-test % cat test.txt
changed

#### ์ปจํ…Œ์ด๋„ˆ ์ ‘์† ํ›„ ํ™•์ธ
sam@yeon-eowamaeche-ui-MacBookAir bind-test % docker run -it -v $(pwd):/app ubuntu bash
root@28c86dae2666::/# cat /app/test.txt
changed
<๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ŠคํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ปจํ…Œ์ด๋„ˆ์— ์—ฐ๊ฒฐํ•˜์˜€๋‹ค.
ํ˜ธ์ŠคํŠธ์—์„œ ํŒŒ์ผ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•œ ํ›„ ์ปจํ…Œ์ด๋„ˆ์—์„œ ํ™•์ธํ•œ ๊ฒฐ๊ณผ, ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ฆ‰์‹œ ๋ฐ˜์˜๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์˜€๋‹ค.
์ด๋ฅผ ํ†ตํ•ด ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ๋Š” ํ˜ธ์ŠคํŠธ์™€ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์— ๋™์ผํ•œ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๊ณต์œ ํ•จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.>

## **ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…**: ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ ๊ฒฝ๋กœ ์˜ค๋ฅ˜
๋ฌธ์ œ
๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ–ˆ์œผ๋‚˜,
์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ `/app` ๋””๋ ‰ํ† ๋ฆฌ์— ํŒŒ์ผ์ด ๋ณด์ด์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค.

์›์ธ/๊ฐ€์„ค
* ํ˜ธ์ŠคํŠธ ๊ฒฝ๋กœ๊ฐ€ ์ž˜๋ชป ์ง€์ •๋˜์—ˆ์„ ๊ฐ€๋Šฅ์„ฑ
* ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งˆ์šดํŠธํ–ˆ์„ ๊ฐ€๋Šฅ์„ฑ

ํ™•์ธ ๊ณผ์ •

```bash
docker run -it -v /bind-test:/app ubuntu bash
root@28c86dae2666:/# ls /app

๊ฒฐ๊ณผ:
(์ถœ๋ ฅ ์—†์Œ)
โ†’ `/app` ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋น„์–ด์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธ

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
ํ˜ธ์ŠคํŠธ์˜ ์‹ค์ œ ๊ฒฝ๋กœ๋ฅผ ์ •ํ™•ํžˆ ์ง€์ •ํ•˜๋„๋ก ์ˆ˜์ •

```bash
docker run -it -v $(pwd):/app ubuntu bash
 

<๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ ์‚ฌ์šฉ ์‹œ ํ˜ธ์ŠคํŠธ ๊ฒฝ๋กœ๊ฐ€ ์ •ํ™•ํ•˜์ง€ ์•Š์œผ๋ฉด ํŒŒ์ผ์ด ๋ณด์ด์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
`$(pwd)`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ง€์ •ํ•จ์œผ๋กœ์จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.>

### Docker ๊ฐœ๋… ์ •๋ฆฌ
- Docker Image๋Š” ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์„ ์œ„ํ•œ ์„ค๊ณ„๋„์ด๋‹ค.
- Container๋Š” ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹คํ–‰๋œ ๋…๋ฆฝ์ ์ธ ํ™˜๊ฒฝ์ด๋‹ค.
- ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€๋Š” ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ๊ณผ ๊ฒฉ๋ฆฌ๋˜์–ด ์žˆ๋‹ค.

### 5.Dockerfile ๊ธฐ๋ฐ˜ ์›น ์„œ๋ฒ„ ์‹คํ–‰
```bash
sam@yeon-eowamaeche-ui-MacBookAir codyssey-workstation % mkdir web
sam@yeon-eowamaeche-ui-MacBookAir codyssey-workstation % ls
README.md	web
sam@yeon-eowamaeche-ui-MacBookAir codyssey-workstation % cd web
sam@yeon-eowamaeche-ui-MacBookAir web % mkdir site
sam@yeon-eowamaeche-ui-MacBookAir web % touch site/index.html   
sam@yeon-eowamaeche-ui-MacBookAir web % touch Dockerfile
sam@yeon-eowamaeche-ui-MacBookAir web % nano
sam@yeon-eowamaeche-ui-MacBookAir web % nano site/index.html
####์‚ฌ์ดํŠธ ์ฝ”๋“œ ์ž‘์„ฑ
<h1>Hello Docker</h1>

sam@yeon-eowamaeche-ui-MacBookAir web % ls  
Dockerfile	site
sam@yeon-eowamaeche-ui-MacBookAir web % ls   
Dockerfile	site
sam@yeon-eowamaeche-ui-MacBookAir web % nano Dockerfile
sam@yeon-eowamaeche-ui-MacBookAir web % docker build -t my-web:1.0 .
[+] Building 8.9s (7/7) FINISHED                                                                                                 docker:orbstack
 => [internal] load build definition from Dockerfile                                                                                        0.0s
 => => transferring dockerfile: 90B                                                               
 ...์ดํ•˜ ์ƒ๋žต
sam@yeon-eowamaeche-ui-MacBookAir web % docker run -d -p 8080:80 --name my-web-container my-web:1.0              
d886db78b607e9cad9ce88bb089600b0114b51f9f6ffa13010a6a413d897445

### ์›น์‚ฌ์ดํŠธ ์ ‘์†
๋ธŒ๋ผ์šฐ์ €์— http://localhost:8080 ์ ‘์† ํ›„, Hello Docker์„ ํ™•์ธํ•จ
>์›น ์„œ๋ฒ„๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ํฌํŠธ ๋งคํ•‘์ด ์ด๋ฃจ์–ด์กŒ์Œ์„ ํ™•์ธํ•˜์˜€๋‹ค

###์ œ์ž‘ ๊ฒฐ๊ณผ
๊ธฐ์กด Dockerfile ๊ธฐ๋ฐ˜ ์ปค์Šคํ…€ ์ด๋ฏธ์ง€ ์ œ์ž‘
๋ณธ ์ž‘์—…์€ ์ œ์‹œ๋œ ๋ฐฉ์‹ ์ค‘ (A) ์›น ์„œ๋ฒ„ ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ํ™œ์šฉ + ์ •์  ์ฝ˜ํ…์ธ  ๊ต์ฒด ๋ฐฉ์‹์„ ์„ ํƒํ•˜์—ฌ ์ง„ํ–‰ํ•˜์˜€๋‹ค

1) ์„ ํƒํ•œ ๊ธฐ์กด ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ๋ฐ Dockerfile ๊ตฌ์„ฑ
๋ฒ ์ด์Šค ์ด๋ฏธ์ง€: nginx:latest (์›น ์„œ๋ฒ„ ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€)

์„ ํƒ ์ด์œ : ๋ณ„๋„์˜ ์›น ์„œ๋ฒ„ ์„ค์ • ์—†์ด NGINX ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€์˜ ๊ธฐ๋ณธ ์›น ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— ์ปค์Šคํ…€ HTML ํŒŒ์ผ๋งŒ ๋ฎ์–ด์“ฐ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋น ๋ฅด๊ณ  ๊ฐ„ํŽธํ•˜๊ฒŒ ์ •์  ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž„.
2) ์ ์šฉํ•œ ์ปค์Šคํ…€ ํฌ์ธํŠธ ๋ฐ ๊ฐ๊ฐ์˜ ๋ชฉ์ 
์ปค์Šคํ…€ ํฌ์ธํŠธ 1: site/index.html ํŒŒ์ผ ์ž‘์„ฑ

๋ชฉ์ : NGINX ๊ธฐ๋ณธ ์›ฐ์ปด ํŽ˜์ด์ง€ ๋Œ€์‹ , "Hello Docker"๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๋‚˜๋งŒ์˜ ์ปค์Šคํ…€ ์ •์  ์›น ํ™”๋ฉด์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•จ.

์ปค์Šคํ…€ ํฌ์ธํŠธ 2: Dockerfile ๋‚ด COPY ๋ช…๋ น์–ด ์‚ฌ์šฉ

๋ชฉ์ : ํ˜ธ์ŠคํŠธ์—์„œ ์ž‘์„ฑํ•œ ์ปค์Šคํ…€ index.html ํŒŒ์ผ์„ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋‚ด๋ถ€์˜ NGINX ๊ธฐ๋ณธ ์›น ์„œ๋น„์Šค ๋””๋ ‰ํ† ๋ฆฌ(/usr/share/nginx/html/)๋กœ ๋ณต์‚ฌํ•˜์—ฌ ๊ธฐ์กด ํŒŒ์ผ์„ ๊ต์ฒดํ•˜๊ธฐ ์œ„ํ•จ

### 6.๋ณผ๋ฅจ ์˜์†์„ฑ ๊ฒ€์ฆ

#### ๋ณผ๋ฅจ ์ƒ์„ฑํ•˜๊ธฐ
sam@yeon-eowamaeche-ui-MacBookAir web % docker volume create mydata
mydata

#### ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ๋ฐ ๋ณผ๋ฅจ ์—ฐ๊ฒฐ
am@yeon-eowamaeche-ui-MacBookAir web % docker run -d --name vol-test1 -v mydata:/data ubuntu sleep infinity
ea1adb6f419ba06cb28652bb185617c472ffc7762d571e058fff0688a5d7404c
sam@yeon-eowamaeche-ui-MacBookAir web % docker exec -it vol-test1 bash -c "echo 'Volume Data Safe!' > /data/hello.txt && cat /data/hello.txt"
Volume Data Safe!
(๋‚ด๋ถ€์— ์ ‘์†ํ•ด์„œ hello.txt์— ๊ธ€์ž์“ฐ๊ธฐ ๋ฐ ํ™•์ธ {>์„ ํ†ตํ•ด ํŒŒ์ผ์ƒ์„ฑ})

#### ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ
sam@yeon-eowamaeche-ui-MacBookAir web % docker rm -f vol-test1
vol-test1

#### ๋‘ ๋ฒˆ์งธ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
sam@yeon-eowamaeche-ui-MacBookAir web % docker run -d --name vol-test2 -v mydata:/data ubuntu sleep infinity
ad90c8ff11601ae9454f60f32ed71088991358549a915b0eb6712fc2c9b714ab

#### ๋ฐ์ดํ„ฐ ํ™•์ธ(์˜์†์„ฑ ๊ฒ€์ฆ)
sam@yeon-eowamaeche-ui-MacBookAir web % docker exec -it vol-test2 bash -c "cat /data/hello.txt"
Volume Data Safe!
<์œ„ ๊ณผ์ •์„ ํ†ตํ•ด ์ฒซ ๋ฒˆ์งธ ์ปจํ…Œ์ด๋„ˆ(vol-test1) ๋‚ด๋ถ€์— ์ƒ์„ฑํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ปจํ…Œ์ด๋„ˆ ๊ฐ•์ œ ์‚ญ์ œ ํ›„์—๋„ ์œ ์‹ค๋˜์ง€ ์•Š์Œ์„ ์ง์ ‘ ํ™•์ธํ•˜์˜€๋‹ค.
์™„์ „ํžˆ ์ƒˆ๋กœ์šด ๋‘ ๋ฒˆ์งธ ์ปจํ…Œ์ด๋„ˆ(vol-test2)๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋™์ผํ•œ ๋ณผ๋ฅจ(mydata)์„ ๋งˆ์šดํŠธํ–ˆ์„ ๋•Œ, ์ด์ „ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ž‘์„ฑํ–ˆ๋˜ ๋ฐ์ดํ„ฐ(hello.txt)๋ฅผ ๊ทธ๋Œ€๋กœ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
์ด๋ฅผ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ๋ช…์ฃผ๊ธฐ(์ƒ์„ฑ/์‚ญ์ œ)์™€๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ํ˜ธ์ŠคํŠธ์— ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด์กดํ•˜๋Š” Docker ๋ณผ๋ฅจ์˜ ์˜์†์„ฑ(Persistence) ํŠน์ง•์„ ์„ฑ๊ณต์ ์œผ๋กœ ๊ฒ€์ฆํ•˜์˜€๋‹ค.>

### 7.Git ์„ค์ • ๋ฐ Github ์—ฐ๋™ ์ฆ๊ฑฐ
sam@yeon-eowamaeche-ui-MacBookAir web % git config --list
credential.helper=osxkeychain
init.defaultbranch=main
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
user.name=mackerel07
user.email=b*********170@gmail.com
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
core.precomposeunicode=true
submodule.active=.
remote.origin.url=https://github.com/mackerel07/codyssey-workstation.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.main.remote=origin
branch.main.merge=refs/heads/main
lfs.repositoryformatversion=0

### 8.๋ณด์•ˆ ๋ฐ ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ ์ค€์ˆ˜
๋ณธ ๊ธฐ์ˆ  ๋ฌธ์„œ(README.md) ๋ฐ ์ฒจ๋ถ€๋œ ๋ชจ๋“  ํ„ฐ๋ฏธ๋„ ๋กœ๊ทธ, ์Šคํฌ๋ฆฐ์ƒท ์ž‘์„ฑ ์‹œ ์•„๋ž˜์˜ ๋ณด์•ˆ ์ˆ˜์น™์„ ์ฒ ์ €ํžˆ ์ค€์ˆ˜ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

ํ„ฐ๋ฏธ๋„ ์กฐ์ž‘ ๋กœ๊ทธ ๊ธฐ๋ก ์ค‘ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ์ธ ํ† ํฐ(PAT), ๋น„๋ฐ€๋ฒˆํ˜ธ, ์ธ์ฆ ์ฝ”๋“œ ๋“ฑ์˜ ๋ฏผ๊ฐ ์ •๋ณด๋Š” ๋ฌธ์„œ์— ํฌํ•จํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

GitHub Push ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•œ ์ธ์ฆ ๋‹จ๊ณ„ ๊ธฐ๋ก ์‹œ, ๋ฏผ๊ฐํ•œ ์ž๊ฒฉ ์ฆ๋ช… ์ •๋ณด๊ฐ€ ํ…์ŠคํŠธ๋‚˜ ์ด๋ฏธ์ง€๋กœ ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•˜์˜€์œผ๋ฉฐ, ์•ˆ์ „ํ•œ VSCode OAuth ์—ฐ๋™ ๋ฐฉ์‹์„ ์ฑ„ํƒํ•˜์—ฌ ๊ฐœ์ธ์ •๋ณด๋ฅผ ๋ณดํ˜ธํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์— ๋‚˜์˜ค๋Š” ๋ณธ์ธ์˜ ์‹ค์ œ ์ด๋ฉ”์ผ์€ ๊ฐœ์ธ์ •๋ณด์— ํ•ด๋‹นํ•˜์—ฌ ๋งˆ์Šคํ‚น ์ฒ˜๋ฆฌ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๊ธฐํƒ€๋งํฌ:
์›น์‚ฌ์ดํŠธ ํฌํŠธ๋งคํ•‘ ๊ฒ€์ฆ: https://ibb.co/bjwHrRJP
๊นƒํ—ˆ๋ธŒ ์—ฐ๋™๊ฒ€์ฆ(git push): https://ibb.co/bjwHrRJP
๊นƒํ—ˆ๋ธŒ ์—ฐ๋™(๋กœ๊ทธ์ธ): https://ibb.co/yFptmj1s

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages