2023-09-20 13:18:33
728x90
728x90

yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
mv /backup/* /etc/yum.repos.d/
yum install -y docker-ce docker-ce-cli containerd.io
systemctl enable --now docker
docker login

docker search 명령어
docker search --limit 10 nginx 10줄만 봄
docker search --limit 10 --no-trunc nginx 10줄만 보는데 description 전부 출력
docker search -f stars=100 nginx stars가 100개 이상인것만 출력
docker search -f is-official=true nginx 공식 image만 출력
docker search --format "{{.Name}}: {{.StarCount}}" nginx 이름과 stars의 개수만 출력
--format에 올 수 있는것: .Name .Description .ISOfficial .StartCount
nginx image 중에서 공식이미지이며 별이 100개 이상이고 설명 글자제한 없애게 출력
docker search --no-trunc -f stars=100 -f is-official=true nginx 필터링 조건마다 -f 옵션 붙여야함

이미지 다운받기
docker pull nginx nginx image 다운로드
docker pull httpd httpd image 다운로드
docker images 다운로드한 images 확인
docker inspect httpd 이미지에 대한 세부적인 정보
md5sum /etc/services 해쉬값 찾기, 어떤 데이터가 들어와도 32글자로 만듬
docker rmi nginx 이미지 지우기
docker rmi 76e5ad98b58e 해쉬값으로 지우기
docker pull nginx:1.24.0 nginx 1.24.0 버전 다운
docker rmi nginx:1.24.0 tag값을 안쓰면 최신버전을 지워서 안지워짐
docker pull httpd
docker run -itd -p 60080:80 --name h1 httpd:latest
docker ps
docker rm -f $(docker ps -aq) 실행되고있는 모든 컨테이너 삭제
docker pull alpine 용량이 적은 linux
docker tag httpd:latest hbki/web:httpd hub.docker.com에 만든 리포지토리로 이미지 이름 바꾸기
docker push hbki/web:httpd 이미지 업로드

------------------------------------------------------------------------------------------------------

컨테이너 생성,실행:LifeCycle
docker create --name a1 alpine 컨테이너 생성
docker ps -a 컨테이너 목록 확인(실행이 안되고있는것도 나옴)
docker rm a1 a1 컨테이너 제거
docker start a1 a1 컨테이너 시작
-it: shell -d: app -itd:실행하는게 어떤것인지 모를때 옵션을 안주면 exited 상태로 시작함
docker create -it --name a1 alpine
docker run -it --name a2 alpine 컨테이너를 바로 실행해서 컨테이너에 진입한 상태로 됨
docker attach a2 shell에 접속할때
exit로 나오면 안되고 ctrl + p + q를 눌러야 exited상태로 안돌아감

docker run -d --name h2 httpd app 만들면서 실행
docker exec -it h2 /bin/bash app에 접속할때 exit로 나와도 실행 유지
docker stop a1 a1 컨테이너 정지 가지고있는 자원도 해제됨
docker pause a3 가지고있는 자원은 그대로인 상태로 정지됨
docker unpause a3 정지 해제
docker restart a3 가지고있던 자원을 해제하고 새로운 자원을 받는데 a1 자원이 해제되서 a1자원을 받게됨
docker start a1 새로운 자원을 받은 a1이 실행됨

-----------------------------------------------------------------------------------------
hub.docker.com에 image 업로드하기
docker run -d -p 60080:80 --name babo httpd
docker rename babo h1 name babo를 h1으로 변경
docker tag httpd:latest hbki/http:httpd
docker push hbki/http:httpd image 업로드

--------------------------------------------------------------------------------------------

docker run -itd -p 8080:80 --name n1 nginx
docker top n1 실행되고 있는 프로세스 보기

--------------------------------------------------------------------------------------------

Host에 있는 파일 container에 복사하기
echo "copy test" > cp.txt cat과 비슷
docker cp cp.txt a1:/ 호스트에서 컨테이너로 파일 복사하기
docker exec a1 ls -al / 내부로 접속하지 않고 외부에서 확인
docker cp a1:/cp.txt ./cp1.txt 컨테이너에서 호스트로 파일 복사, 컨테이너끼리는 복사x 호스트를 거쳐야함

docker run -itd -p 60080:80 --name n1 nginx
docker run -itd -p 60180:80 --name h1 httpd
docker cp index.html h1:/usr/local/apache2/htdocs/index.html 파일복사, 리눅스는 디렉토리도 파일취급 디렉토리 복사도 가능 
docker cp index.html n1:/usr/share/nginx/html/index.html
docker rm -f $(docker ps -aq)

docker diff h1 컨테이너 파일 변경사항 추적 A:추가 C:변경 D:삭제

----------------------------------------------------------------------------------------------
Container에서 image 제작하기

docker run -itd -p 60080:80 --name h1 httpd
docker commit h1 리포지토리와 TAG를 지정하지않으면 dangle 이미지가 생성됨 권장x
docker commit h1 comhttp:latest 컨테이너에서 이미지 생성
docker run -itd -p 60180:80 --name hh1 comhttp:latest 만든 이미지로 컨테이너 생성
----------------------------------------------------------------------------------------------
image를 archive 파일로 저장해서 다른 서버에 배포하기

2번 서버에서
docker save -o ca.tar centos:7 alpine:latest 전송하고 싶은 image를 archive한다
scp ca.tar root@10.0.0.3:/root/ ssh로 3번서버에 image archive한 파일 전송
3번 서버에서
docker load -i ca.tar image archive 파일 archive 해제

----------------------------------------------------------------------------------------------
container를 archive 파일로 저장해서 다른서버에 배포하고 실행하기

docker export -o a.tar a1 실행한 container를 archive 한다
scp a.tar root@10.0.0.3:/root/ ssh로 3번서버에 container archive한 파일 전송
docker import a.tar alpine:my CMD가 없어서 실행이 안됨
docker import --change 'CMD ["/bin/sh"]' a.tar alpine:my1 CMD를 입력해서 실행

docker export -o http.tar h1 실행한 container를 archive
scp http.tar root@10.0.0.3:/root/ ssh로 3번서버에 container archive한 파일 전송
docker inspect httpd httpd image 세부 정보에서 cmd와 경로 확인
docker import --change 'CMD ["httpd-foreground"]' http.tar http:khb archive 해제할때 확인한 cmd change해서 실행
docker run -itd -e "PATH=/usr/local/apache2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" -p 60080:80 --name h1 http:khb container 실행할떄 -e 옵션으로 확인했던 경로입력후 실행

728x90

'Container' 카테고리의 다른 글

Docker Dockerfile  (0) 2023.09.25
Docker Container 환경변수, network, --link, --add-host  (0) 2023.09.22
Docker Volume  (0) 2023.09.21