您好,登錄后才能下訂單哦!
1、dockerfile 里不能有交互式命令。
FROM centos:6.9 加載鏡像
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo
http://mirrors.aliyun.com/repo/Centos-6.repo //base源優化
RUN curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
// EPEL (Extra Packages for Enterprise Linux)(http://fedoraproject.org/wiki/EPEL) 是由 Fedora 社區打造,為 RHEL 及衍生發行版如 CentOS、Scientific Linux 等提供高質量軟件包的項目.
RUN (類似docker run的操作)啟動一個臨時容器,產生文件變化,提交臨時鏡像,保留變化,刪除臨時容器。
RUN 基于上面的臨時鏡像,啟動一個臨時容器,產生文件變化,再次 提交臨時鏡像,保留變化,刪除臨時容器。直到最有一個臨時鏡像保留下來。
RUN echo "192.169.11.2 mirrors.aliyun.com" >>/etc/hosts 劫持host,每次啟動容器,hosts都會被自動改為容器名,要生效,這個RUN必須是 最后一條RUN,或把所有RUN通過&& \ 連成一條命令,這樣作為最后一個臨時鏡像,會保留下來。
ADD run.sh /run.sh //這個不會啟動臨時容器,所以不會改hosts。 如果是URL或壓縮包,會自動下載或自動解壓
RUN 775 /run.sh
CMD ["/bin/bash","/run.sh"]
2、docker image prune 刪除沒有名字也沒有版本的鏡像,怎么會產生名字和TAG為<none>的鏡像?<----docker image rm -f 正在運行的鏡像;或dockerfile構建一半的時候Ctrl+c也會產生。
3、 docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
docker run -p 3306:3306 --name mysql \ -v /usr/local/docker/mysql/conf:/etc/mysql \ -v /usr/local/docker/mysql/logs:/var/log/mysql \ -v /usr/local/docker/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ -d mysql:5.7
-v:主機和容器的目錄映射關系,":"前為主機目錄,之后為容器目錄
通過ENV環境變量 MYSQL_ROOT_PASSWORD,來設置MySQL初始密碼,在 docker run 通過 -e MYSQL_ROOT_PASSWORD=111111可以設定該容器的運行時密碼。
4、使用ADD,tar包下載到本地,使用ADD自動解壓加到鏡像中,copy則不會解壓。
5、ADD yum install openssh-server -y //在腳本service sshd start,
ssh root@192.168.1.1 -p 22 //因為 沒有密碼還是不能通過ssh登錄,需要
echo "123456" | passwd --stdin root // 更新用戶密碼信息,適用于shell腳本,非交互式設置root密碼,或使用腳本變量$1用戶設置密碼。失敗 問題原因之一就是出在了密碼中有"!"。繼續測試echo命令和"!",知道了"!"在echo中是有不同意義的,如果要輸出"!",就需要"\"來轉譯。
6、tail -F 等同于--follow=name --retry,根據文件名進行追蹤,并 保持重試,即該文件被刪除或改名后,如果再次創建相同的文件名,會繼續追蹤
7、docker run 指定的參數會當成 ENTRYPOINT的參數,而 CMD會被替換。 ENTRYPOINT: 啟動容器時執行的Shell命令,同CMD類似,只是由ENTRYPOINT啟動的程序 不會被docker run命令行指定的參數所覆蓋 ,而且, 這些命令行參數會被當作參數傳遞給ENTRYPOINT指定指定的程序
8、配置文件插入內容:echo "$1" >>/etc/hosts 、、// $1是 docker run 參數
9、docker container top 容器ID 、//容器的TOP命令,查看運行的程序、服務
10、利用數據卷對數據進行備份、恢復和遷移: http://www.dockerinfo.net/%e6%95%b0%e6%8d%ae%e5%8d%b7volumes
11、docker服務默認創建一個docker0網橋(其上有一個docker0內部接口),它在內核層連通了其它的物理或虛擬網卡,這就將所有容器和本地主機都放到同一個物理網絡。brctl show(apt-get isntall bridge-utils)查看網橋和端口連接信息,其中STP enabled為no,川大使用須注意網絡環路問題!
12、docker容器開啟多個服務,最簡單的就是把多個命令放到一個啟動腳本里面,另外就是使用進程管理工具,例如使用supervisor來管理容器中的多個進程,dockerfile中CMD ["/usr/bin/supervisord"],通過修改/etc/supervisor/conf.d/supervisord.conf配置文件啟動多個服務;
13、查找文件并拷貝到一個目錄下:find /home/ -name "*.rpm" -tpye f | xargs -i mv {} myfold // -i 或者是-I,將xargs的每項名稱,一般是一行一行賦值給{}。
14、sz/rz 是基于ZModem傳輸協議的命令。對傳輸的數據會進行核查,并且有很好的傳輸性能。使用起來更是非常方便,但前提是window端需要有能夠支持ZModem的telnet或者SSH客戶端,例如secureCRT。
yum -y install lrzsz
15、
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。