Docker二所映象製作
1、dockerfile 裡不能有互動式命令。
FROM centos:6.9 載入映象
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo
//base源最佳化
RUN curl -o /etc/yum.repos.d/epel.repo
// EPEL (Extra Packages for Enterprise Linux)() 是由 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、利用資料卷對資料進行備份、恢復和遷移:
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、
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7970627/viewspace-2680124/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 製作Docker映象Docker
- YashanDB Docker映象製作Docker
- oracle製作docker映象OracleDocker
- Docker 映象製作方法Docker
- Docker製作jdk映象DockerJDK
- docker 製作與使用 arcgisserver 映象DockerServer
- Docker如何製作映象-Dockerfile的使用Docker
- 伺服器:如何製作docker映象伺服器Docker
- 製作 Python Docker 映象的最佳實踐PythonDocker
- Docker 入門系列四:Dockerfile-映象製作Docker
- 自編譯製作docker版本的onlyoffice映象編譯Docker
- docker製作自己的映象並上傳dockerhubDocker
- 無需依賴Docker環境製作映象Docker
- docker決戰到底(五) 製作自己的Jenkins映象DockerJenkins
- 自己動手製作elasticsearch-head的Docker映象ElasticsearchDocker
- proxmox映象製作
- 製作KubeVirt映象
- 【實踐】Docker for Windows 製作tomcat 映象並上傳至 docker 倉庫DockerWindowsTomcat
- centos製作具備telnet和ping功能的docker映象CentOSDocker
- Docker 必知必會3----使用自己製作的映象Docker
- 體驗SpringBoot(2.3)應用製作Docker映象(官方方案)Spring BootDocker
- 詳解SpringBoot(2.3)應用製作Docker映象(官方方案)Spring BootDocker
- 製作一個龍芯舊世界的 dotnet sdk docker 映象Docker
- 教你如何使用Docker製作Python環境連線Oracle映象DockerPythonOracle
- Dockerfile映象的製作Docker
- docker初體驗:docker 自己定製映象Docker
- Docker 映象製作教程:針對不同語言的精簡策略Docker
- 自己動手製作elasticsearch的ik分詞器的Docker映象Elasticsearch分詞Docker
- Linux 製作系統映象Linux
- Docker映象製作實戰:設定時區和系統編碼Docker
- Docker & ASP.NET Core (2):定製Docker映象DockerASP.NET
- alpine 製作 PHP 環境映象PHP
- 自己製作redis 和mongo 映象RedisGo
- 製作一個能構建 dotnet AOT 的 gitlab runner 的 Debian docker 映象GitlabDocker
- 製作一個能構建 dotnet AOT 的 gitlab ruuner 的 Debian docker 映象GitlabDocker
- Docker下RabbitMQ四部曲之二:細說RabbitMQ映象製作DockerMQ
- Docker定製自己的環境映象Docker
- 樹莓派製作映象並縮小映象尺寸樹莓派