#实践中,了解镜像和容器的操做html
什么是docker? Docker是一个开放源代码软件项目,让应用程序部署在软件货柜下的工做能够自动化进行,借此在Linux操做系统上,提供一个额外的软件抽象层,以及操做系统层虚拟化的自动管理机制.linux
##镜像的几个小操做 搜索镜像 docker search nginx
nginx
下载镜像到local docker pull image_name
c++
归档镜像 docker image save image_name > xxx.tar
docker
加载一个tar到环境中 docker image load < xxx.tar
shell
##容器的基本操做centos
docker有个基本的要求:一个容器,一个application.bash
建立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
查看容器的日志app
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 就必需要放文件在这个.的目录下
原文出处:https://www.cnblogs.com/linux-error/p/12380514.html