안녕하세요 WH입니다.
나중에 블로그가 활성화되고 요청이 있다면
해당 부분을 자세히 다루겠지만, 그전까지는
기초부터 조금 다뤄볼까합니다.
오늘은 docker와 관련된 내용인데요.
docker가 무엇인가.. docker를 활용하려고 하는데 뭔가 이게
이런것 거두절미하고 쉽게 설명 드리겠습니다.
처음 docker를 접할 때 어려웠던 점은,
container가 무엇인지, 이미지가 무엇인지, 빌드가 뭔지
하나도 모르는 상황이었기 때문에 굉장히 큰 어려움을 겪었습니다.
인터넷을 찾아보는데, 찾아봐도 이게 뭔지
뭘 어떻게 해야되는 건지 모르겠더라구요ㅜㅜ
그래서 한마디로 정리해보겠습니다
개념적인 내용 다 빼고 그래서 도커가 무엇이냐
docker는 내 시스템에서 다른 시스템 환경과 해당 환경 내 소프트웨어를 활용할 수 있도록 해주는 프로그램
이게 무슨 뜻이냐면, 소프트웨어는 어디서나 돌아가는 것이 아닙니다. 해당 소프트웨어에 맞는 운영체제가 필요합니다. 실제 예로 들자면 ubuntu 16.04에서 빌드되는 특정 이미지는 20.04에서는 빌드되지 않습니다. 더 자세히 예를 들어보면 ubuntu 16.04 어떤 cross compiler는 20.04에서 실행되지 않습니다. ( 물론 아래서 예로 들어드린 crosscompiler는 아닙니다만 예시가 생각나질 않네요.. ㅎㅎ) 상황을 가정해봅시다. 현재 나는 16.04 용 cross compiler가 필요합니다. 그런데, 현재 내 컴퓨터는 ubuntu 20.04로 프로그램이 해당 crosscompiler를 사용할 수 없다고 가정해봅시다. 마침 누군가 필요한 crosscompiler용 dockerfile을 배포했고 제가 그 파일을 받았다면, 저는 제 컴퓨터에 crosscompiler를 설치하지 않더라도 해당 dockerfile을 빌드하고 run 해줌으로써 crosscompile을 할 수 있게 됩니다.
빌드는
dockerfile을 이미지로 만들어주는 역할을 하며
빌드된 이미지를 run하게 되면
특정 환경으로 들어가게 되는 데, 이 환경이 바로 컨테이너 입니다. 즉 외부 공간 ( 원래 내 환경 )과는 별개의 dockerfile이 설정한 환경 속에서 작업을 할 수 있게 되는 겁니다.
dockerfile은
쉽게 새로운 환경설정을 만들어 주는 겁니다.
마지막으로 정리하면서 간단한 예로 들어드린 crosscompiler용 dockfile을 만들어보고, 해당 dockerfile로 이미지를 빌드하여 컨테이너에서 실행해보도록 하겠습니다.
정리
1. dockfile 만들기 ( 필요한 환경설정 해주기 )
2. dockfile 빌드하기 ( 환경설정된 dockerfile이 실행될 수 있는 이미지 생성 )
3. run하여 해당 환경 활용하기
vscode 에서 docker와 docker 확장팩을 설치해주시고 파일 이름을 Dockerfile로 만들면
자동으로 Dockerfile이 만들어 집니다. Dockerfile은 확장자를 가지지 않기 때문에 에디터를 사용할때 Dockfile이라는 이름으로 만들어주시면 vscode에서는 바로 활용 가능합니다.
해당 파일 디렉토리는 ~/example에서 진행됩니다.
1. 우분투 16.04 crosscompiler 만들기
파일명 : Dockerfile
# 실행환경 우분투 16.04
FROM ubuntu:16.04
# gcc 설치
RUN apt-get install gcc-aarch64-linux-gnu
2. sudo docker build -t example_crosscompiler .
example_crosscompiler 라는 이름으로 이미지가 빌드됩니다.
3. sudo docker run -it -v ~/example/:/crosscompiler example_crosscompiler /bin/bash
컨테이너 내에 crosscompiler를 만들고 원래 시스템 환경속 ~/example 폴더와 마운트합니다.
이렇게 하면 ~/example 폴더에서 c 파일을 만들고 컨테이너 내에서 해당 파일을 버전에 맞게 크로스 컴파일 할 수있습니다.
가장 기본적인 활용방법을 다뤄보았는데요. 도움이 되셨길 바라며 이만 물러갑니다. 댓글은 큰 힘이 될거에요!
'임베디드 리눅스' 카테고리의 다른 글
MCU? MPU? CPU? 그게 뭔데 (0) | 2022.01.27 |
---|---|
make 는 무엇이며 왜 사용하는 것일까 2 (0) | 2022.01.26 |
make 는 무엇이며 왜 사용하는 것일까1 (0) | 2022.01.25 |
c언어 컴파일 과정 (0) | 2022.01.25 |
virtualbox 활용하여 환경 설정하기 (0) | 2022.01.25 |