IT/Docker

[Docker] 도커 입문 명령어 정리 (설치이후)

월공 2020. 9. 11. 11:28
728x90
300x250

환경 - Linux , Centos7, Centos8 (서버 두대)

 

결론은 Centos8 에서 도커 삽질했던건 결국 아직도 안되고있는 상태이고

Centos7 에서는 지금 잘 작동중, 안까먹으려고 명령어 및 기타사항 메모해두는 포스팅

 

우선 도커 설치는 내 티스토리 말고도 여기저기 너무나도 잘 설명이 나와있으니 패스

 

#도커 버전 확인

docker version

 

#Dockerhub (도커 이미지 저장소) 에서 이미지검색

docker search centos7

#Dockerhub (도커 이미지 저장소) 에서 이미지검색한것중에 마음에 드는 이미지 끌어당겨서 가져오기

docker pull docker.io/ansible/centos7-ansible

 

#현재 갖고있는 도커의 이미지들 확인 // 방금 받은 centos7 ansible  이 있는걸 확인할수 있다

docker images


#이미지를 컨테이너로 만들기

docker run -it -d --name centos_test docker.io/ansible/centos7-ansible /bin/bash


Run 의 옵션들 ..

-d  : detached mode 백그라운드 에서도 실행

-p  : 로컬(호스트)와 컨테이너의 포트연결 (포트포워딩)

-v  : 로컬(호스트)와 컨테이너 디렉토리 연결(마운트)

-e  : 컨테이너 내부에서 사용할 환경변수 설정

--name : 컨테이너 이름 설정 ( 위같은경우엔 centos_test 라고 이름을 지어주었죠)

--it : -i , -t 합쳐짐 // 이거 안치면 제대로 터미널창에서 작업 못함, 할순있는데 매우 한정적, 이상하게 보임

--rm  : 프로세스 종료시 컨테이너 자동으로 제거

--link : 컨테이너명 별칭


#현재 컨테이너 현황들 확인

(ansible 어쩌고가 두개있는건 포스팅하면서 명령어 잘못 입력해서 삽질함, 원래는 하나만 보여야됨)

docker ps -a

 

#컨테이너 잘못만든거 삭제하기 , docker 가 켜잇으면 stop 을 해줘야함 , start 되어있는 상태에서 안지워짐, 어차피 꺼져있는데 그냥 기록차 같이 남겨둠

 

docker stop 컨테이너ID && docker rm 컨테이너ID

#도커 컨테이너 전부 삭제 *주의요함

docker rm -f $(docker ps -qa)

 

#도커 이미지 전부 삭제 *주의요함

docker rmi $(docker images -q)

#도커 컨테이너 진입하기

docker start 6c2b30c2923d (도커를 켜준다 STATUS 에서 Up 으로 되어있어야함, 그래야 컨테이너 접속가능 )

docker exec -it 6c2b30c2923d /bin/bash (도커 컨테이너 진입하는 명령어, -it 옵션은 컨테이너의 표준 입력, 로컬 키보드 입력을 연결

 

docker start 6c2b30c2923d && docker exec -it 6c2b30c2923d /bin/bash

[root@6c2b30c2923d ansible] 이라고 터미널이 변경된것을 알수있다, 이것이 컨테이너에 들어왔다는 뜻

시험 삼아 ll 을 쳐보고 센토스 버전 확인 명령어도 쳐보았다

rpm --query centos-release. 

위와 같이 센토스 7 버전대를 잘 가져온걸 알수있다.

 

사실 도커 이미지 당겨와서 컨테이너 만들고, 컨테이너 진입하기까지는 그리 어렵지 않다

내가 어제 봉착한 문제는 컨테이너까지 잘 만들어졌는데, 호스트 firewalld 방화벽과 충돌이 일어나서 컨테이너 내부에서 인터넷 연결이 안되는 문제도 있었고, 인터넷 연결이 안되니 yum 이 안먹는건 당연했으며,

D-Bus Connection 어쩌고하면서 systemctl 명령어가 안먹는 문제도 있엇고,

 

진짜 별의별 똥꼬갈라쇼를 한거같다

 

우선 첫번째 인터넷 연결 안되었던 부분의 호스트환경은 센토스8 이었으며

호스트 방화벽을 올 스탑시키고 disable 시켜서 서버를 한번 reboot 진행하고나서 컨테이너에서 인터넷 연결이 잘되던걸 확인했다. (ping google.com) 때려보면 쉽게 알수있다

근데 이게 실서버라서 이런식으로 작업하기엔 무리가 있다고 판단이 들어 현재 테스트 서버인 센토스7 에서 작업을 하는중이다.

 

그리고 systemctl 이 안먹는 부분은 권한 어쩌고의 문제라서 이미지화 시키기 이전에 Dockerfile 에서

아래와 같이 추가를 해줘서 해결을 하기도 했는데

센토스 7 환경에서는 굳이 Dockerfile 을 작성해서 만든게 아닌 , 그냥 도커허브에서 pull 한 이미지로도

인터넷 잘되고 ,, systemctl 도 잘되는 부분이 있어서 뭔일인가싶다 ..

VOLUME ["/sys/fs/cgroup"]

 

도커 관해서는 부딪히는 문제들 그리고 해결법들 계속 쭉 기록 남기려고한다

22.11.24 내용추가


한동안 도커 쓸일이 없다가 다시 하게되서 메모남긴다.
컨테이너 내부에서 systemctl 안먹는 부분은 docker run 할때 --privileged 옵션 붙여주면 잘된다 ~!

728x90
300x250