#實踐中,瞭解鏡像和容器的操做html
什麼是docker? Docker是一個開放源代碼軟件項目,讓應用程序部署在軟件貨櫃下的工做能夠自動化進行,藉此在Linux操做系統上,提供一個額外的軟件抽象層,以及操做系統層虛擬化的自動管理機制.linux
##鏡像的幾個小操做 搜索鏡像 docker search nginx
nginx
下載鏡像到local docker pull image_name
c++
歸檔鏡像 docker image save image_name > xxx.tar
docker
加載一個tar到環境中 docker image load < xxx.tar
shell
##容器的基本操做centos
docker有個基本的要求:一個容器,一個application.bash
建立nginx的容器 docker container run -d -e test=123 -p 8848:80 -h docker172.0 --name ngin3 -m="10m" --memory-swap="100m" --cpus=".5" --oom-kill-disable nginx
列出最新建立的容器 docker ps -l
查看容器資源使用率 docker states name
進入容器和啓停網絡
docker exec -it container_id bash|sh docker start/stop/restart container_id
查看容器的日誌app
docker logs --tail=200 containerid -d 後臺運行 -e 設置環境變量 -p 設置端口轉發 -P 任意端口轉發 -h 設置容器的hostname --name 設置容器的name -m 分配內存 --cpus 分配的cpu core --oom-kill-disable 禁用,內存溢出會自動kill進程,容器不加限制的話建議不加該選項
##容器的數據卷 推薦兩種數據卷的方式volume,bind mount
###volume 特色: 1.沒建立會自動建立,默認目錄/var/lib/docker/volume/_data 2.容器的文件系統與數據卷的數據共享,能夠最容器的數據的持久化 3.能夠共享多個容器,docker遷移 4.能夠動態修改的文件
建立數據卷 docker volume create 卷名 Commands: create Create a volume inspect Display detailed information on one or more volumes ls List volumes prune Remove all unused local volumes rm Remove one or more volumes docker container run -d --mount src=nginx_vol,dst=/usr/share/nginx/html nginx
###bind mount 特色: 1.掛載宿主機任意的文件系統到容器,容器內目錄以宿主機那側爲主 2.應用發佈,主機文件系統與容器的須要一致 docker container run -d --mount type=bind,src=/mnt,dst=/usr/share/nginx/html nginx
##docker網絡模式 橋接 bridge 默認模式 容器建立後會建立個docker0的網橋,默認建立的容器都會添加到這個網橋(網關)
主機模式 --net=host 與宿主機公用一個network namespace 除了網絡不隔離 其餘都隔離,直接用host的ip訪問容器,可是docker host上的端口不能用了,網絡性能好 可是隔離性差,網絡不隔離,share端口範圍,文件系統和進程列表隔離
none 獨立network namespace,網絡隔離 可是ip得本身配
container:name/ID 和設置的容器用一個network namespace ,網絡不隔離,進程列表和文件系統都隔離
自定義 和bridge類似,須要先建立一個網橋,建立後有一個自定義DNS,能夠主機名和容器名互信
docker network create 網絡模式名稱 docker run -itd --name test1 --net=test busybox
##製做鏡像Dockerfile 流程: 1.FROM 基於的鏡像 2.MAINTAINER 做者名/網址 3.RUN shell的命令 4.COPY 將文件copy到容器 5.EXPOSE 80 聲明端口 CMD ["run.sh"] 容器建立後執行命令,能夠被docker run指定的命令覆蓋
nginx基礎dockerfile代碼
[root@192-168-1-218 dockerfile_workdir]# cat Dockerfile-nginx FROM centos:7 MAINTAINER Mark RUN yum -y install gcc gcc-c++ automake pcre pcre-devel zlip \ zlib-devel openssl openssl-devel net-tools telnet wget curl && \ #優化 yum clean all && rm -fr /var/cache/yum/* RUN wget http://nginx.org/download/nginx-1.17.8.tar.gz && tar xf nginx-1.17.8.tar.gz && \ cd nginx-1.17.8 && \ ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module \ --with-http_realip_module --with-threads && make && make install && \ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ENV PATH $PATH:/usr/local/nginx/sbin #COPY /dockerfile_workdir/test.txt /root WORKDIR /usr/local/nginx EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
構建鏡像 docker build -t nginx:v1 -f Dockerfile-nginx .
-t 鏡像名和tag -f Dockerfile的文件 . dockerfile裏的文件位置,好比COPY 就必需要放文件在這個.的目錄下
原文出處:https://www.cnblogs.com/linux-error/p/12380514.html