본문 바로가기
Linux

[Linux]Ubuntu 설치 (Docker 컨테이너) 및 테스트(Ubuntu 초기 설정 Shell Script 제공)

by lucas_owner 2023. 8. 12.

 
 

Docker 컨테이너를 통한 Ubuntu 설치 및 테스트

 

○서론

- 개발을 하다보면 Linux 환경에서의 작업을 해야할 경우가 생긴다 (혹은 테스트), 그럴 경우 공부 목적이나, 테스트 목적으로 
리눅스 환경을 구성하여, 진행 하는 경우가 생기게 되는데 docker 를 사용하기 이전에는 
VMware(유료), VirtualBox(무료) 와 같은 가상화 소프트웨어를 사용했었다. 
 
필자가 사용했던 Virtual Box를 예를 들자면, 설정 -> 설치 -> 실행 까지 시간이 꽤 오래 걸림, 설치 및 설정을 위해 신경써야할 것 많음. 
위와 같은 이유로 매번 새로운 가상환경 설정을 하기가 여간 귀찮은 작업이라고 생각되었다. (시간적 소요 + 파일 크랙으로인한 실행 불가 등등)
 
최근에 Linux 환경에서 테스트 할 일이 생겨, 또 Virtual Box 를 작업해야 하나? 간단하게 구성 할 수 있는 방법을 생각해보니
docker를 활용하면 virtual box 보다는 가볍고 빠르게 할 수 있을거라는 생각에 설정에 대해 기록을 남긴다. 
 
* 실제로 설치 및 접속까지는 굉장히 간단하다. 이 글에서는 설치 ->  간단한 프로그램 설치 ->(로컬PC <-> 컨테이너 우분투 사이의 파일 전송) 순서로 진행 할 예정이다. 
 

* 프로그램 설치가 내용에 들어가 있지만, 2023.08.13 추가) 기본적인 Ubuntu 패키지 설치 & 설정 Shell script 추가.
 

목차

1.  환경

1. Docker(Desktop) : 20.10.8v
2. Mac OS Monterey
3. 터미널 iterm2 -> bin/sh
4. ubuntu : latest
 
설치에 앞서 Docker 혹은 Docker DeskTop 을 설치가 되어있어야 한다. 
Docker Desktop 의 경우 UI 로 편하게 작업 할 수 있게 하는 Tool 이다. 
 
 

2. Docker 이미지 다운로드 및 실행

 

2-1. docker Image 다운로드 

# 예시
$docker run -i -t --name [컨테이너명] ubuntu:[version] [실행할 기본 쉘]

#실 사용 커맨드
$docker run -i -t --name first-ubuntu ubuntu /bin/bash

옵션 참고: (-i: interactive / -t: Pseudo-tty)
 
- --name 의 경우 이름을 지정해주는 부분이다. 추후 컨테이너의 실행,정지를  편하게 하기위해 지정하는걸 추천한다. 
- ubuntu:[version] 버전을 지정하여 다운로드 하는 옵션이다, 지정하지 않을시 ubuntu의 최신 버전으로 지정된다 (latest)
- 실행할 기본 쉘의 경우 /bin/bash, /bin/sh 2가지를 선택할 수 있다. 

Terminal
docker desktop


2-2. Ubuntu 실행

 
기본적으로 위의 명령어를 실행한다면, 자동으로 이미지 다운 -> 설치 -> 실행 이 이루어지지만,  실행이 되지 않는다면 아래의 명령어를 통해 접속 하도록 하자. 

# 1.docker Ubuntu 이미지 실행 
#docker start [컨테이너명]
$docker start first-ubuntu

# 2.Ubuntu 컨테이너 접속 
#docker exec -it [컨테이너명] [실행 할 쉘] 

$docker exec -it first-ubuntu /bin/bash

3. 간단한 프로그램 설치 및 테스트

 

3-1. vim 설치

파일이나, 문서 편집을 더욱 쉽게 해주는 Tool 인 VIM 을 설치 해볼것이다. 

# 1
$apt-get update

# 2
$apt-get install vim

# 3 -2번이 안될경우 -> 관리자 계정 (root)
$su

# 4 혹은 
$apt-get -y install sudo 

$sudo apt-get install vim

apt-get 의 경우 Ubuntu, Devian 계열  Linux 에서 쓰이는 패키지 관련 도구이다. 
 
- 이미 접속한다면 root 계정으로 진행하기 때문에 -> 3,4 번은 진행하지 않아도 된다. 


3-2. local <-> Ubuntu(Container) 간 파일 전송

 
실제 운영 리눅스 사용에서도 파일을 보내고, 가져오는 일이 종종있는데 이럴경우 docker 컨테이너에서 실행중인 Ubuntu 에서는 어떻게 
전송하는지 알아보자. 
 
우선 /root 디렉토리에 이동 하여 test.txt 파일을 생성하자. (이전에 설치한 vim 활용)

# /root dir 이동
$cd /root

# vim 사용 파일생성 
$vim test.txt 

#이후 i -> 작성 후 esc :wq

파일 이동

 
잠시 해당 파일은 놔두고 아래의 명령을 사용하여 파일 이동을 테스트 해보자.

#컨테이너(Ubuntu) -> 호스트(로컬PC)
$docker cp first-ubuntu:/root/test.txt ~/Users/Desktop

#호스트(PC) -> 컨테이너(Ubuntu)
$docker cp ~/Users/Desktop/logback.xml first-ubuntu:/root

작업이 성공한다면, Ubuntu /root 디렉토리 내부에 로컬PC 에서 전송한 logback.xml 파일이 존재하고, 
로컬 PC 의 Desktop 에도 test.txt 파일이 생기게 된다. 
 
cp 명령어? cp 명령어는 Copy 명령어로 파일을 복사한다는 의미의 명령어이다. 


3-3. 유저 생성 및 특정 계정으로 접속

 

보통 Linux 를 사용하다 보면, 보안이나 여러가지 제약사항으로 인해 root 계정으로 바로 접근을 하지는 않는다. 

그에 따라 계정을 만들고, 컨테이너에 특정 계정으로 접속해보자. 

 

3-3-1. 유저 추가하기

#sudo adduser [user name]

$sudo adduser tomcat

 

만약 sudo 를 사용할때 패스워드를 요구한다면,  root 계정의 패스워드를 먼저 생성해주자.

# root 계정 패스워드 생성

$sudo passwd root

- 이후 3-4-1 항목을 다시 실행. 

- 유저 생성시 추가적인 개인정보를 입력해야 하는데, 필요없다면 'enter' 키로 패스해도 된다.

 

3-3-2. 생성한 user 확인 

# 전체 목록 확인
$cat /etc/passwd

# 아이디만 확인
$cat -f1 -d: /etc/passwd

# useradd 명령어를 통해 생성된 계정 목록
$grep /bin/bash /etc/passwd 

# useradd 명령어를 통해 생성된 계정중 아이디만 출력
$grep /bin/bash /etc/passwd | cut -f1 -d:

 

3-3-3. 생성한 user 에게 sudo 그룹을 추가

#sudo usermod -aG sudo [username]

$sudo usermod -aG sudo tomcat

- 새로 생성한 계정에서 'sudo' 명령어 사용시, 오류가 발생하는 경우 설정. 혹은 계정에서 sudo 권한을 사용하고 싶을때

sudo 그룹을 추가해주는것이다. 

 

 

3-3-4. Docker exec 명령어를 통해 특정 계정으로 접속하는 방법

#docker exec -it -u [username] [컨테이너명] [쉘선택]

$docker exec -it -u tomcat first-ubuntu /bin/bash

- 해당 커맨드를 통해 Docker에 띄워진 Ubuntu에도 특정계정으로 진입할 수 있다. 


간단하게 Linux (Ubuntu) 설치 및 테스트를 진행해 보았다. 
이제 계정 설정이라던지, 리눅스 기반에서 할 수있는 공부를 편하게 해보자. (꼬여서 초기화를 해야할 상황도 문제 없다! 다시 설치하면 되니깐.)

 

* docker 를 통해 Ubuntu 를 설치&실행 하게 된다면, 주요 명령어들이 동작 하지 않을수가 있다 (설치가 안된것), 그럴땐 명령어 관련 패키지를 설치해주면 된다.

- netstat, curl, ipconfig 등등


2023.08.13 추가 

 

- 아래의 shell script 파일을 Ubuntu 내부에서 실행시킨다면 초기에 필수적으로 필요한 패키지를 다운로드, 설정해준다. 

(수정, 공유, 모든것은 자유! 출처만 남겨서 공유해주시면 감사하겠습니다.)

 

설치 & 설정 리스트 

# - apt update
# - sudo
# - kor-utf8
# - curl
# - net-tools
# - vim 설치, setting (.vimrc)
# - git (name, email)

ubuntu-setting.sh
0.00MB


도커 컨테이너에 대한 명령어는 아래 링크에서 확인이 가능하다.

https://lucas-owner.tistory.com/51

 

[Docker] Docker Command(명령어) 정리(+옵션)

Docker 자주 사용하는 명령어 정리 - Docker 에서 자주 사용하는 명령어 및 옵션들을 정리해보자. 1. Docker System 정보 docker version : Docker 버전 및 상세정보 확인 docker -v : Docker 버전 및 빌드 버전을 한줄

lucas-owner.tistory.com

 

반응형

댓글