IT教程 ·

玩转容器手艺

C#开发BIMFACE系列30 服务端API之模型对比1:发起模型对比

实践中,相识镜像和容器的操纵

什么是docker? Docker是一个开放源代码软件项目,让运用程序布置在软件货柜下的事情能够自动化举行,借此在Linux操纵体系上,供应一个分外的软件笼统层,以及操纵体系层假造化的自动管理机制.

镜像的几个小操纵

搜刮镜像
docker search nginx

下载镜像到local
docker pull image_name

归档镜像
docker image save image_name > xxx.tar

加载一个tar到环境中
docker image load < xxx.tar

容器的基本操纵

docker有个基本的请求:一个容器,一个application.

建立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

检察容器的日记

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 就必须要放文件在这个.的目次下

写给大忙人看的进程和线程

参与评论