摘要:修改代碼在容器內(nèi)執(zhí)行生成容器的配置文件進(jìn)到,修改代碼再容器目錄構(gòu)建這時再到目錄用我們構(gòu)建的這個運行容器我們打印的信息出來了。
docker開發(fā)流程
注意容器構(gòu)建時的信息:
Install runc version 992a5be178a62e026f4069f443c6164912adbf09 + git clone https://github.com/opencontainers/runc.git /tmp/tmp.NdftaLJucp/src/github.com/opencontainers/runc Cloning into "/tmp/tmp.NdftaLJucp/src/github.com/opencontainers/runc"... + cd /tmp/tmp.NdftaLJucp/src/github.com/opencontainers/runc + git checkout -q 992a5be178a62e026f4069f443c6164912adbf09 + make BUILDTAGS=seccomp apparmor selinux static CGO_ENABLED=1 go build -i -tags "seccomp apparmor selinux cgo static_build" -ldflags "-w -extldflags -static -X main.gitCommit="992a5be178a62e026f4069f443c6164912adbf09" -X main.version=1.0.0-rc3" -o runc . CGO_ENABLED=1 go build -i -tags "seccomp apparmor selinux cgo static_build" -ldflags "-w -extldflags -static -X main.gitCommit="992a5be178a62e026f4069f443c6164912adbf09" -X main.version=1.0.0-rc3" -o contrib/cmd/recvtty/recvtty ./contrib/cmd/recvtty + cp runc /usr/local/bin/docker-runc + install_containerd static + echo Install containerd version 8ef7df579710405c4bb6e0812495671002ce08e0 Install containerd version 8ef7df579710405c4bb6e0812495671002ce08e0 + git clone https://github.com/containerd/containerd.git /tmp/tmp.NdftaLJucp/src/github.com/containerd/containerd Cloning into "/tmp/tmp.NdftaLJucp/src/github.com/containerd/containerd"... + cd /tmp/tmp.NdftaLJucp/src/github.com/containerd/containerd + git checkout -q 8ef7df579710405c4bb6e0812495671002ce08e0 + make static cd ctr && go build -ldflags "-w -extldflags -static -X github.com/containerd/containerd.GitCommit=8ef7df579710405c4bb6e0812495671002ce08e0 " -tags "" -o ../bin/ctr cd containerd && go build -ldflags "-w -extldflags -static -X github.com/containerd/containerd.GitCommit=8ef7df579710405c4bb6e0812495671002ce08e0 " -tags "" -o ../bin/containerd cd containerd-shim && go build -ldflags "-w -extldflags -static -X github.com/containerd/containerd.GitCommit=8ef7df579710405c4bb6e0812495671002ce08e0 " -tags "" -o ../bin/containerd-shim + cp bin/containerd /usr/local/bin/docker-containerd + cp bin/containerd-shim /usr/local/bin/docker-containerd-shim + cp bin/ctr /usr/local/bin/docker-containerd-ctr + echo Install tini version 949e6facb77383876aeff8a6944dde66b3089574 + git clone https://github.com/krallin/tini.git /tmp/tmp.NdftaLJucp/tini Install tini version 949e6facb77383876aeff8a6944dde66b3089574 Cloning into "/tmp/tmp.NdftaLJucp/tini"... + cd /tmp/tmp.NdftaLJucp/tini + git checkout -q 949e6facb77383876aeff8a6944dde66b3089574 + cmake . -- The C compiler identification is GNU 4.9.2 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Performing Test HAS_BUILTIN_FORTIFY -- Performing Test HAS_BUILTIN_FORTIFY - Failed -- Configuring done -- Generating done -- Build files have been written to: /tmp/tmp.NdftaLJucp/tini + make tini-static Scanning dependencies of target tini-static [100%] Building C object CMakeFiles/tini-static.dir/src/tini.c.o Linking C executable tini-static [100%] Built target tini-static + cp tini-static /usr/local/bin/docker-init + export CGO_ENABLED=0 + install_proxy + echo Install docker-proxy version 7b2b1feb1de4817d522cc372af149ff48d25028e Install docker-proxy version 7b2b1feb1de4817d522cc372af149ff48d25028e + git clone https://github.com/docker/libnetwork.git /tmp/tmp.NdftaLJucp/src/github.com/docker/libnetwork Cloning into "/tmp/tmp.NdftaLJucp/src/github.com/docker/libnetwork"... + cd /tmp/tmp.NdftaLJucp/src/github.com/docker/libnetwork + git checkout -q 7b2b1feb1de4817d522cc372af149ff48d25028e + go build -ldflags= -o /usr/local/bin/docker-proxy github.com/docker/libnetwork/cmd/proxy + install_bindata + echo Install go-bindata version a0ff2567cfb70903282db057e799fd826784d41d + git clone https://github.com/jteeuwen/go-bindata /tmp/tmp.NdftaLJucp/src/github.com/jteeuwen/go-bindata Install go-bindata version a0ff2567cfb70903282db057e799fd826784d41d Cloning into "/tmp/tmp.NdftaLJucp/src/github.com/jteeuwen/go-bindata"... + cd /tmp/tmp.NdftaLJucp/src/github.com/jteeuwen/go-bindata + git checkout -q a0ff2567cfb70903282db057e799fd826784d41d + go build -o /usr/local/bin/go-bindata github.com/jteeuwen/go-bindata/go-bindata + install_dockercli + echo Install docker/cli version 7230906e0e297999eb33da74e0279c5cf41a119e + git clone https://github.com/dperny/cli /tmp/tmp.NdftaLJucp/src/github.com/docker/cli Install docker/cli version 7230906e0e297999eb33da74e0279c5cf41a119e Cloning into "/tmp/tmp.NdftaLJucp/src/github.com/docker/cli"... + cd /tmp/tmp.NdftaLJucp/src/github.com/docker/cli + git checkout -q 7230906e0e297999eb33da74e0279c5cf41a119e + go build -o /usr/local/bin/docker github.com/docker/cli/cmd/docker + [ 1 -eq 1 ] + rm -rf /tmp/tmp.NdftaLJucp編譯docker源碼
clone moby
$ git clone https://github.com/moby/moby
創(chuàng)建一個分支:
$ git checkout dry-run-test
構(gòu)建容器編譯:
$ make BIND_DIR=. shell
運行容器:
docker run --rm -i --privileged -e BUILDFLAGS -e KEEPBUNDLE -e DOCKER_BUILD_GOGC -e DOCKER_BUILD_PKGS -e DOCKER_CLIENTONLY -e DOCKER_DEBUG -e DOCKER_EXPERIMENTAL -e DOCKER_GITCOMMIT -e DOCKER_GRAPHDRIVER=devicemapper -e DOCKER_INCREMENTAL_BINARY -e DOCKER_REMAP_ROOT -e DOCKER_STORAGE_OPTS -e DOCKER_USERLANDPROXY -e TESTDIRS -e TESTFLAGS -e TIMEOUT -v "home/ubuntu/repos/docker/bundles:/go/src/github.com/moby/moby/bundles" -t "docker-dev:dry-run-test" bash root@f31fa223770f:/go/src/github.com/moby/moby#
我們啟動容器時小作修改使可以很方便的在本機(jī)上改代碼,在容器里構(gòu)建:
docker run --rm -i --privileged -e BUILDFLAGS -e KEEPBUNDLE -e DOCKER_BUILD_GOGC -e DOCKER_BUILD_PKGS -e DOCKER_CLIENTONLY -e DOCKER_DEBUG -e DOCKER_EXPERIMENTAL -e DOCKER_GITCOMMIT -e DOCKER_GRAPHDRIVER=devicemapper -e DOCKER_INCREMENTAL_BINARY -e DOCKER_REMAP_ROOT -e DOCKER_STORAGE_OPTS -e DOCKER_USERLANDPROXY -e TESTDIRS -e TESTFLAGS -e TIMEOUT -v /Users/fanux/work/src/github.com:/go/src/github.com -t "docker-dev:dry-run-test" bash
容器內(nèi)編譯源碼:
root@a8b2885ab900:/go/src/github.com/moby/moby# hack/make.sh binary ...output snipped... bundles/1.12.0-dev already exists. Removing. ---> Making bundle: binary (in bundles/1.12.0-dev/binary) Building: bundles/1.12.0-dev/binary/docker-1.12.0-dev Created binary: bundles/1.12.0-dev/binary/docker-1.12.0-dev Copying nested executables into bundles/1.12.0-dev/binary
拷貝bin文件:
root@a8b2885ab900:/go/src/github.com/moby/moby# cp bundles/1.12.0-dev/binary-client/docker* /usr/bin/ root@a8b2885ab900:/go/src/github.com/moby/moby# cp bundles/1.12.0-dev/binary-daemon/docker* /usr/bin/
啟動containerd:
root@a8b2885ab900:/go/src/github.com/docker/docker# dockerd -D & ...output snipped... DEBU[0001] Registering POST, /networks/{id:.*}/connect DEBU[0001] Registering POST, /networks/{id:.*}/disconnect DEBU[0001] Registering DELETE, /networks/{id:.*} INFO[0001] API listen on /var/run/docker.sock DEBU[0003] containerd connection state change: READY
這時你可以修改一些docker的代碼了,然后重新編譯即可,官方教程是修改了docker的代碼,而我更感興趣的是runc,下面就來改改runc試試。
修改runc代碼在容器內(nèi)執(zhí)行:
mkdir /mycontainer cd /mycontainer mkdir rootfs docker export $(docker create busybox) | tar -C rootfs -xvf - # 生成容器的配置文件config.json docker-runc spec docker-runc run mycontainerid
進(jìn)到github.com/opencontainers/runc/run.go,修改代碼:
spec, err := setupSpec(context) fmt.Println("spec is: ", *spec)
再容器runc目錄構(gòu)建runc:
make && make install
這時再到mycontainer目錄用我們構(gòu)建的這個runc運行容器,我們打印的信息出來了。
root@7d8c68bba090:/go/src/github.com/opencontainers/mycontainer# runc run test spec is: {1.0.0-rc5 {linux amd64} {true {0 0} {0 0 [] } [sh] [PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin TERM=xterm] / 0xc42001a500 [{RLIMIT_NOFILE 1024 1024}] true } {rootfs true} runc [{/proc proc proc []} {/dev tmpfs tmpfs [nosuid strictatime mode=755 size=65536k]} {/dev/pts devpts devpts [nosuid noexec newinstance ptmxmode=0666 mode=0620 gid=5]} {/dev/shm tmpfs shm [nosuid noexec nodev mode=1777 size=65536k]} {/dev/mqueue mqueue mqueue [nosuid noexec nodev]} {/sys sysfs sysfs [nosuid noexec nodev ro]} {/sys/fs/cgroup cgroup cgroup [nosuid noexec nodev relatime ro]}]map[] 0xc420084380 } / #
更多問題聯(lián)系:https://github.com/fanux
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/27047.html
摘要:接下來,我們來看一個更酷的工作流程,即通過引入來實現(xiàn)項目的持續(xù)集成。是一個持續(xù)集成發(fā)布平臺,支持對容器進(jìn)行測試。取消對的選中狀態(tài)。 showImg(https://segmentfault.com/img/bVk4cF); 借助Docker,我們可以更容易地進(jìn)行web應(yīng)用部署,而同時不必頭疼于項目依賴、環(huán)境變量以及各種配置問題,Docker可以快捷、高效地處理好這一切。 而這也是本...
摘要:容器作為一類操作系統(tǒng)層面的虛擬化技術(shù),其目標(biāo)是在單一主機(jī)交付多套隔離性環(huán)境,容器共享同一套主機(jī)操作系統(tǒng)內(nèi)核。與其它容器平臺不同,引入了一整套與容器管理相關(guān)的生態(tài)系統(tǒng)。每個容器都是相互隔離的保證安全的平臺。 導(dǎo)讀:本文章對Docker技術(shù)進(jìn)行了介紹,闡述了Docker的技術(shù)發(fā)展歷程、容器與虛擬機(jī)的差異、Docker原理、特點、Docker三組件和Docker帶來的影響,為我們進(jìn)一步理解D...
摘要:在谷歌不是這樣,谷歌不會把特定的應(yīng)用裝在某臺服務(wù)器上,業(yè)務(wù)應(yīng)用和服務(wù)器的強(qiáng)綁定對于谷歌這種量級的數(shù)據(jù)中心的維護(hù)難度太高了。但是金融機(jī)構(gòu)的數(shù)據(jù)中心規(guī)模不像谷歌這么大,所以能做到業(yè)務(wù)應(yīng)用和硬件的強(qiáng)綁定。 復(fù)雜的基礎(chǔ)IT架構(gòu)是傳統(tǒng)金融的現(xiàn)狀,如何快速響應(yīng)用戶需求,加快新業(yè)務(wù)上線速度,縮短產(chǎn)品的迭代周期? 數(shù)人云在容器落地金融云的2年實踐中,實現(xiàn)金融核心業(yè)務(wù)技術(shù)WebLogic、J2EE、Or...
摘要:容器云架構(gòu)方案。容器云架構(gòu)方案基于容器技術(shù),運維技術(shù)團(tuán)隊開發(fā)了五阿哥網(wǎng)站的容器云平臺。多云對接私有云和公有云進(jìn)行統(tǒng)一托管,包含網(wǎng)絡(luò)區(qū)域配置,實例開通及的環(huán)境初始化配置等。技術(shù)選型及實踐鏡像標(biāo)準(zhǔn)眾所周知,的鏡像是分層的。 前言 五阿哥鋼鐵電商平臺(www.wuage.com)是由鋼鐵行業(yè)第一的中國五礦與互聯(lián)網(wǎng)第一的阿里巴巴聯(lián)手打造,并充分運用雙方股東優(yōu)勢資源,即:阿里巴巴在大數(shù)據(jù)、電商運...
摘要:關(guān)注的目標(biāo)就是在代碼提交之后,順利且迅速的把新的功能部署到產(chǎn)品環(huán)境上。由于是,那么單元測試,回歸測試,集成測試,都是實現(xiàn)的手段。高質(zhì)量的產(chǎn)品需求書和高質(zhì)量的自動化集成測試用例毫無疑問,是高質(zhì)量軟件的保證之一。 showImg(https://segmentfault.com/img/remote/1460000006877091?w=800&h=600); 什么是Test-Driven...
摘要:本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接聯(lián)盟鏈初識以及環(huán)境搭建流程原文已更新,請讀者前往原文閱讀這篇文章首先簡單介紹了聯(lián)盟鏈?zhǔn)鞘裁?,再詳?xì)的介紹了環(huán)境搭建的整個流程。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:聯(lián)盟鏈初識以及Fabric環(huán)境搭建流程原文已更新,請讀者前往原文閱讀 這篇文章首先簡單介紹了聯(lián)盟鏈?zhǔn)鞘裁?,再詳?xì)的介紹了Fabric環(huán)境搭建的整個流程。 區(qū)塊鏈分類: 以參與方式分類,區(qū)...
閱讀 2892·2021-11-19 11:35
閱讀 2612·2021-11-02 14:40
閱讀 1436·2021-09-04 16:48
閱讀 3051·2019-08-30 15:55
閱讀 1800·2019-08-30 13:11
閱讀 1982·2019-08-29 11:12
閱讀 1119·2019-08-27 10:52
閱讀 3193·2019-08-26 18:36