noilinux打包docker文檔
? 1. 首先我們需要到noi的網站下載鏡像
? 2. 通過vmware或者其他方式安裝好系統
? 5. 安裝完成以后我們需要查看noilinu系統版本命令如下: 磁盤請使用40G
? ? ? ? lsb_release -a 查看版本
? 4. 知道版本以后我們 查看 磁盤有多少 如果沒有40G請你添加磁盤 通過vm掛載 進入系統輸入命令查看磁盤有沒有添加成功 命令如下
? ? ? fdisk -l 查看磁盤
? ? 發現有一個叫dev/sdb的磁盤我們需要 把它分區
? ? ? fdisk /dev/sdb 分區開始 按照提示進行輸入
? ? ? 分區成功以后 通過 mkfs.ext4 分成文件系統格式
? ? ? 通過mount進行掛載 mount /dev/sdb1 /opt/
? 5. 我們通過tar命令就可以開始打包系統了
? ? ? tar -cvpf /tmp/system.tar --directory=/ --exclude=proc --exclude=sys --exclude=dev --exclude=run --exclude=boot .
? ? ? /proc、/sys、/run、/dev這幾個目錄都是系統啟動時自動生成的!依賴與系統內核!
? ? ? 在進行tar打包時候,注意打包過程中的錯誤信息!如果有錯誤出現,要重新打包,
? ? ? 不然在通過docker構建進行時,會給出找不到命令行或其他類型的錯誤!通過容器構建鏡像的命令:
? 6. 在tmp目錄下面使用?
? ? ? ? cat system.tar | docker import - 鏡像名稱:版本? ? ? ?
? 7. 完成以后通過docker images即可查看鏡像
? 8. 完成以后 我們通過啟動容器進去安裝 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? 刪除第一個桌面
? ? ? ? ? ? ? ? ? ? ? vncserver -kill :1
? ? ? ? ? ? 8.1.5? 啟動vnc
? ? ? ? ? ? ? ? ? ? ? vncserver :1
? ? ? ? ? ? 8.1.6? 查看是否啟動成功
? ? ? ? ? ? ? ? ? ? ? ss -tlunp 端口{5901}
? ? ? ? ? ? 8.1.7 配置我們自己的~/.vnc/ 記住這個目錄一會有用
? 9. 配置supervisor{進程管理工具}
? ? ? ? ? ? 9.1.1 配置supervisor 主你需要配置的就是 /etc/supervisor/conf.d/
? ? ? ? ? ? 記住這個目錄一會我們能用到
? 10. 保存當前容器狀態為容器鏡像命令:
? ? ? ? ? ? docker commit -m "描述" -a "作者" -p 停止容器打包鏡像 {容器name} 打包名稱:打包版本
? 11. 因為我們剛剛打包應用程序的進程是啟動不了我們需要一個腳本啟動它
? ? ? ? 腳本內容:? #!/bin/bash
? ? ? ? ? ? ? ? ? /usr/bin/supervisord
? 12.? 配置進程管理工具 需要管理的進程配置文件
? ? ? ? 配置內容:? [program:vnc] #管理進程名稱
? ? ? ? ? ? ? ? ? directory=/root/ #命令執行目錄
? ? ? ? ? ? ? ? ? command=bash /opt/vnc.sh #執行的命令
? ? ? ? ? ? ? ? ? autostart=true
? ? ? ? ? ? ? ? ? user=root #執行以后
? ? ? ? ? ? ? ? ? autorestart=true
? ? ? ? ? ? ? ? ? startretries=100 #等級
? ? ? ? ? ? ? ? ? redirect_stderr=true
? ? ? ? ? ? ? ? ? stdout_logfile=/dev/null #日志輸出目錄
? 13.? 編寫vnc啟動腳本
? ? ? ? 腳本內容:? #!/bin/bash
? ? ? ? ? ? ? ? ? rm /tmp/.X* -rf
? ? ? ? ? ? ? ? ? vncserver :1
? 14? 編寫vncxstartup腳本
? ? ? ? 腳本內容:? ? ? #!/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.? 編寫dockerfile 因為我們這些腳本和配置文件都是在外面的我需要寫一個dockerfile打包進去? ? ? ?
? ? ? ? dockerfile內容:? 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. 構建docker-images
? ? ? ? ? ? 命令: docker build -t 鏡像名稱:版本 .
? 17.? 構建完成以后啟動容器 端口映射出容器里面的5901端口到宿主機我們通過宿主機即可遠程桌面
? ? ? ? ? ? 命令: docker run -it --name 容器名稱 -p 5901:5901 -d 鏡像名稱
? 18.? 這樣子即可通過VNC遠程查看我們的noilinux-docker容器桌面了? ? ? ? ? ? ? ? ? ? ?