D+39-Docker.설치,이미지실행, 계정및그룹.생성,관리, 기본명령어., 디렉토리.구조,경로,만들기

Bku·2024년 2월 21일

학원 일기

목록 보기
37/67
post-thumbnail

Docker

운영체제는 컴퓨터당 하나만 실행이 가능하다. 그런데 우리는 윈도우를 사용하면서 리눅스를 사용하고 싶은데 이때 사용할수 있는 것이 docker이다. 가상화공간을 만들어서 거기서 리눅스를 실행할 수 있게 해준다.

설치

  1. windowspowershell관리자 권한으로 열기
  2. wsl --install 입력

    설치 완료시 해당화면이 뜬다
  3. 설치가 끝나고 wsl --set-default-version 2 명령어를 실행해, WSL 버전 기본값을 2로 변경
  4. 컴퓨터 재시작(리부팅) 후 관리자 모드 명령프롬프트 열기 후, wsl 명령어 실행
  5. Docker Desktop 설치
    https://myanjini.tistory.com/entry/%EC%9C%88%EB%8F%84%EC%9A%B0%EC%97%90-%EB%8F%84%EC%BB%A4-%EB%8D%B0%EC%8A%A4%ED%81%AC%ED%83%91-%EC%84%A4%EC%B9%98
    참고

이미지 다운받고 실행하기

이미지를 다운받으면 images탭에 다운로드 목록을 확인 할 수 있다.

이미지 실행 종료

  1. 입력하여 s/w실행
    명령어 : docker run -it --name ubuntu kangtaegyung/ubuntu-win
  2. docker 컨테이너 또는 리눅스 로그아웃(종료)
    명력어 : exit
  3. 다시 도커 컨테이너 실행
    사용법) docker start 이미지명(별명, 이미지id)
    명령어 : docker start ubuntu
  4. 다시 도커 컨테이너 접속
    사용법) docker attach 이미지명(별명, 이미지id)
    명령어 : docker attach ubuntu
  5. 도커 컨테이너 종료
    사용법) docker stop 이미지명(별명, 이미지id)
    명령어 : docker stop ubuntu

참고

  • 운영체제(OS) : Operation System, 컴퓨터를 관리하는 sw
    예) 사운드카드 설치, 마이크sw설치, 키보드/마우스 설치 등을 동작시키는 시스템
    -OS의 종류 :
    1. 윈도우(pc에서 주로 사용),
    2. 리눅스(원래는 pc용으로 개발 되었다가, 지금은 기업용으로 많이 사용),
    그래서 이걸 알아야 기업컴퓨터에 소스를 올릴수가 있다.
    3. 유닉스(기업용컴퓨터) 세개중에 하나를 사용한다.

계정 및 그룹

그룹 계정 만들기

리눅스/윈도우 OS : 1대 컴퓨터에 여러명이 접속해서 사용하는 프로그램 - 그래서 여러명의 사용자가 자시만의 계정을 만들 수 있다.

  • 계정 : 사용자를 의미
  • 계정관리 : 각 사용자별 작업 공간이 필요하므로 관리가 필요함
  • 그룹 : 계정을 목적별로 분류하는것 예) 개발자 그룹, 관리자 그룹

리눅스 명령어 체계

리눅스의 명령어는 "명령어 -옵션(생략가능) 매개변수(생략가능)"처럼 띄어쓰기를 기준으로 구성된다.

그룹 만들기

계정을 만들기 전에 편의상 그룹을 먼저 만들자
위와 같은 명령어를 입력해주면 된다. "groupadd 그룹이름"을 하면 그룹이름을 가진 그룹이 생성됨.

계정만들기

그룹안에 계정을 만들어보자

"useradd 유저명 -s 셀지정 -m -d 홈폴더 -g 그룹명"을 입력해주면된다.

  • -s : 셀환경 선택(리눅스의 테마 기능이다.), /bin/bash(배쉬 셀)
  • -m -d : 홈폴더(==디렉토리), 사용자별 작업공간폴더를 의미 홈폴더에 오라클폴더에 작업물을 저장
  • -g : 그룹지정
  • "root@345d3756f1ff:/#" = 계정명@컴퓨터명:/#
  • root계정 : 최고의 권한을 가진 관리자 계정으로 컴퓨터의 모든 작업을 할 수 있다. 얘로 계정을 만들 수 있다.

계정관리

그룹과 계정을 만들었으니 이것들을 관리해보자

계정 패스워드 설정

계정에 접근할때 필요한 암호를 설정해보자

암호를 설정할 때 암호를 입력하는데 이 때는 입력하는 암호가 눈에 보이지 않는다 하지만 입력은 되고있으니 놀라지 말자.

패스워드 설정에 접근하는 명령어는 다음과 같다.

  • 명령어 : "passwd 계정명"
root@2d5f598932bb:/# passwd oracle
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

패스워드는 두번 입력해야하며, 설정이 완료되면 "password updated successfully"라는 멘트가 뜬다.

root계정에서 oracle 계정으로 전환

관리자 계정이 아닌 작업계정으로 전환해보자.

  • 명령어 : "su -계정명"
root@2d5f598932bb:/# su - oracle
oracle@2d5f598932bb:~$

root 계정에서 oracle로 전환하는 것이기에 su -oracle을 입력주니 계정이 oracle로 바꼈다.

기본 명령어

리눅스 구조

  1. 커널 : 컴퓨터 하드웨어를(cpu, 키보드 등) 관리하는 프로그램
  2. 셀 : 윈도우의 바탕화면 테마와 같은 부류, 인기쉘은 bash 임
    • 종류 : bash 셀, born 셀, c 셀 등
  3. 터미널: 윈도우의 명령프롬프트와 같은 프로그램, 명령어를 실행하면 커널에서 설정/변경 등의 작업을 진행함

기본 명령어

현재 날짜보기

  • 명령어 : data
oracle@2d5f598932bb:~$ date
Wed Feb 21 02:29:59 UTC 2024

현재 날짜를 볼 수 있다.

화면에 문자열 출력하기

  • 명령어 : "echo 출력하고싶은 문자열"
oracle@2d5f598932bb:~$ echo Hello
Hello
oracle@2d5f598932bb:~$ echo Hello World
Hello World

원하는 문자열을 출력할 수 있다.

현재 사용하는 셀 보기 : bash

  • 명령어 : "echo $환경변수"

환경변수를 echo뒤에 넣어주면되는 이때 환경변수는 대문자이다.

 oracle@2d5f598932bb:~$ echo $SHELL
/bin/bash

현재 어떤 셀을 사용하는지 알 수있다.

프롬프트 : $, # 앞에 붙어 있는 표시

프롬프트 구조

계정명@컴퓨터명(ip주소):~$

oracle@2d5f598932bb:~$

최고 관리자 계정 root

root는 #프롬프트를 사용한다.

root@2d5f598932bb:/#

일반계정

$ 프롬프트 사용한다.

oracle@2d5f598932bb:~$

계정전환

전에 root에서 작업계정으로 전환하는 것은 su명령어를 사용한다고 했다.
그럼 작업계정에서 root로 전환은 어떻게 할까?

  • 명령어 : exit
oracle@2d5f598932bb:~$ exit
logout
root@2d5f598932bb:/# su - oracle
oracle@2d5f598932bb:~$

exit로 계정이 root로 바뀌는 것을 볼 수 있다.

키보드 입력이 안될때

ctrl + S를 하면 화면 표시 잠김이 된다. 이때는 입력을 해도 화면에는 입력이 안 되는 것처럼 보이지만 실제로는 입력이 되고 있다.
이 때는 ctrl + Q를 하면 잠김이 해제가 된다.

실행한 명령어가 종료되지 않아 계속실행될 경우

"ping 사이트 주소"를 입력하면 사이트가 실행중이라면 계속해서 코드가 입력된다. 이때 이것을 끝내게 해야할때 사용하는 코드가 ctrl + C

로그아웃, 프로그램 종료

exit를 하면 작업계정에서 로그아웃하여 관리자 계정으로 넘어간다고 했다. 이때 한번더 exit를 하면 프로그램이 종료된다.

명령어 자동완성

명령어의 일부 문자만 치고 tab을 누르면 일부 문자로 시작하는 명려어가 자동완성된다. 단 이때는 일부문자로 시작하는 명령어가 하나만 있을때이고, 2개 이상이면 tab을 한번 더 눌러 일부문자로 시작하는 명령어의 리스트를 보여준다.

명령어 이력 보기

↑를 누르면 이전에 사용했던 명령어를 확인 할 수있다. 다시 돌아올려면 ↓를 누르면 된다.

명령어 검색

ctrl + R을 누르면 이전에 사용했던 검색을 할 수 있다.

(failed reverse-i-search)`eco': echo $SHELL

프롬프트 모양이 바뀌고 ''안에 단어가 입력된다. ''안의 단어와 같은 단어가 검색된다. enter을 입력하면 그 명령어를 가져올 수 있다.

디렉토리

윈도우는 프린터, 디스크 등은 일부 작은 프로그램으로 되어있고, 리눅스는 이런 것들이 모두 파일로 관리된다.

디렉토리 구조

디렉토리 표현

  • 리눅스에선 "/"를 이용해서 디렉토리를 표시한다.(윈도우는 "\"로 한다.)
    예) /home/oracle
  • 리눅스의 최상이 경로는 "/"이고, root경로라고 한다.
  • 리눅스를 설치하면 시스템폴더(관리 폴더)가 있는데 이건 건들이지 않는 것이 좋다.
    1) /bin : 주요 명령어들이 있는 폴더
    2) /etc : 계정, 그룹, 패스워드 등의 환경설정 파일이 있는 폴더
    3) /home : 계정별로 할당되는 작업폴더
    4) /sbin : 슈퍼관리자(root)가 사용하는 명령어들이 있다.
    5) (컴퓨터 끄기, 켜기 등)
    6) /tmp : 임시파일이 잠시 머무르는 폴더
    7) /usr : 설치된 프로그램이 있는 폴더
    8) /var : 로그(접속, 시스템감시 등)가 있는 폴더

디렉토리 경로

현재 경로 확인

현재 자신이 어디에 있는지를 확인할 수 있는 코드이다.

  • 명령어 : pwd
oracle@2d5f598932bb:~$ pwd
/home/oracle

절대 경로 상대 경로

  • 절대경로 : /(슬래쉬) => 루트(root)경로(최상위경로)
    예) /home/oracle, /home 등
  • 상대경로 : 현재 자신의 위치를 기준으로 경로 설정
    예) ./ : 현재 폴더 위치
    예) ../usr : 상위 경로(폴더)이동해서 usr 들어가기

디렉토리 이동(접근)

원하는 디렉토리로 이동하는 명령어이다

  • 명령어 : cd /접근할 파일
oracle@2d5f598932bb:~$ cd /usr
oracle@2d5f598932bb:/usr$ pwd
/usr

현재 디렉토리의 파일/폴더 출력

현재 디렉토리에 있는 파일과 폴더를 볼 수 있는 방법이 여럿 있다. 간단하게 보거나, 자세히 보거나 등으로 말이다.
일단 기본적으로 보는 명령어는 다음과 같다.

  • 명령어 : ls
  1. -l : 자세하게 보기(권한, 사이즈 등)
  2. -F : 폴더에 "/"붙여서 출력하기(파일임을 구별 가능하다.)
  3. -a : 숨긴 파일까지 모두보기(".숨긴파일")
    이렇게 하나만 사용도 가능 하지만 다음과 같이 여러가지를 섞어서 사용도 가능하다.
 oracle@2d5f598932bb:/usr$ ls -lF
    total 40
    drwxr-xr-x 1 root root 4096 Feb 20 21:01 bin/
    drwxr-xr-x 2 root root 4096 Apr 24  2018 games/
    drwxr-xr-x 1 root root 4096 Feb 20 20:43 include/
    drwxr-xr-x 1 root root 4096 Feb 20 21:01 lib/
    drwxr-xr-x 1 root root 4096 May 30  2023 local/
    drwxr-xr-x 1 root root 4096 Feb 20 21:01 sbin/
    drwxr-xr-x 1 root root 4096 Feb 20 21:01 share/
    drwxr-xr-x 2 root root 4096 Apr 24  2018 src/
    oracle@2d5f598932bb:/usr$

자세하게(l) 디렉토리에 "/"를 붙여서(F) 파일임을 알수 있다.

어쨌든 파일을 확인 하려면 ls를 사용해야한다.

현재 디렉토리가 아닌 다른 디렉토리의 폴더/파일 보기

현재 경로의 디렉토리는 ls로 확인했다. 그럼 현재경로에서 다른 경로의 파일을 보고싶다면 어떻게 해야할까.

  • 명령어 : "ls /확인할 파일명"
    위 명령어를 입력하면 확인 가능하다.
oracle@2d5f598932bb:~$ ls /usr
bin  games  include  lib  local  sbin  share  src

지금 경로는 usl이 아니지만 usl의 경로에 어떤 파일이 있는지를 확인이 가능하다.

경로 자동완성

명령어를 tab키로 자동완성 하는 방법을 알아보았다. 그럼 경로는 어떻게 될까? 디렉토리의 자동완성도 같은 tab으로 자동완성을 할 수있다.

홈 폴더로 이동하기

홈 폴더 즉 작업 폴더(계정폴더)로 한번에 이동하는 명령어가 있다.

  • 명령어 : cd ~
oracle@2d5f598932bb:/usr/lib$ cd ~
oracle@2d5f598932bb:~$ pwd
/home/oracle
oracle@2d5f598932bb:~$

계정 폴더인 oracle로 이동한 것을 확인 할 수 있다.

이전 경로 이동하기

현재경로로 이동하기 전 경로 이동 할 수 있는 명령어가 있다. 약간 뒤로가기 같은 명령어다.

  • 명령어 : cd -
 oracle@2d5f598932bb:~$ pwd
/home/oracle
oracle@2d5f598932bb:~$ cd -
/usr/lib
oracle@2d5f598932bb:/usr/lib$ pwd
/usr/lib

이전 경로인 lib경로로 이동했다.

틸트확장

report폴더에 접근을 하려면 /home/report를 해주어야한다. 근데 /home은 ~와 같기때문에 ~/report를 해주어도 된다.

현재 경로에서 상위 경로로 이동하기


현재 oracle폴더에서 상위 경로인 home으로 이동하려고 할때 "cd .."을 해주면 바로 이동한다.

  • 명령어 : cd ..

특정문자로 시작하는 폴더

해당 경로에서 b로 시작하는 폴더를 찾는 코드이다. ls로 폴더 목록을 나오게 할 수 있고 b*를 해서 b로 시작하는 파일과 폴더를 화면에 출력할 수 있다.

만약 b뒤의 문자가 5자리로 이루어진 파일만 확인하고 싶다면 ?를 이용하면된다. *와의 차이는 ?는 꼭 자릿수를 맞추어주어야한다.

목록 상세보기

  • d(directory) : 디렉토리(폴더)
  • -: 파일
  • l(link) : 심볼릭링크(윈도우의 바탕화면 바로가기 아이콘)원본은 다른 파일에 있지만 바탕화면에서 편하게 그 경로에 있는 원본을 찾아 실행해주는 링크

    "drwxr-xr-x" 에서
    d = 파일(형태를 알려줌)
    r = (read)읽기권한
    w = (write)쓰기권한
    x = (excute) 실행권한
    을 뜻한다.

첫 rwx는 만든사람의 권한,
그다음 r-x는 그룹의 권한,
마지막r-x는 다른 사람의 권한이다.

항상 9자리이며 각 rwx자리에서 -이면 권한이 없는것이다.

즉 여기서는 만든사람은 모든권한이 있고, 그룹과 다른 사람들은 쓰기 권한이 없고 읽고 실행만할 수 있다.


또여기서 2는 심볼릭 링크 수
oracle은 만든 사람
dba는 만든 사람의 그룹명
4096은 폴더에서 기본으로 제공하는 용량(4kb)
나머지는 파일 생성일자이다.

디렉토리 만들기

  • 명령어 : "mkdir 파일명"
    현재 파일에서 파일을 만들 때 사용할 수 있다.
    work파일을 만들었다.

자식 폴더까지 한번에 만들기

-p뒤에 만들고 싶은 하위경로를 "/"를 이용해 적어주면 된다. 굳이 해당폴더 들어가서 하나 만들고 또 들어가서 하나 만들고 안 해도 됨

  • 명령어 : "-p 만들고 싶은 디렉토리"

    접근이 잘 된다.

빈 디렉토리 삭제

빈 폴더를 삭제하는 명령어가 있다. 혹시라도 다른 내용이 들어있으면 삭제되지 않음

또한 삭제를 하려면 해당 폴더가 있는 디렉토리로 가야한다.
2021폴더에서 05파일을 삭제해보자.

  • 명령어 : "rmdir 삭제할 디렉토리명"

빈 파일 만들고 삭제하기

빈 파일 만들기

지금까지 디렉토리를 만들었다. 이번엔 파일을 만들어보자.work디렉토리에서 새로운 "newfile"이라는 빈 파일을 만들었다.
한번에 여러개도 만들 수 있다.

  • 명령어 : "touch 만들고 싶은 파일명"

ls를 하면 폴더는 파란색이고 파일은 하얀색이다.

빈 파일 삭제하기


빈 파일을 다 삭제 했다.

  • 명령어 : "rm 삭제할 파일명"

파일 내용 모니터에 출력

파일 내용이 적을때

etc파일에서 host로 시작하는 파일중 hostname의 내용을 확인했다. hostname파일에는 주인의 컴퓨터 명이 저장되어있다.

  • 명령어 : "cat 화면에 출력할 파일명"

파일 내용이 많을때

파일내용이 많아 페이지 별로 내용을 보고싶을때 이 기능을 사용할 수 있다.

  • 명령어 : less

    .bashrc의 내용이다. 다음과 같은 조작 방법으로 조작이 가능하다.

페이지 조작 방법

  • 스페이스바 :
  • b 키 :
  • q 키 :
  • / 찾을 단어 : 아래페이지로 검색
  • ? 찾을 단어: 위 페이지로 검색

파일 복사하기

현재 디렉토리에 복사하기


work에서 newfile이라는 파일을 만들고 newfile을 복사해서 newfile2라는 파일을 만들었다.

  • 명령어 : "cp 복사대상파일명 복사될파일명"

여기서 cp는 copy의 약자이다.

다른 디렉토리 안에 복사하기

현재 디렉토리에 있는 파일을 다른 디렉토리에 복사하고 싶은 경우가 있다. 이 때 다음과 같은 명령어를 사용하면된다.

  • 명령어 : "cp 복사할파일 복사파일을가질디렉토리"
oracle@345d3756f1ff:~/work$ ls
2021  dir1  newfile  newfile2  newfile3  newfile4
oracle@345d3756f1ff:~/work$ cp newfile dir1

newfile을 dir1디렉토리에 복사했다

파일 이름변경/ 디렉토리 이동

이름 변경

파일 이름을 바꾸는 명령어와 디렉토리를 이동하는 명령어는 같지만 "mv 파일명" 뒤에 오는 것이 서로 다르다. 이름 변경의 경우 명령어는 다음과 같다.

  • 명령어 : "mv 변경전파일명 변경후파일명"
oracle@345d3756f1ff:~/work$ ls
2021  dir1  newfile  newfile2  newfile3  newfile4
oracle@345d3756f1ff:~/work$ cp newfile dir1
oracle@345d3756f1ff:~/work$ mv newfile file1
oracle@345d3756f1ff:~/work$ ls
2021  dir1  file1  newfile2  newfile3  newfile4

newfile1이 file1으로 바뀐것을 볼 수있다.

디렉토리 이동

"mv 파일명" 뒤에 파일명을 입력하면 이름이 바뀐다. 그럼 디렉토리명을 입력하면 어떻게 될까?

  • 명령어 : "mv 이동할파일명 이동할디렉토리명"
oracle@345d3756f1ff:~/work$ mv file1 2021
oracle@345d3756f1ff:~/work$ cd 2021
oracle@345d3756f1ff:~/work/2021$ ls
05  file1

file1이 2021디렉토리로 이동한 것을 볼 수 있다.

"mv 파일명"뒤에 파일명을 입력하면 이름이 바뀌고, 디렉토리를 입력하면 그 디렉토리로 이동하게된다.

단, 현재 디렉토리에 존재하는 디렉토리 내에서만 가능하다.(아니면 파일 이름이 바뀜) 다른 디렉토리로 이동하고싶으면 상대경로나 절대경로를 적어줘야한다.

profile
기억보단 기록

0개의 댓글