玩转容器技术

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

玩转容器技术

阳光下的小蚂蚱   2020-03-03 我要评论
#1.实践中,了解镜像和容器的操作 >什么是docker? Docker是一个开放源代码软件项目,让应用程序部署在软件货柜下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制. ##2.镜像的几个小操作 >本次使用是docker v19.03.6 **2.1.搜索镜像** `docker search nginx ` **2.2.下载镜像到local** `docker pull image_name ` **2.3.归档镜像** `docker image save image_name > xxx.tar` **2.4.加载一个tar到环境中** `docker image load < xxx.tar` ##3.容器的基本操作 >docker有个基本的要求:一个容器,一个application. **3.1.创建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` **3.2.列出最新创建的容器** `docker ps -l ` **3.3.查看容器资源使用率** `docker states name ` **3.4.进入容器和启停** ``` docker exec -it container_id bash|sh docker start/stop/restart container_id ``` 3.5.查看容器的日志 ``` docker logs --tail=200 containerid -d 后台运行 -e 设置环境变量 -p 设置端口转发 -P 任意端口转发 -h 设置容器的hostname --name 设置容器的name -m 分配内存 --cpus 分配的cpu core --oom-kill-disable 禁用,内存溢出会自动kill进程,容器不加限制的话建议不加该选项 ``` ##4.容器的数据卷 *推荐两种数据卷的方式volume,bind mount* ###4.1.volume 4.1.1.特点: 1.没创建会自动创建,默认目录/var/libhttps://img.qb5200.com/download-x/docker/volume/_data 2.容器的文件系统与数据卷的数据共享,可以最容器的数据的持久化 3.可以共享多个容器,docker迁移 4.可以动态修改的文件 ``` 4.1.2.创建数据卷 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 ``` ###4.2.bind mount 4.2.1.特点: 1.挂载宿主机任意的文件系统到容器,容器内目录以宿主机那侧为主 2.应用发布,主机文件系统与容器的需要一致 `docker container run -d --mount type=bind,src=/mnt,dst=/usr/share/nginx/html nginx` ##5.docker网络模式 5.1.桥接 bridge 默认模式 容器创建后会创建个docker0的网桥,默认创建的容器都会添加到这个网桥(网关) 5.2.主机模式 --net=host 与宿主机公用一个network namespace 除了网络不隔离 其他都隔离,直接用host的ip访问容器,但是docker host上的端口不能用了,网络性能好 但是隔离性差,网络不隔离,share端口范围,文件系统和进程列表隔离 5.3.--net=none 独立network namespace,网络隔离 但是ip得自己配 5.4.--net=container:name/ID 和设置的容器用一个network namespace ,网络不隔离,进程列表和文件系统都隔离 5.5.自定义 和bridge相似,需要先创建一个网桥,创建后有一个自定义DNS,可以主机名和容器名互信 ``` docker network create 网络模式名称 docker run -itd --name test1 --net=test busybox ``` ##6.制作镜像Dockerfile **6.1.流程:** 1.FROM 基于的镜像 2.MAINTAINER 作者名/网址 3.RUN shell的命令 4.COPY 将文件copy到容器 5.EXPOSE 80 声明端口 CMD ["run.sh"] 容器创建后执行命令 **6.2.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.orghttps://img.qb5200.com/download-x/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 https://img.qb5200.com/download-x/dockerfile_workdir/test.txt /root WORKDIR /usr/local/nginx EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] ``` **6.3.构建镜像** `docker build -t nginx:v1 -f Dockerfile-nginx .` -t 镜像名和tag -f Dockerfile的文件 . dockerfile里的文件位置,比如COPY 就必须要放文件在这个.的目录下

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们