noilinux打包docker文檔
? 1. 首先我們需要到noi的網(wǎng)站下載鏡像
? 2. 通過(guò)vmware或者其他方式安裝好系統(tǒng)
? 5. 安裝完成以后我們需要查看noilinu系統(tǒng)版本命令如下: 磁盤(pán)請(qǐng)使用40G
? ? ? ? lsb_release -a 查看版本
? 4. 知道版本以后我們 查看 磁盤(pán)有多少 如果沒(méi)有40G請(qǐng)你添加磁盤(pán) 通過(guò)vm掛載 進(jìn)入系統(tǒng)輸入命令查看磁盤(pán)有沒(méi)有添加成功 命令如下
? ? ? fdisk -l 查看磁盤(pán)
? ? 發(fā)現(xiàn)有一個(gè)叫dev/sdb的磁盤(pán)我們需要 把它分區(qū)
? ? ? fdisk /dev/sdb 分區(qū)開(kāi)始 按照提示進(jìn)行輸入
? ? ? 分區(qū)成功以后 通過(guò) mkfs.ext4 分成文件系統(tǒng)格式
? ? ? 通過(guò)mount進(jìn)行掛載 mount /dev/sdb1 /opt/
? 5. 我們通過(guò)tar命令就可以開(kāi)始打包系統(tǒng)了
? ? ? tar -cvpf /tmp/system.tar --directory=/ --exclude=proc --exclude=sys --exclude=dev --exclude=run --exclude=boot .
? ? ? /proc颤殴、/sys钾唬、/run梦皮、/dev這幾個(gè)目錄都是系統(tǒng)啟動(dòng)時(shí)自動(dòng)生成的!依賴(lài)與系統(tǒng)內(nèi)核!
? ? ? 在進(jìn)行tar打包時(shí)候,注意打包過(guò)程中的錯(cuò)誤信息!如果有錯(cuò)誤出現(xiàn)宏粤,要重新打包,
? ? ? 不然在通過(guò)docker構(gòu)建進(jìn)行時(shí)航缀,會(huì)給出找不到命令行或其他類(lèi)型的錯(cuò)誤商架!通過(guò)容器構(gòu)建鏡像的命令:
? 6. 在tmp目錄下面使用?
? ? ? ? cat system.tar | docker import - 鏡像名稱(chēng):版本? ? ? ?
? 7. 完成以后通過(guò)docker images即可查看鏡像
? 8. 完成以后 我們通過(guò)啟動(dòng)容器進(jìn)去安裝 vnc 和 supervisor
? ? ? 8.1 安裝vnc
? ? ? ? ? ? 8.1.1 更新源
? ? ? ? ? ? ? ? ? ? ? apt-get update
? ? ? ? ? ? 8.1.2 安裝vnc和supervisor
? ? ? ? ? ? ? ? ? ? ? apt-get install? vnc4server supervisor -y
? ? ? ? ? ? 8.1.3 初始化vnc
? ? ? ? ? ? ? ? ? ? ? vncserver 按照提示輸入密碼
? ? ? ? ? ? 8.1.4? 刪除第一個(gè)桌面
? ? ? ? ? ? ? ? ? ? ? vncserver -kill :1
? ? ? ? ? ? 8.1.5? 啟動(dòng)vnc
? ? ? ? ? ? ? ? ? ? ? vncserver :1
? ? ? ? ? ? 8.1.6? 查看是否啟動(dòng)成功
? ? ? ? ? ? ? ? ? ? ? ss -tlunp 端口{5901}
? ? ? ? ? ? 8.1.7 配置我們自己的~/.vnc/ 記住這個(gè)目錄一會(huì)有用
? 9. 配置supervisor{進(jìn)程管理工具}
? ? ? ? ? ? 9.1.1 配置supervisor 主你需要配置的就是 /etc/supervisor/conf.d/
? ? ? ? ? ? 記住這個(gè)目錄一會(huì)我們能用到
? 10. 保存當(dāng)前容器狀態(tài)為容器鏡像命令:
? ? ? ? ? ? docker commit -m "描述" -a "作者" -p 停止容器打包鏡像 {容器name} 打包名稱(chēng):打包版本
? 11. 因?yàn)槲覀儎倓偞虬鼞?yīng)用程序的進(jìn)程是啟動(dòng)不了我們需要一個(gè)腳本啟動(dòng)它
? ? ? ? 腳本內(nèi)容:? #!/bin/bash
? ? ? ? ? ? ? ? ? /usr/bin/supervisord
? 12.? 配置進(jìn)程管理工具 需要管理的進(jìn)程配置文件
? ? ? ? 配置內(nèi)容:? [program:vnc] #管理進(jìn)程名稱(chēng)
? ? ? ? ? ? ? ? ? directory=/root/ #命令執(zhí)行目錄
? ? ? ? ? ? ? ? ? command=bash /opt/vnc.sh #執(zhí)行的命令
? ? ? ? ? ? ? ? ? autostart=true
? ? ? ? ? ? ? ? ? user=root #執(zhí)行以后
? ? ? ? ? ? ? ? ? autorestart=true
? ? ? ? ? ? ? ? ? startretries=100 #等級(jí)
? ? ? ? ? ? ? ? ? redirect_stderr=true
? ? ? ? ? ? ? ? ? stdout_logfile=/dev/null #日志輸出目錄
? 13.? 編寫(xiě)vnc啟動(dòng)腳本
? ? ? ? 腳本內(nèi)容:? #!/bin/bash
? ? ? ? ? ? ? ? ? rm /tmp/.X* -rf
? ? ? ? ? ? ? ? ? vncserver :1
? 14? 編寫(xiě)vncxstartup腳本
? ? ? ? 腳本內(nèi)容:? ? ? #!/bin/sh
? ? ? ? ? ? ? ? ? ? ? # Uncomment the following two lines for normal desktop:
? ? ? ? ? ? ? ? ? ? ? export XKL_XMODMAP_DISABLE=1
? ? ? ? ? ? ? ? ? ? ? unset SESSION_MANAGER
? ? ? ? ? ? ? ? ? ? ? # exec /etc/X11/xinit/xinitrc
? ? ? ? ? ? ? ? ? ? ? unset DBUS_SESSION_BUS_ADDRESS
? ? ? ? ? ? ? ? ? ? ? gnome-panel &
? ? ? ? ? ? ? ? ? ? ? gnome-settings-daemon &
? ? ? ? ? ? ? ? ? ? ? metacity &
? ? ? ? ? ? ? ? ? ? ? nautilus &
? ? ? ? ? ? ? ? ? ? ? gnome-terminal &
? 15.? 編寫(xiě)dockerfile 因?yàn)槲覀冞@些腳本和配置文件都是在外面的我需要寫(xiě)一個(gè)dockerfile打包進(jìn)去? ? ? ?
? ? ? ? dockerfile內(nèi)容:? FROM 剛剛打包的鏡像
? ? ? ? ? ? ? ? ? ? ? ? COPY vnc.conf /etc/supervisor/conf.d/
? ? ? ? ? ? ? ? ? ? ? ? COPY xstartup? ~/.vnc/
? ? ? ? ? ? ? ? ? ? ? ? COPY vnc.sh? ? /opt/
? ? ? ? ? ? ? ? ? ? ? ? COPY entrypoint.sh /entrypoint.sh
? ? ? ? ? ? ? ? ? ? ? ? RUN chmod 777 entrypoint.sh
? ? ? ? ? ? ? ? ? ? ? ? ENTRYPOINT ["entrypoint.sh"]
? 16. 構(gòu)建docker-images
? ? ? ? ? ? 命令: docker build -t 鏡像名稱(chēng):版本 .
? 17.? 構(gòu)建完成以后啟動(dòng)容器 端口映射出容器里面的5901端口到宿主機(jī)我們通過(guò)宿主機(jī)即可遠(yuǎn)程桌面
? ? ? ? ? ? 命令: docker run -it --name 容器名稱(chēng) -p 5901:5901 -d 鏡像名稱(chēng)
? 18.? 這樣子即可通過(guò)VNC遠(yuǎn)程查看我們的noilinux-docker容器桌面了? ? ? ? ? ? ? ? ? ? ?