docker 手動(dòng)構(gòu)建新鏡像的方法
本文介紹了docker 手動(dòng)構(gòu)建新鏡像的方法,分享給大家,具體如下:
查看本地現(xiàn)有鏡像:
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest c59f17fe53b0 4 days ago 108MB ubuntu latest 747cb2d60bbe 3 weeks ago 122MB centos latest 196e0ce0c9fb 6 weeks ago 197MB
現(xiàn)在利用基礎(chǔ)鏡像centos,在此基礎(chǔ)上手動(dòng)構(gòu)建一個(gè)web服務(wù),這里采用nginx
啟動(dòng)一個(gè)container并進(jìn)入到容器內(nèi):
[root@docker ~]# docker run -it --name=web centos /bin/bash [root@bab3b6991467 /]#
然后在容器內(nèi)進(jìn)行安裝nginx服務(wù):
[root@bab3b6991467 /]# cd /usr/local/src/ [root@bab3b6991467 src]# yum install wget vim
這里采用編譯安裝nginx,所以下載nginx源碼包,并安裝好編譯環(huán)境:
[root@bab3b6991467 src]# wget http://nginx.org/download/nginx-1.12.2.tar.gz
編譯環(huán)境:
[root@bab3b6991467 src]# yum install gcc gcc-c++ glibc make autoconf openssl openssl-devel
安裝nginx的一些依賴包:
[root@bab3b6991467 src]# yum install libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel
然后開(kāi)支執(zhí)行安裝:
[root@bab3b6991467 src]# ll total 960 -rw-r--r--. 1 root root 981687 Oct 17 13:20 nginx-1.12.2.tar.gz [root@bab3b6991467 src]# tar xf nginx-1.12.2.tar.gz [root@bab3b6991467 src]# cd nginx-1.12.2 [root@bab3b6991467 nginx-1.12.2]# ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module
創(chuàng)建需要用到的用戶:
useradd -M -s /sbin/nologin nginx
繼續(xù)編譯:
make && make install chown -R nginx:nginx /usr/local/nginx/
這里需要介紹nginx命令的一個(gè)參數(shù):
[root@bab3b6991467 ~]# /usr/local/nginx/sbin/nginx -h -g directives : set global directives out of configuration file
-g:為nginx的配置文件設(shè)置指令
現(xiàn)在退出container,回到host本機(jī)
[root@bab3b6991467 ~]# exit exit
查看此時(shí)容器的狀態(tài):
[root@docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bab3b6991467 centos "/bin/bash" 37 minutes ago Exited (0) 21 seconds ago web
利用docker diff查看該容器進(jìn)行了哪些修改,由于輸出太多,這里不給予顯示了
利用docker commit將web容器進(jìn)行加層成一個(gè)新鏡像:
[root@docker ~]# docker commit --help Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] Create a new image from a container's changes -m, --message string Commit message -a, --author string Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
現(xiàn)在開(kāi)始commit:
[root@docker ~]# docker commit -m "compile nginx on centos" web wadeson/centos_nginx:v1 sha256:210a202d37b8d2c31155c29adf0c7c0b49cfab7ff38234109919de7f4e76d1de
查看本地鏡像:
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE wadeson/centos_nginx v1 210a202d37b8 33 seconds ago 464MB nginx latest c59f17fe53b0 4 days ago 108MB ubuntu latest 747cb2d60bbe 3 weeks ago 122MB centos latest 196e0ce0c9fb 6 weeks ago 197MB
可以看見(jiàn)剛剛docker commit的新鏡像了,現(xiàn)在由此鏡像進(jìn)行啟動(dòng)一個(gè)container提供nginx服務(wù):
[root@docker ~]# docker run -d -p80:80 wadeson/centos_nginx:v1 /usr/local/nginx/sbin/nginx -g "daemon off;" c12669357e2b09a05a396ac480a04dd1956303b784f894b615d4edb889a737ab
然后查看container:
[root@docker ~]# docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c12669357e2b wadeson/centos_nginx:v1 "/usr/local/nginx/..." 41 seconds ago Up 40 seconds 0.0.0.0:80->80/tcp thirsty_murdock
可以看見(jiàn)nginx服務(wù)已經(jīng)開(kāi)啟了,于是進(jìn)行訪問(wèn):
于是整個(gè)手動(dòng)構(gòu)建就成功了
針對(duì)上面的一些命令做下解釋:
docker run -d -p80:80 wadeson/centos_nginx:v1 /usr/local/nginx/sbin/nginx -g "daemon off;"
后面運(yùn)行的命令都是旨在container的命令,由于沒(méi)有進(jìn)行環(huán)境變量設(shè)置,所以全路徑,而nginx -g這個(gè)參數(shù)是指可以在外面添加指令到nginx的配置文件中,daemon off是指nginx服務(wù)不運(yùn)行在后端而是在前臺(tái)運(yùn)行(container中的服務(wù)必須運(yùn)行在前臺(tái))
利用docker top可以查看container的運(yùn)行進(jìn)程:
[root@docker ~]# docker top c12669357e2b UID PID PPID C STIME TTY TIME CMD root 35468 35451 0 02:55 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -g daemon off; 1000 35489 35468 0 02:55 ? 00:00:00 nginx: worker process
利用docker exec進(jìn)入到容器內(nèi):
[root@docker ~]# docker exec -it c12669357e2b /bin/bash [root@c12669357e2b /]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 06:55 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -g daemon off; nginx 5 1 0 06:55 ? 00:00:00 nginx: worker process root 6 0 1 07:01 pts/0 00:00:00 /bin/bash root 20 6 0 07:01 pts/0 00:00:00 ps -ef
而使用ctrl+p+q可以將該容器置于后臺(tái),而不是馬上exited
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Docker中鏡像構(gòu)建文件Dockerfile與相關(guān)命令的詳細(xì)介紹
- jenkins構(gòu)建Docker 鏡像實(shí)例詳解
- 從零開(kāi)始構(gòu)建docker基礎(chǔ)鏡像的方法
- Docker如何多步構(gòu)建生成dubbo-admin鏡像詳解
- Docker多階段鏡像構(gòu)建的實(shí)現(xiàn)
- Docker如何使用Dockerfile構(gòu)建鏡像
- Docker鏡像構(gòu)建的兩種方法解析
- Docker基于現(xiàn)有鏡像構(gòu)建新鏡像的實(shí)現(xiàn)方法
- docker使用Dockerfile構(gòu)建鏡像的方法
相關(guān)文章
利用?trap?在?docker?容器優(yōu)雅關(guān)閉前執(zhí)行環(huán)境清理的方案
這篇文章主要介紹了利用?trap?在?docker?容器優(yōu)雅關(guān)閉前執(zhí)行環(huán)境清理的問(wèn)題,需要在容器的啟動(dòng)腳本中,加入 trap 指令,來(lái)完成容器在退出前需要做的所有事情,本文通過(guò)腳本示例給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-12-12詳解修改docker時(shí)區(qū)及docker常用命令
這篇文章主要介紹了詳解修改docker時(shí)區(qū)及docker常用命令,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2016-12-12docker-compose:數(shù)據(jù)卷volumes掛載規(guī)則說(shuō)明
這篇文章主要介紹了docker-compose:數(shù)據(jù)卷volumes掛載規(guī)則說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03docker設(shè)置了端口映射,不能訪問(wèn)的解決方案
這篇文章主要介紹了docker設(shè)置了端口映射,不能訪問(wèn)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03使用Docker compose啟動(dòng)自定義jar包的步驟詳解
這篇文章主要介紹了使用Docker compose啟動(dòng)自定義jar包的步驟,首先我們需要編寫(xiě)一個(gè)docker-compose.yml文件來(lái)定義我們的服務(wù)傳到我們的云服務(wù)器上,本文給大家分享示例代碼,感興趣的朋友一起看看吧2024-03-03啟動(dòng)Docker服務(wù)后顯示Docker Engine stopped解決辦法
這篇文章主要給大家介紹了關(guān)于啟動(dòng)Docker服務(wù)后顯示Docker Engine stopped的解決辦法,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Docker具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-01-01