docker制作鏡像方法是怎樣的?docker研發(fā)日常制作鏡像操作是怎樣的?
docker制作鏡像方法是怎樣的?
docker制作鏡像一般有2種方法:
使用hub倉庫中已有的環(huán)境,安裝自己使用的軟件環(huán)境后完成image創(chuàng)建。
通過Dockerfile,完成鏡像image的創(chuàng)建。
第一種:使用hub倉庫中已有的環(huán)境,安裝自己使用的軟件環(huán)境后完成image創(chuàng)建。
制作自己的Docker鏡像環(huán)境,里面包括:
(1)centos
(2)golang
1、docker pull centos(pull最新的centos系統(tǒng))
2、docker run -it centos /bin/bash(運行進入容器)
3、在centos環(huán)境中創(chuàng)建work用戶
[root@132aaafe685d /]# useradd work
[root@132aaafe685d /]# su - work
docker制作鏡像
4、下載go的Linux安裝包,解壓,配置環(huán)境變量
[work@132aaafe685d ~]$ mkdir goapp && cd goapp && wget https://studygolang.com/dl/golang/go1.14.1.linux-amd64.tar.gz
[work@132aaafe685d goapp]$ tar zxvf go1.14.1.linux-amd64.tar.gz
[work@132aaafe685d goapp]$ vim ~/.bash_profile
[work@132aaafe685d go]$ source ~/.bash_profile
[work@132aaafe685d go]$ go version
go version go1.14.1 linux/amd64
[work@132aaafe685d go]$ echo $GOPATH
/home/work/goapp
[work@132aaafe685d go]$ echo $HOME
此時,go的最基礎(chǔ)環(huán)境就算配置好了,讓我們寫一個go程序,運行一下吧。
5、go 實現(xiàn)"Hello World!"
[work@132aaafe685d ~]$ vim /home/work/goapp/src/main.go
6、go run main.go
[work@132aaafe685d ~]$ go run /home/work/goapp/src/main.go
Hello World!
7、docker commit -m "xxx" -a "authorName" containerID hub的名稱/鏡像名稱:tag
8、docker commit && push到遠(yuǎn)端倉
C:\Users\Administrator>docker commit -m "centos and go env" -a "wenhan" 132aaafe685d zhangwenhan/gobox:v1
sha256:2f74c2d19210cc38da7267e5e8922dbafc1f33d9bf26ff01b27f335d9e6e8dec
C:\Users\Administrator>docker login
Authenticating with existing credentials...
Login Succeeded
9、查看https://hub.docker.com/里的個人倉,push的image已入庫
10、如果要打包報錯到本地
docker save -o D:\DockerDesktop\vm-data\DockerDesktop\ebox\sunny_gobox.tar zhangwenhan/gobox:v1.0
第二種:通過Dockerfile,完成鏡像image的創(chuàng)建。
1、創(chuàng)建鏡像所在文件夾+Dockerfile文件
(1)mkdir ebox && cd ebox
(2)touch Dockerfile
2、在Dockerfile文件中寫入指令
FROM ubuntu
RUN apt-get update && apt-get install -y ruby ruby-dev
格式說明:
每行命令都是以 INSTRUCTION statement 形式,就是命令+ 清單的模式。命令要大寫,“#”是注解。
FROM 命令是告訴docker 我們的鏡像什么。
RUN 命令是在鏡像內(nèi)部執(zhí)行。就是說他后面的命令應(yīng)該是針對鏡像可以運行的命令。
3、創(chuàng)建鏡像
命令:docker build -t zhangwenhan/ebox:v2 .
docker build 是docker創(chuàng)建鏡像的命令
-t 是標(biāo)識新建的鏡像屬于 zhangwenhan的
ebox是倉庫的名稱
:v2 是tag
"."是用來指明 我們的使用的Dockerfile文件當(dāng)前目錄的
4、創(chuàng)建完成后,從鏡像創(chuàng)建容器
docker run -t -i zhangwenhan/ebox:v2 /bin/bash
Docker研發(fā)日常制作鏡像操作
一、編寫NginxDemo Dockerfile
# Version 0.1
# 基礎(chǔ)鏡像
FROM nginx
# 維護者信息
MAINTAINER Mr.Hao@51hsw.com
# 將容器的工作目錄設(shè)置為/app(當(dāng)前目錄,如果/app不存在,WORKDIR會創(chuàng)建/app文件夾)
WORKDIR /app
# 鏡像操作命令
RUN xxxx
# 容器啟動命令
#指定nginx配置項目,--from=builder 指的是從上一次 build 的結(jié)果中提取了編譯結(jié)果(FROM node:alpine as builder),即是把剛剛打包生成的dist放進nginx中
COPY --from=builder app/nginx.conf /etc/nginx/nginx.conf
#暴露容器80端口
EXPOSE 80
二、編譯、安裝日常操作
編譯
# xx項目 1.0 tag(標(biāo)簽或版本)
docker build -t xx:1.0
查看
#待上面命令執(zhí)行完成
docker images |grep xx
#查看全部鏡像
docker images
運行
#使用xx-project進行運行 8080:本機使用訪問的端口 80:Docker內(nèi)啟動的端口 xx-project-docker:指定啟動之后容器名稱 xx-project:1.0 鏡像名稱(由上面命令獲得或者第一個命令 -t 的參數(shù)值)
docker run -p 8080:80 -d --name xx-project-docker xx-project:1.0
打包為tar
docker save -o xx-project.tar xx-project:1.0
加載tar包到其它docker環(huán)境
#執(zhí)行l(wèi)oad,將.tar壓縮文件加載到線上鏡像
docker load --input /home/root/xx-project.tar
推送docker鏡像到harbor
#初始
docker tag xx-project:1.0 core.harbor.domain:5000/xx-project/xx-project:1.0
#推送
docker push core.harbor.domain:5000/xx-project/xx-project:1.0
docker制作鏡像
三、停止、刪除相關(guān)操作
查看所有運行的容器
#列出所有的容器 ID
docker ps -aq
#列表進程
docker ps -a
殺掉某個容器
#kill 指定容器
docker kill 容器ID 容器ID 容器ID ...
#stop 指定容器
docker stop 容器ID 容器ID 容器ID ...
#停止所有容器
docker stop $(docker ps -aq)
刪除容器
#刪除指定容器
docker rm 容器ID
#強刪除
docker rm -f 容器ID
#刪除所有容器
docker rm $(docker ps -aq)
#強刪除所有容器
docker rm -f $(docker ps -aq)
刪除鏡像
#查詢所有鏡像
docker images
#刪除指定鏡像
docker rmi 鏡像ID
#強刪除
docker rmi -f 鏡像ID
#刪除所有鏡像
docker rmi $(docker images -q)
#強刪除所有鏡像
docker rmi -f $(docker images -q)
其它清空快捷操作
# 清空所有不使用的鏡像
docker image prune --force --all
# 或
docker image prune -f -a
# 清空所有停止的容器
docker container prune -f
awk刪除操作
#停止容器
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}')
管理image鏡像難嗎? 需要哪些依賴?
管理image鏡像難嗎?
docker cli提供了豐富的api接口, 可以非常方便地操作image鏡像。
需要哪些依賴?
安裝docker的系統(tǒng)(Windows或者Linux)。
一旦容器從鏡像啟動后,二者之間就變成了互相依賴的關(guān)系,并且在鏡像上啟動的容器全部停止之前,鏡像是無法被刪除的。嘗試刪除鏡像而不停止或銷毀使用它的容器,會導(dǎo)致出錯。
docker制作鏡像方法是怎樣的?大家在使用docker制作鏡像的時候,就可以按照上面的步驟去操作,這個步驟有些復(fù)雜,需要一點點的去理解和操作,對于docker研發(fā)日常制作鏡像操作方法,我們也可以去了解一下,如果大家還有什么不明白的問題,都可以咨詢新網(wǎng)的專業(yè)工作人員。
聲明:免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請發(fā)
送郵件至:operations@xinnet.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時
需注明出處:新網(wǎng)idc知識百科