Docker를 사용하기 위한 환경구성 전에 Red Hat Enterprise Linux for Real Time 8 환경구성을 먼저 선행한다.
https://namsaenga.tistory.com/38
Red Hat Enterprise Linux for Real Time 8 환경구성하기
1. Clock 확인 [root@localhost ~]# cat /etc/sysconfig/clock ZONE="Asia/Seoul" 2. Clock 설정 차례로 나오는 선택지에 번호 입력 후 Enter 첫 번째 선택지: 지역(Continent 또는 Ocean) 선택, 두 번..
namsaenga.tistory.com
[ Red Hat Universal Base Images for Docker users 설명]
- RHEL8부터 Docker 도구 세트에 대한 지원을 중단했지만, OCI(Open Container Initiative)에 의해 표준화 되었기 때문에 하나의 도구를 사용하여 컨테이너를 개발한 후에 다른 도구를 사용하여 동일한 컨테이너를 실행할 수 있다. 예를 들어, RHEL 8에서 Buildah를 사용하여 컨테이너 이미지를 빌드하면 Windows에서 Docker를 사용하여 해당 컨테이너 이미지를 실행할 수 있다.
- Red Hat UBI(Universal Base Image)를 사용하는데 서브스크립션에 대한 자격이 필요하지 않기 때문에, Red Hat 고객이 아니라도 해당 이미지를 실행할 수 있다.
- UBI는 애플리케이션 이미지를 빌드하기 위한 기본 컨테이너 이미지 세트를 제공하고, 이러한 이미지 중 일부에는 기본 운영체제만 포함되어 있다. 다른 것들은 사전에 통합된 종속성과 함께 런타임을 제공하는 런타임 이미지이다.
- 또한, UBI는 Red Hat Enterprise Linux 패키지의 하위 집합을 포함하는 Yum 레포지토리 세트를 제공한다. 모든 RHEL이 UBI 레포지토리의 일부는 아니다. 예를 들어, UBI에는 하위 수준의 네트워크 및 스토리지 서버와 관련된 패키지가 포함되지 않는다.
[ 설치방법 ]
1. rust 설치
- 아래의 사이트를 참고하여 rust를 설치한다.
https://www.rust-lang.org/tools/install
Install Rust
A language empowering everyone to build reliable and efficient software.
www.rust-lang.org
[namsaeng@localhost ~]$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
info: downloading installer
Welcome to Rust!
This will download and install the official compiler for the Rust
programming language, and its package manager, Cargo.
Rustup metadata and toolchains will be installed into the Rustup
home directory, located at:
/home/namsaeng/.rustup
This can be modified with the RUSTUP_HOME environment variable.
The Cargo home directory located at:
/home/namsaeng/.cargo
This can be modified with the CARGO_HOME environment variable.
The cargo, rustc, rustup and other commands will be added to
Cargo's bin directory, located at:
/home/namsaeng/.cargo/bin
This path will then be added to your PATH environment variable by
modifying the profile files located at:
/home/namsaeng/.profile
/home/namsaeng/.bash_profile
/home/namsaeng/.bashrc
You can uninstall at any time with rustup self uninstall and
these changes will be reverted.
Current installation options:
default host triple: x86_64-unknown-linux-gnu
default toolchain: stable (default)
profile: default
modify PATH variable: yes
1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>1
- 참고로 uninstall은 # yum remove rustc
2. docker install
[root@localhost ~]# yum install docker
서브스크립션 관리 레포지터리를 업데이트하고 있습니다.
Repository timescale_timescaledb is listed more than once in the configuration
마지막 메타자료 만료확인 0:01:02 이전인: 2022년 04월 11일 (월) 오전 10시 31분 24초.
종속성이 해결되었습니다.
================================================================================================================
꾸러미 구조 버전 레포지터리 크기
================================================================================================================
설치 중:
podman-docker noarch 1:3.4.2-9.module+el8.5.0+13852+150547f7 rhel-8-for-x86_64-appstream-rpms 59 k
연결 요약
================================================================================================================
설치 1 꾸러미
총계 내려받기 크기: 59 k
설치된 크기 : 230
진행 할 까요? [y/N]: y
3. docker로 개발하기 위하여 기본 컨테이너 이미지인 UBI를 테스트 해본다.
1) ubi 항목을 검색해본다.
[namsaeng@localhost ~]$ docker search registry.access.redhat.com/ubi
2) 여기서 우리는 rhel8을 이용할 것이기 때문에 ubi8를 테스트한다.
[namsaeng@localhost ~]$ docker run -it --name test registry.access.redhat.com/ubi8/ubi:8.1
3) 테스트 컨테이너에서 미리 구성된 yum 레포지토리를 확인한다.
[namsaeng@localhost ~]$ yum repolist
- UBI에서 Red Hat 서브스크립션을 등록해야만 사용할 수 있는 것들이 있는데, 배포할 때는 문제가 되지 않으며 나중에 이를 사용하는 곳에서 Red Hat 서브스크립션을 등록하고 유효한 권한이 필요한 rhel 패키지를 추가하여 사용할 수 있다.
- 또한, 개별 패키지 검색도 가능하다.
(e.g. yum search nginx)
4) 테스트를 완료하면 사용했던 테스트 컨테이너를 지운다. 그렇지 않으면 디스크 공간을 계속 차지하고 있다.
[root@cadd572d4aa7 /]# exit
exit
[namsaeng@localhost ~]$ docker stop test
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
test
[namsaeng@localhost ~]$ docker rm test
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
cadd572d4aa7574c6ae46bf2a7a35d29934891f2493813a2761866ba998f7279
Red Hat Universal Base Images for Docker users | Red Hat Developer
Learn how to use Red Hat Universal Base Images (UBIs) with Docker from a non-Red Hat system, such as a Windows or Mac workstation.
developers.redhat.com
4. Docker 컨테이너를 위한 파일 구성하기
- Docker 컨테이너를 만드는 Dockerfile과 관련 소스코드를 하나의 디렉터리안에 두어 관리하기 쉽도록 하였다.
- receiver1은 데이터를 수집하고 DB에 넣는 모듈이다.
1) Dockerfile
- 여기에서 FROM 명령문은 기본 바탕이 되는 UBI, ADD 명령문은 이미지의 파일 시스템으로 파일 또는 디렉터리를 복사하는 역할을 한다. COPY 명령문이 일반 파일을 복사하는 거와 달리 ADD 명령문은 압축 파일이나 네트워크 상의 파일도 복사할 수 있다. CMD 명령문은 쉘스크립트를 실행하는 역할을 한다.
FROM registry.access.redhat.com/ubi8/ubi:8.1
ADD . .
CMD ["./init_receiver1.sh"]
2) init_receiver1
#!/bin/sh
(./receiver1;)
3) receiver1
- receiver1.cpp로 부터 컴파일된 실행가능파일
5. Docker 컨테이너 실행하기
1) Docker 이미지 빌드
[namsaeng@localhost receiver1]$ docker build .
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
STEP 1/3: FROM registry.access.redhat.com/ubi8/ubi:8.1
STEP 2/3: ADD . .
--> 3711e942aa2
STEP 3/3: CMD ["./init_receiver1.sh"]
COMMIT
--> 2f21ea11290
2f21ea11290fad2aa6a2a1876c5a9eeca5964faf1c31788061670fc0c3eaed66
2) Docker 이미지 태그 설정
[namsaeng@localhost receiver1]$ docker tag 2f21ea11290 receiver1
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
3) Docker 컨테이너 실행하기
[namsaeng@localhost receiver1]$ docker run --net=host -d receiver1
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
1e410e4612d2de9373918daab15c688f144c2c556593ab6ff277065c57154dfe
4) Docker 컨테이너 확인하기
[namsaeng@localhost receiver1]$ docker ps
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1e410e4612d2 localhost/receiver1:latest ./init_receiver1.sh 32 seconds ago Up 32 seconds ago quirky_jemison
5) Docker 컨테이너 이름 변경하기
- 다음 명령어로 컨테이너 이름 설정한 후 실행 ( docker run --net=host -d --name receiver1_container receiver1)
- --net=host 옵션은 Docker 컨테이너 내부의 프로그램이 네트워크 관점에서 호스트 자체에서 실행중인 것처럼 보이게 하는 데 있다. 외부로 오픈하는 서비스인 경우에는 해당 옵션으로 쉽게 액세스 가능하도록 한다. 일일이 포트바인딩을 하려면 "-p [HostPort]:[ContainerPort]" 옵션을 사용한다.
- -d 옵션은 해당 Docker 컨테이너를 백그라운드로 실행하라는 의미이다.
[namsaeng@localhost receiver1]$ docker rename quirky_jemison receiver1_container
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
6) Docker 컨테이너 시작
[namsaeng@localhost receiver1]$ docker start receiver1_container
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
receiver1_container
- Docker 컨테이너 중지 (docker stop receiver1_container)
- Docker 컨테이너 삭제 (docker rm receiver1_container)
- Docker 이미지 삭제 (docker rmi -f receiver1)
'프로그래밍 > OS' 카테고리의 다른 글
RHEL 부팅 USB 만들기, 설치 및 USB 원상복구 방법 (0) | 2022.05.09 |
---|---|
서버 간 User Password 없이 SSH 접속 (0) | 2022.04.20 |
RHEL8 기본 튜닝 가이드 (0) | 2022.04.20 |
Red Hat Enterprise Linux for Real Time 8 환경구성하기 (0) | 2022.04.11 |
Windows NTP Server - Linux NTP Client 동기화 (0) | 2022.04.04 |
댓글