玩转容器技术

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

什么是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 条评论
登录 后参与评论

相关文章

  • docker搭建php+nginx+swoole+mysql+redis环境

    软件:docker-ce version 18.09.3, docker-compose version 1.23.2

    猿哥
  • 用Docker玩转PHP环境配置

    是否有这样的场景,你搞了一个项目,在本地开发时需要搭建环境,放到线上时也需要搭建环境,到公司想暗戳戳玩一下要搭建环境,不搭还不行,因为你的环境依赖还挺多。这个时...

    猿哥
  • 推荐9-一看就懂-Docker容器化

    docker的英文意思是 码头工人,意思就是搬运东西的意思,其实这和docker的特点是一样的,docker提供的就是一种容器化搬运东西(我们的软件、程序)的过...

    猿哥
  • docker浅入深出续

    假设启动镜像仓库服务的主机地址为192.168.136.10,该目录中已存在的镜像列表:

    萧晚歌
  • Docker基础与实战,看这一篇就够了

    Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Uni...

    JAVA日知录
  • Docker基础与实战,看这一篇就够了

    Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Uni...

    用户4143945
  • docker快速入门

    docker已经是一年前的时候学习的了,当时,不会go语言。工作中一直没有使用,已经忘光了。在放假前,sdk那边说线上docker的打包环境每次打包特别慢,查询...

    若与
  • docker扫盲,面试连这都不会就等着挂吧!

    Docker要求运行在Centos 7上,要求系统为64位,系统内核版本3.10以上

    程序员内点事
  • docker入门篇

    docker pull centos       # 从docker仓库下载一个镜像例如:docker pull centos:6.7

    二狗不要跑
  • 试用docker功能

    jeremyxu

扫码关注云+社区

领取腾讯云代金券