docker的centos安裝操作及部分理解

前兩天在本地安裝了docker,熟悉了下命令之後,還是忍不住到centos上進行了一波golang鏡像部署,以下是我的操作步驟和一些想法。
準備:一臺安裝了docker的可聯網的centos服務器

1、不多說,寫Dockerfile(只想體驗dockerfile的操作流程,所以選擇了yum的安裝方式)
# docker build
# Version 1.0
#
FROM centos
#
MAINTAINER [email protected]
#
RUN yum install -y epel-release
RUN yum install -y docker-io
RUN yum provides '*/applydeltarpm'
RUN yum install deltarpm -y
RUN yum install -y gcc
RUN yum install -y go
RUN mkdir -p /data/gopath
ENV GOPATH /data/gopath
ADD src/ /data/gopath/src
ADD pkg/ /data/gopath/pkg
ADD test.go /data/gopath/test.go
WORKDIR /data/gopath
RUN go build -o server.bin test.go
#
CMD /data/gopath/server.bin

註釋別問我在gcc和go安裝之前爲什麼還有四個安裝步驟,我特麼也不知道,反正就是報錯了提示要我安裝

源碼安裝如下

FROM centos
MAINTAINER [email protected]
ENV GOROOT /usr/local/go
ENV GOPATH /data/gopath
ENV PATH $GOROOT/bin:$PATH
RUN yum install -y curl
RUN curl -s -o go.tar.gz https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz
RUN tar --remove-files -C /usr/local/ -zxf go.tar.gz
RUN mkdir -p /data/go
RUN ln -sv /usr/local/go/bin/go /bin
ADD src/ /data/gopath/src
ADD pkg/ /data/gopath/pkg
ADD test.go /data/gopath/test.go
WORKDIR /data/gopath
RUN go build -o server.bin test.go
CMD /data/gopath/server.bin
2、創建鏡像(注意最後面有一個小數點)
docker build -t golang:v1.0 .
3、創建容器,如果要綁定端口,也在這一步進行
docker run -d -p 80:80 golang:v1.0
4、在外部瀏覽器訪問一下~

clipboard.png

坑點

1、要是dockerfile運行過程中出錯,會在images中生成<none>的無用鏡像,刪除方法來自百度粘貼
# 刪除命令:
docker rmi $(docker images | grep "none" | awk '{print $3}')
# 上一步報錯還有未停掉的容器後可進行下面的步驟
# 停止容器
docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }') 
# 刪除:
docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }')
# 刪除鏡像
docker rmi $(docker images | grep "none" | awk '{print $3}')
2、在run的容器內進行exit,將會退出容器,並且使得容器也stop。正確做法是使用exec方式,命令如下:
docker exec -it imageId /bin/bash
3、如果使用dockerfile直接ADD文件進docker裏頭的話,這個沒啥。但是如果想要將當前目錄的文件複製進docker裏頭,首先要保證鏡像在運行(docker ps),然後docker cp 命令中的容器名使用我圈出來的那個名字。刪除和啓動停止容器都是用前面那個ID

clipboard.png

4、還沒找到給running的容器映射端口的方法,找了些帖子,貌似有配置文件可修改。方便起見在創建容器的時候綁定算了~

總結

docker是工具類應用,其實有點類似git,腦袋裏頭想一下docker的實現流程就能絲滑般掌握了

還有一些常用的docker命令,以及文件映射啥的,請點擊docker操作手冊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章