首页 > CMS教程 > 正文

玩转容器技术
2020-03-03 19:00:00   来源:   评论:0 点击:

实践中,了解镜像和容器的操作 什么是docker? Docker是一个开放源代码软件项目,让应用程序部署在软件货柜下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制 镜像的几个小操作 搜

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

什么是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代理实现用老人机看小说
下一篇:nginx+php-fpm工作原理

分享到: 收藏