반응형
1. VMware에 Ubuntu 20.04 가상 머신 만들기
- 만약 제 블로그를 따라 하면서 실습을 진행하신다면 나중에 하게 되실 삽질의 시간을 조금 더 줄일 수 있을 거라 생각합니다.
2. Ubuntu 20.04 설치하기
- 중간에 나오는 애들 다 옵션 그대로 두고 Done~
※ 나의 경우 master / 1234 이므로 그대로 입력해주면 된다
3. Ubuntu 20.04 에 Docker 설치하기
sudo apt update && sudo apt install -y docker.ip net-tools
sudo usermod -aG docker $USER
# 서버를 재시작
sudo reboot
4. 도커 기본 명령
4.1.1 컨테이너 실행
※ 실습1. 도커 컨테이너 이미지 실행하기
sudo apt install -y cowsay
cowsay hello world!
## 도커 컨테이너 버전의 cowsay는 다음과 같음
# docker run <IMAGE>:<TAG> [<args>]
docker run docker/whalesay cowsay 'hello world!'
- 귀여운 고래가 출력됨을 확인함
- 컨테이너를 실행하면 로컬에 docker/whalesay 라는 이미지가 없어서 자동으로 이미지를 원격 저장소에서 갖고 온다
- 도커 이미지 주소의 형식
- <레지스트리 이름>/<이미지 이름>:<TAG>
- 기본 레지스트리 주소 : docker.io
- 기본 사용 TAG : latest
- docker/whalesay == docker.io/docker/whalesay:latest
※실습2. 다른 방식의 <args>를 전달해 봅니다.
docker run docker/whalesay echo hello
# hello
- docker run docker/whalesay echo hello
- docker run <IMAGE>:<TAG> [<args>]
- 해당 컨테이너는 파라미터(args)로 어떤 인자를 전달하느냐에 따라 수행하는 명령이 달라진다
※실습3. -d 옵션으로 컨테이너를 백그라운드로 실행
- 사용할 이미지 : nignx
docker run -d nginx
- -d 옵션으로 컨테이너 실행 시 CONTAINERD_ID가 return
- CONTAINERD_ID는 사용자마다 다름
- nginx의 전체 주소 : nginx = docker.io/nginx:latest
4.1.2 컨테이너 조회
docker ps
# 컨테이너 조회
4.1.3 컨테이너 상세정보 확인
docker inspect <CONTAINER_ID>
# docker inspect 1ef553019a8e
## 컨테이너의 상세 정보를 출력함
## 네트워크, 볼륨 등 컨테이너의 모든 정보를 포함
## 필자는 dos화면이기 때문에 전체 정보를 출력했을 때 끝부분밖에 나오지 않아서
# 다음과 같이 실행해서 캡처했다.
cd ~
docker inspect 1ef553019a8e > nginx_view
vi nginx_view
## :q 하면 다시 나갈 수 있습니다
4.1.4 컨테이너 로깅
docker logs <CONTAINER_ID>
# 현재 실행중인 컨테이너가 1개 밖에 없어서 풀ID를 치지 않고 줄여서 적용
# docker logs 1ef55
docker logs -f <CONTAINER_ID>
# -f는 tail -f 옵션이므로 계속 로그를 확인 할 수 있다
# CTRL + C 로 로깅을 종료
4.1.5 컨테이너 명령 전달
- 실행된 컨테이너에 새로운 패키지를 설치하거나 설정을 수정해야 하는 경우
- exec 명령을 이용하면 컨테이너에 명령을 전달 가능
docker exec <CONTAINER_ID> <CMD>
# 새로운 패키지 설치
docker exec 1ef55 sh -c 'apt update && apt install -y wget'
docker exec 1ef55 wget localhost
※ 실패 해결 방법 : 구글링
더보기
※ docker image가 아닌 master@dockertest에서 진행합니다.
- cat /etc/resolv.conf
- nameserver 127.0.0.X
- vi /etc/docker/daemon.json
{
"dns": ["127.0.0.X"],
"dns-search": ["example"]
}
X 대신에 nameserver 본인이 해당한 IP 기재하시면 됩니다.
- sudo systemctl daemon-reload
- sudo systemctl restart docker
다시 위로 가서 docker run -d nginx
docker ps
docker exec df446a2b sh -c "apt update"
docker exec df446a2b sh -c "apt install wget"
docker exec df446a2b wget localhost
4.1.6 컨테이너/호스트간 파일 복사
docker cp <HOST_PATH> <CONTAINER_ID>:<CONTAINER_PATH>
# 컨테이너와 호스트서버간의 파일을 복사함
- /etc/passwd파일을 컨테이너 내부의 /usr/share/nginx/html/ 위치로 복사
- /usr/share/nginx/html/은 nginx 서버의 웹 서빙 디렉터리
## 호스트에서 컨테이너로 파일 복사
docker cp /etc/passwd df446a:/usr/share/nginx/html/.
docker exec df446a curl localhost/passwd
# 위 2줄로 확인하시면 됩니다
## 보여지는 것 줄이기 위해서 다음과 같이 사용했습니다.
docker cp /etc/passwd df446a:/usr/share/nginx/html/.
cd ~
# /home/master/
docker exec df446a curl localhost/passwd > nginx_passwd
sed -n '1,5p' nginx_passwd
## 컨테이너에서 호스트로 파일 복사
docker cp df446a:/usr/share/nginx/html/index.html .
cat index.html
## sed -n '1,5p' ./index.html
4.1.7 컨테이너 중단/시작/재시작
docker stop <CONTAINER_ID> # 정지
docker start <CONTAINER_ID> # 시작
docker restart <CONTAINER_ID> # 재시작
- docker ps 를 하면 정지된 컨테이너는 보이지 않고, 실행 중인 컨테이너만 보입니다
- docker ps -a를 하면 정지된 컨테이너도 보입니다.
4.1.8 컨테이너 삭제
docker rm <CONTAINER_ID> # 삭제
docker stop df446a
docker rm df446a
docker rm 1ef553
docker ps -a
4.1.9 Interactive 컨테이너
- 이미지 실행 시 -it 옵션을 통해 컨테이너로 접속해서 작업 가능
- -it (Interactive) stdin, stdout 연결, tty 터미널 연결의 약자
- ubuntu:16.04 이미지를 실행해서 bash shell을 실행
docker run -it ubuntu:16.04 bash
cat /etc/os-release
exit
docker ps -a
- docker run 6f8b3
- docker exec -it 6f8b3
- 컨테이너 내부
- root@6f8b3a226a22:/#
반응형
'개발 > 클라우드 엔지니어' 카테고리의 다른 글
우분투에 쿠버네티스 설치하기 4(TEST) (1) | 2024.01.23 |
---|---|
우분투에 쿠버네티스 설치하기 2 (1) | 2024.01.18 |
2 컨테이너의 이해 (0) | 2024.01.16 |
1. 쿠버네티스란? (1) | 2024.01.15 |
클라우드 엔지니어 준비 (0) | 2024.01.14 |