728x90
반응형
도커 컨테이너는 도커 이미지를 바탕으로 작성하지만 반대로 도커 컨테이너를 바탕으로 도커 이미지를 작성할 수도 있습니다.
컨테이너로부터 이미지 작성
컨테이너로부터 이미지를 작성하려면 docker container commit 명령을 사용합니다.
root@server:~/docker# docker container commit --help
Usage: docker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
Create a new image from a container's changes
Options:
-a, --author string Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
-c, --change list Apply Dockerfile instruction to the created image
--help Print usage
-m, --message string Commit message
-p, --pause Pause container during commit (default true)
echo 이미지를 이용하여 컨테이너를 실행합니다.
root@server:~/docker# docker container run -d -p 9090:8080 echo
04b4015205a1ac4fa57c51fabaac12022d8ce6ccc86e4607dccf706ee0ff0459
호스트 머신에 main.go 파일의 내용을 수정합니다.
package main
import (
"fmt"
"log"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
log.Println("received request")
fmt.Fprintf(w, "Hello Docker ^..^ !!")
})
log.Println("start server")
server := &http.Server{Addr: ":8080"}
if err := server.ListenAndServe(); err != nil {
log.Println(err)
}
}
수정한 main.go 파일을 컨테이너로 복사하고, 컨테이너를 중지 후 재기동합니다.
root@server:~/docker# docker container cp ./main.go 04b401:/echo/main.go
root@server:~/docker# docker container stop 04b4
04b4
root@server:~/docker# docker container restart 04b4
04b4
호스트 머신에서 브라우저를 통해서 접근했을 때 변경된 내용이 출력되는 것을 확인합니다. docker container commit 명령을 이용해서 이미지를 생성합니다.
root@server:~/docker# docker container commit --author "myanjini" --message "my echo web" 04b401 myanjini/hellodocker:1.0
sha256:b45a629762f8d40ae21648d08af19860a22f6121805d21c26fcf8d5d82643e59
root@server:~/docker# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
myanjini/hellodocker 1.0 b45a629762f8 8 seconds ago 758MB
echo latest 37d841743bbb 15 minutes ago 750MB
golang 1.9 ef89ef5c42a9 10 months ago 750MB
docker image inspect 명령을 이용해서 이미지 정보를 확인할 수 있습니다.
root@server:~/docker# docker image inspect myanjini/hellodocker:1.0
[
{
"Id": "sha256:b45a629762f8d40ae21648d08af19860a22f6121805d21c26fcf8d5d82643e59",
"RepoTags": [
"myanjini/hellodocker:1.0"
],
"RepoDigests": [],
"Parent": "sha256:37d841743bbbd12ca7a1aa130019de54c6e0cea72137456ad8730b71cab02f18",
"Comment": "my echo web",
"Created": "2019-05-20T09:01:39.827496355Z",
"Container": "04b4015205a1ac4fa57c51fabaac12022d8ce6ccc86e4607dccf706ee0ff0459",
"ContainerConfig": {
"Hostname": "04b4015205a1",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"8080/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"GOLANG_VERSION=1.9.7",
"GOPATH=/go"
],
"Cmd": [
"go",
"run",
"/echo/main.go"
],
"ArgsEscaped": true,
"Image": "echo",
"Volumes": null,
"WorkingDir": "/go",
"Entrypoint": null,
"OnBuild": null,
"Labels": {}
},
"DockerVersion": "17.05.0-ce",
"Author": "myanjini",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"8080/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"GOLANG_VERSION=1.9.7",
"GOPATH=/go"
],
"Cmd": [
"go",
"run",
"/echo/main.go"
],
"ArgsEscaped": true,
"Image": "",
"Volumes": null,
"WorkingDir": "/go",
"Entrypoint": null,
"OnBuild": null,
"Labels": {}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 757990814,
"VirtualSize": 757990814,
"GraphDriver": {
"Data": null,
"Name": "aufs"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:3b10514a95bec77489a57d6e2fbfddb7ddfdb643907470ce5de0f1b05c603706",
"sha256:719d45669b35360e3ca0d53d159c42ca9985eb925a6b28ac38d0ded39a1314e8",
"sha256:ce6466f43b110e66d7d3a72600262a1f1b015d9a64aad5f133f081868d4825fc",
"sha256:fa0c3f992cbd10a0569ed212414b50f1c35d97521f7e4a9e55a9abcf47ca77e2",
"sha256:920961b94eb367eb39736364ebd3197098b46ca7a10476b1df052ee01a6c10b3",
"sha256:e7dc337030bab6f268888f7b7f6b4e9031232255313eca3ec21c2625b02faeda",
"sha256:24a9d20e5beebbd886c69737cf9bed33576ba2f2f940f6055fc45424a5899cf7",
"sha256:186d94bd2c6242e334cab1076bee2ca1dcdbb0ccc34921ed0474574b29c39d63",
"sha256:cddaaa0bee154a77e09b43e70b59fb0ed5a6f49105958fd2d6e38c7699c29ad4",
"sha256:77b2d155b95e2558e5745dc1a30fff6837ae1d99f57c64a746df1d9e9cab3745",
"sha256:f7ac8c75eede3a688a20ee4d757a33a42d80615db50ff0deb0daadcf63e49155"
]
}
}
]
728x90
반응형
'컨테이너 > 도커' 카테고리의 다른 글
도커로 MySQL 설치 및 실행 (0) | 2020.05.28 |
---|---|
09 docker container network (0) | 2019.05.20 |
07 docker-composer (0) | 2019.05.20 |
06 컨테이너 명령어 실행, 파일 복사, 현황 조회 (0) | 2019.05.18 |
05 컨테이너 시작, 중지, 재시작 (0) | 2019.05.18 |
댓글