도커 이미지란?
- Container에 실행 가능한 파일 및 설정 값을 포함하고 있는 것
도커를 사용하는 이유?
- 가볍고 빠르다.
도커의 저장 방식
- Layer 저장 방식
## 아래 처럼 한층, 한층 다운로드 받는 방식이 Layer방식
Image 경로
- tag를 이용하여 image를 URL 방식으로 관리
도커 명령어 모음
docker tag httpd:latest ku****/test:httpmy
## docker의 tag httpd:latest를 ku****/test:httpmy로 설정
docker pull nginx:latest
## docker pull : 도커에서 이미지를 다운로드 받는 명령어
## nginx 다운로드
## :lastes를 안 붙이면 최신버전을 다운로드 받습니다.
docker images
## 도커에서 가지고 있는 image 확인하는 명령어
docker run -itd [images]
## run -itd 데몬인지, 쉘인지 확신이 안 들고 docker를 실행하고 싶을 때 사용하는 명령어
## docker ps를 통해서 실행되고 있는지 확인할 수 있습니다.
docker run -itd --name a1 alpine
## --name을 통해서 names를 변경할 수 있습니다.
docker rm -f a1
## names으로 지우는 방법
## rm은 지우는 것, -f는 실행되고 있는 걸 지우는 것, a1은 names
docker run -it --name
##-i 대화형, -t tty 형식
## 쉘형식으로 진입
## ctrl+q+p를 눌리면 container가 살아있는 형태에서 쉘에서 빠져 나올 수 있습니다.
docker attach a2
##다시 a2에 접속하고 싶을 때 쓰는 명령어입니다.
docker run -itd -p 60080:80 --name h2 httpd
## 호스트 포트를 60080을 80으로 매핑
ss -nat
## 리슨 포트 확인하는 명령어
P.S Docker의 포트는 iptables의 영향을 받음
docker exec -it h1 /bin/bash
##foreground로 실행되는 걸 실행하고 싶을 때
## exec 실행, -it 대화형+tty, bin/bash로 실행
docker create -p 60080:80 --name n1 nginx
## create 생성, -p 포트매핑 , --name 이름 생성
##상태가 create 따라서 run해줘야합니다. 실행 명령어는 docker start [name]
docker pause [name]
docker unpause [name]
## 도커 상태를 pause로 바꿉니다.
docker run -d -p 60080:80 --name n1 nginx
## -d는 데몬을 실행할 때 사용하는 명령어
cat > /usr/share/nginx/html/index.html << END
## END를 만날 때 까지 실행
docker save -o http.tar httpd:latest
## http.tar 파일로 httpd데몬을 저장하겠다
scp http.tar root@10.0.0.2:/root
## scp로 http.tar파일을 10.0.0.2서버의 /root 디렉토리로 전달
docker load -i http.tar
## http.tar파일 로드
-> save, load 는 이미지로 저장하고 전달하는 방식
docker export -o test.tar c1
##파일
-> import, export는 전달하는 대상 자체가 Container임, 환경변수하고 설정파일이 초기화 되는 단점이 있습니다.
docker import test.tar centos:7-1
## export로 가지고 온 것은 import로 해제
## centos:7-1은 내가 풀 이미지의 이름
docker run -itd --name c12 centos:7-1
docker: Error response from daemon: No command specified
## 가져온 이미지를 import하면 cmd 명령어가 안 들어가 있어서 run 명령어가 안 먹습니다.
## 따라서 inspect로 확인해봐야 합니다.
아래와 같이 명령어를 입력해줘야 합니다.
docker import --change 'CMD ["/bin/sh"]' test.tar centos:7-2
[root@localhost ~]# docker inspect centos:7-1
[
{
"Id": "sha256:4c1116c38060625fc0a6a9b88810cf93ef3bb85f9542dbe7518cbeffa0d0370a",
"RepoTags": [
"centos:7-1"
],
"RepoDigests": [],
"Parent": "",
"Comment": "Imported from -",
"Created": "2023-05-16T11:36:18.613821375Z",
"Container": "",
"ContainerConfig": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": null,
"Cmd": null,
"Image": "",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": null
},
"DockerVersion": "23.0.6",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": null,
"Cmd": null,
"Image": "",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 203936095,
"VirtualSize": 203936095,
"GraphDriver": {
"Data": {
"MergedDir": "/var/lib/docker/overlay2/3ba9387b7ee553e2cd6acc07e44a2c105f28e43cbff2508a10d11a4b9063515f/merged",
"UpperDir": "/var/lib/docker/overlay2/3ba9387b7ee553e2cd6acc07e44a2c105f28e43cbff2508a10d11a4b9063515f/diff",
"WorkDir": "/var/lib/docker/overlay2/3ba9387b7ee553e2cd6acc07e44a2c105f28e43cbff2508a10d11a4b9063515f/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:f605e1250dab91100ddda290da2917419276db28d24519d668ea9f7a922c9153"
]
},
"Metadata": {
"LastTagTime": "2023-05-16T20:36:18.643077002+09:00"
}
}
]
[root@localhost ~]# docker inspect centos:7-2
[
{
"Id": "sha256:eeb6ee3f44bd0b5103bb561b4c16bcb82328cfe5809ab675bb17ab3a16c517c9",
"RepoTags": [
"centos:7"
],
"RepoDigests": [],
"Parent": "",
"Comment": "",
"Created": "2021-09-15T18:20:23.99863383Z",
"Container": "5e4c7bfd35862166e9efd7532208300600114f0acff8f82fd537a57bdd523fe2",
"ContainerConfig": {
"Hostname": "5e4c7bfd3586",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/sh",
"-c",
"#(nop) ",
"CMD [\"/bin/bash\"]"
],
"Image": "sha256:ba35a4b787c8f11e3b6ed9248c7663b4f27459e9715a1ace09f966259d5ebc3a",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"org.label-schema.build-date": "20201113",
"org.label-schema.license": "GPLv2",
"org.label-schema.name": "CentOS Base Image",
"org.label-schema.schema-version": "1.0",
"org.label-schema.vendor": "CentOS",
"org.opencontainers.image.created": "2020-11-13 00:00:00+00:00",
"org.opencontainers.image.licenses": "GPL-2.0-only",
"org.opencontainers.image.title": "CentOS Base Image",
"org.opencontainers.image.vendor": "CentOS"
}
},
"DockerVersion": "20.10.7",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/bash"
],
"Image": "sha256:ba35a4b787c8f11e3b6ed9248c7663b4f27459e9715a1ace09f966259d5ebc3a",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"org.label-schema.build-date": "20201113",
"org.label-schema.license": "GPLv2",
"org.label-schema.name": "CentOS Base Image",
"org.label-schema.schema-version": "1.0",
"org.label-schema.vendor": "CentOS",
"org.opencontainers.image.created": "2020-11-13 00:00:00+00:00",
"org.opencontainers.image.licenses": "GPL-2.0-only",
"org.opencontainers.image.title": "CentOS Base Image",
"org.opencontainers.image.vendor": "CentOS"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 203936249,
"VirtualSize": 203936249,
"GraphDriver": {
"Data": {
"MergedDir": "/var/lib/docker/overlay2/dbc65bdab54a3911cb9d736913e06360c57608f6e5be25cebe40a0d03b8a7e38/merged",
"UpperDir": "/var/lib/docker/overlay2/dbc65bdab54a3911cb9d736913e06360c57608f6e5be25cebe40a0d03b8a7e38/diff",
"WorkDir": "/var/lib/docker/overlay2/dbc65bdab54a3911cb9d736913e06360c57608f6e5be25cebe40a0d03b8a7e38/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:174f5685490326fc0a1c0f5570b8663732189b327007e47ff13d2ca59673db02"
]
},
"Metadata": {
"LastTagTime": "0001-01-01T00:00:00Z"
}
}
]
docker rm -f $(docker ps -aq)
## 실행중인 전체 컨테이너 삭제
'Container' 카테고리의 다른 글
Docker save, load, tar, scp 명령어 실습 (0) | 2023.05.17 |
---|---|
Docker 복사(CP) 실습 예제 (0) | 2023.05.17 |
Docker에서 HaProxy 활용하여 Load Balance (0) | 2023.05.16 |
Docker httpd image 생성 절차 (0) | 2023.05.16 |
Container LifeCycle (0) | 2023.05.16 |