玩转容器技术

实践中,了解镜像和容器的操作

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

一起揭秘linux

本文分享自微信公众号 - PHP技术大全(phpgod)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 通过案例学习 Secret-每天5分钟玩转 Docker 容器技术

    通过案例学习 Secret 在下面的例子中,我们会部署一个 WordPress 应用,WordPress 是流行的开源博客系统。 我们将创建一个 MySQL s...

    企鹅号小编
  • 【容器技术】Docker容器技术入门(二)

    Dokcer 通过使用 Linux 桥接提供容器之间的通信,Docker的网络模式有四种

    民工哥
  • Docker容器技术

    Docker介绍 什么是容器 Linux容器是与系统其他部分隔离开的一系列进程,从另一个系统镜像运行,并由该镜像提供支持进程所需的全部文件。 容器镜像包含了应用...

    863987322
  • 转--容器技术的三大潜在隐患

    近两年来,Linux的容器技术占据了世界企业IT市场的主导地位,它所要解决的问题就是虚拟化根本无法在应用软件开发和计算行业大规模应用,并允许企业世界真正拥抱像D...

    李海彬
  • 玩转dnmp之自定义容器

    在前面几篇文章中,我们使用dnmp搭建了一个完整的docker开发环境。这篇文章接着分享如何在dnmp的基础上搭建一个自定义的PHP容器,实现多版本的PHP容器...

    A梦多啦A
  • 容器技术及其应用白皮书(上)-- 容器技术

    图2.2 容器技术框架

    shaonbean
  • Docker技术( 容器虚拟化技术 )

    一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。 作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题, 特别是...

    时间静止不是简史
  • 容器技术概述

    容器 (Container) 是一种在资源隔离状态下,允许我们运行应用程序及其依赖项,操作系统层面的轻量级、虚拟化技术。在容器中,应用程序运行所依赖的必要组件都...

    Techeek
  • 容器技术概述

    容器是一个允许我们在资源隔离的过程中,运行应用程序和其依赖项的 、轻量的 、操作系统级别的虚拟化技术, 运行应用程序所需的所有必要组件都打包为单个镜像,这个镜像...

    Techeek
  • 容器技术概述

    容器是一种轻量级的、操作系统级别的虚拟化技术,它允许我们在资源隔离的进程中运行应用程序及其依赖项。运行应用程序所需的所有必要组件都可以打包为单个可以复用的映像。...

    赵康
  • 容器技术概述

    容器技术是这两年热门的话题,因为容器技术给我们带来了很多方便的地方,节约了不少成本,不管是在运维还是开发上。而如今最热门的开源容器工具就是docker了,虽然不...

    端碗吹水
  • 容器化技术~docker

    记得最早接触docker这个技术是在java实习期间接触的,其实实习期做的事情每家公司给实习生的任务都不一样,当时自己实习期做的大部分工作就是当时的技术主管分配...

    码农王同学
  • 虚拟容器化技术

    首先我们需要学习一个知识,或多或少会有所目标或需求。那么我在对于选择的时候会进行相对应的分析,优中择优?

    PayneWu
  • 容器化技术docker~redis

    其实之前在学习java环境的时候,不可避免的就是如何在linux环境上面配置一些开发需要的环境,比如说tomcat这样的web应用服务器,将自己开发的项目放入里...

    码农王同学
  • 容器云——Docker容器技术基础介绍

    Docker是一个用于开发、打包、运行应用的开放平台。Docker使得我们能够将我们的应用从基础设施中分离出来。基础设施就是指的服务器等基础硬件设施,怎么理解分...

    小诸葛
  • ASP.NET Core 借助 K8S 玩转容器编排

    由于最近在学习微服务,所以就基于之前docker的基础上把玩一下k8s(Kubernetes),以了解基本概念和核心功能。

    圣杰
  • 手把手教你玩转 CSS3 3D 技术

    css3的3d起步 要玩转css3的3d,就必须了解几个词汇,便是透视(perspective)、旋转(rotate)和移动(translate)。透视即是以现...

    用户1289394
  • Spring Aware容器感知技术

    Spring Aware是什么 Spring提供Aware接口能让Bean感知Spring容器的存在,即让Bean可以使用Spring容器所提供的资源。 Spr...

    Java技术栈
  • 虚拟机&容器技术 原

    近期无意间看到这样一则消息“LinuxCon+ContainerCon+CloudOpen中国大会在北京成功举办”,初学Linux的小白在使用着虚拟机进行一系列...

    阿dai学长

扫码关注云+社区

领取腾讯云代金券