공부/Docker
[Docker] 이미지 빌드 플랫폼 호환성 관련 에러 - The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64/v3) and no specific platform was requested
docker run 을 했을 때 다음과 같은 호환성 에러가 나오고 도커 이미지가 빌드되지 않았다. WARNING: The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64/v3) and no specific platform was requested 현재 사용하고 있는 맥북은 Apple M1칩인데 이미지 빌드시 ec2서버와 m1 맥북간의 호환성이 안맞는 문제였다. 이미지 빌드할 때 플랫폼에 대해 작성하고 빌드하고 도커를 다시 run 해준다. docker build --platform linux/amd64 -t test:latest
Docker를 사용해 mysql 설치하고 원격접속하기
docker 컨테이너 생성하기 docker run -it -d --name mysql -e MYSQL_ROOT_PASSWORD={비밀번호 입력} -p 3306:3306 mysql:{tags} docker 리스트 출력해서 Mysql 설치 되었는지 확인하기 docker 컨텍스트 안에 접속 docker exec -it mysql bash 원격 접속 허용하기 grant all privileges on *.* to 'root'@'%'; root 에 다른 user 이름을 넣고 허용해도 된다. DBeaver 로 접속하기 DBeaver로 데이터베이스 연결할 때 Driver properties에서 다음 옵션의 내용을 변경해주어야 한다. autoReconnect=true useSSL=false allowPublicKeyR..
[Docker] Docker 사용해서 Jenkins 젠킨스 설치하기
Jenkins 젠킨스 설치하기 도커는 설치되어 있다고 가정하고 진행한다. 도커설치 명령어다. 8080 포트는 사용중이여서 18080으로 사용했다. 참고로 jenkins 공식 docker이미지를 사용하면 기본 설정이 대한민국이 아니다. docker run -itd --name jenkins -p 18080:8080 jenkins/jenkins:lts 도커로 젠킨스를 만들면 다음 url : http://localhost:18080/ 로 접속할 수 있다. 초기 비밀번호는 다음 경로에서 확인할 수 있다. docker exec -it jenkins bash cat /var/jenkins_home/secrets/initialAdminPassword 직접 접속하지 않고 아래 내용처럼 확인할 수 있다. docker e..
Docker compose로 Kafka 설치하고 사용해보기
Docker 를 이용해 kafka를 구동할 수 있다. 나는 docker-compose를 이용해 kafka single broker 설치 방법에 대해 정리하고자 한다. 사전 준비 나는 Mac에서 Docker Desktop을 설치해서 수행했다. docker-compose 설치 후 버전을 확인한다. docker-compose 버전이 2 이상이여야 한다. docker-compose --version Docker compose 설정파일 작성하기 docker compose를 이용하기 위해선 docker-compose.yml 이 있어야 한다. 서비스를 구성하는 설정파일을 작성해야하며 docker-compose.yml 파일에는 다음과 같이 작성한다. version: '2' services: zookeeper: imag..
[Docker error] docker-compose up error - ERROR: Version in "./docker-compose.yml" is invalid.
docker-compose.yml 파일을 작성해서 사용하려고 하니 다음과 같은 에러가 나오면서 사용이 되지않았다. docker-compose up error - ERROR: Version in "./docker-compose.yml" is invalid. 도커에 이상이 있는지 버전을 확인해 보았는데 docker compose 가 unknown 으로 실행되고 있지 않은 것 같았다. $ docker-compose --version 아래 링크를 참고해서 docker compose를 다시 설치해 주었다. https://bsssss.tistory.com/986
docker-compose 설치하기
docker compose가 설치되어 있는줄 알았는데 명령어가 실행이 안되어서 다시 설치를 진행했다. docker compose 버전을 확인하는데 build값이 없다고 나왔다. docker-compose --version docker compose 다운받기 sudo curl -L "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 권한 변경하기 chmod +x /usr/local/bin/docker-compose 심볼릭 링크 설정하기 ln -s /usr/local/bin/docker-compose /usr/bin/dock..
docker: Error response from daemon: exec: "nvidia-container-runtime-hook": executable file not found in $PATH.
컨테이너 생성시 gpu 를 설정한 명령어를 사용하면 다음과 같은 에러가 나왔다. 다음 패키지를 설치해서 docker 자체 명령어를 사용해 nvidia-gpu를 컨테이너에서 사용할 수 있도록 지원하는 것으로 보인다. 아래 명령어로 nvidia-container-runtime 을 설치해주면 된다. apt-get install nvidia-container-runtime nvidia-smi 로 gpu 확인하고 gpu 를 할당해주면 에러가 생기지 않는것을 확인할 수 있다. docker run -it --rm --gpus '"device=0,2"' ubuntu nvidia-smi https://docs.docker.com/config/containers/resource_constraints/#gpu
Docker 로 Redis 설치하기
Redis 는 키-값 구조로 비정형 데이터를 저장하고 관리하는 오픈 소스 기반의 비관계형 데이터베이스이다. 데이터베이스, 캐시, 메세지 브로커로 사용되며 인메모리 데이터 구조를 가진 저장소이다. redis 는 redis-cli 도 같이 구동해서 통신을 해야하기 때문에 2개의 컨테이너를 실행시켜야 한다. redis 전용 네트워크를 설정한다. docker network create redis-network 네트워크 추가 후 확인해본다. docker network ls /home/local/floder 부분에 본인이 볼륨을 지정하고자 하는 폴더 위치를 지정해주면 된다. docker run -itd --name redis-server \ -p 6379:6379 --network redis-network \ -v..
도커에 mongodb 설치 및 DB 생성하기
도커 내에 몽고디비의 위치는 /data/db 를 사용하면된다. docker run -itd --name mongodb -v /home/mongo:/data/db -p 27017:27017 mongo 설치한 몽고디비 안으로 접속한다. docker exec -it mongodb bash mongoDB 데몬의 약자로 Server 를 활성화 시킨다 mongod Client 신분으로 MongoDB에 접속한다. mongo 사용중인 데이터 베이스를 확인할 수 있다. db 데이터 베이스를 새로 만든다. dbname 에는 사용하고싶은 이름을 적으면 된다. use dbname 현재 만들어진 데이터베이스를 확인할 수 있다. show dbs
도커 레지스트리에 이미지 올리기 - docker push denied: requested access to the resource is denied
Docker registry 를 만들고 그 안에 이미지를 올리려고 했다. registry 에 로그인 후 이미지를 빌드한 다음 push했는데 다음과 같은 권한 오류로 이미지 push가 되지 않았다. docker login -u 아이디 -p 패스워드 localhost:5000 docker build --tag $IMAGE_NAME . docker push $IMAGE_NAME docker push denied: requested access to the resource is denied 계정과 연결하려면 이미지 이름에 docker hub 의 네임스페이스를 포함해서 올려야 한다. [dockerhub 계정]/[도커이미지]:[태그] docker commit [도커 컨테이너이름] [도커레지스트리]/[이미지이름]:v..