docker run hello-world 2>&1 >>/dev/null
docker logs $CONTAINER_ID
2>/dev/null
意思就是把错误输出到“黑洞”
>/dev/null 2>&1
默认情况是1,也就是等同于1>/dev/null 2>&1。意思就是把标准输出重定向到“黑洞”,还把错误输出2重定向到标准输出1,也就是标准输出和错误输出都进了“黑洞”
2>&1 >/dev/null
意思就是把错误输出2重定向到标准出书1,也就是屏幕,标准输出进了“黑洞”,也就是标准输出进了黑洞,错误输出打印到屏幕
11、docker容器高级操作
映射端口
docker run -p 容器外端口:容器内端口
docker run --rm --name mynginx -d -p81:80 nginx:v1.12.2
把内部的80端口映射为81端口
挂载数据卷
docker run -V 容器外目录:容器内镜像
docker run -d --rm --name nginx_with_baidu -d -p82:80 -v/root/html:/usr/share/nginx/html nginx:v1.12.2
传递环境变量(云原生,控制宿主机传递环境变量到docker)
docker run -e 环境变量key:环境变量value
docker run -rm
容器之间互联
docker run --link
格式:--link <name or id>:alias
容器间如果想通过容器名进行网络连接,需要使用 docker run --link 来链接两个容器。
–link可以用来链接2个容器,使得源容器(被链接的容器)和接收容器(主动去链接的容器)之间可以互相通信,并且接收容器可以获取源容器的一些数据,如源容器的环境变量
容器内安装软件
yum/apt-get/apt-get/
首先变换镜像源
# tee /etc/apt/sources.list << EOF
> deb http://mirrors.163.com/debian/ jessie main non-free contrib
> deb http://mirrors.163.com/debian/ jessie-updates main non-free contrib
> EOF
apt-get update
apt-get install
12、docker inspect 检查命令
13、容器的生命周期
检查本地是否存在镜像,如果不存在即从远端仓库检索
利用镜像启动容器
分配一个文件系统,并在只读的镜像层外挂载一层可读写层
从宿主机配置的网桥接口中桥接一个虚拟接口到容器
从地址池配置一个ip地址给容器
执行用户执行的命令
执行完毕后容器终止
14、dockerfile制作,即制作镜像,类似与makefile, dockerfile就是文本文件,docker build通过这个dockerfile来组成一个镜像
docker build
docker build /data/dockerfile -t docker.io/nginx:v1.12.2_with_user_workdir
格式:
#为注释
指令大写,内容小写
dockerfile的第一个非注释指令行,必须是from,就是所有的镜像必须基于一个基准镜像。
4组核心的dockerfile指令
USER/WORKDIR #USER使用什么用户启动,WORKDIR是指工作目录
vi Dockerfile
#FROM nginx:v1.12.2
#USER nginx
#WORKDIR /usr/share/nginx/html
RUN/ENV #ENV是传递环境变量到容器中,RUN就是帮助执行脚本,是指构建镜像的时候帮忙去执行的一些操作
vi Dockerfile
FROM centos:7
ENV VER 9.11.4
RUN yum install bind-$VER -y
CMD/ENTRYPOINT #CMD是指在容器运行的时候执行的指令,一个个命令执行,但是ENTRYPOINT可以用来执行shell脚本,在启动的时候执行脚本
vi Dockerfile
#FROM centos:7
#RUN yum install httpd -y
#CMD ["httpd","-D","FOREGROUD"]
vi Dockerfile
#ROM centos:7
#ADD entrypoint.sh /entrypoint.sh
#RUN yum install epel-release -q -y && yum install nginx -y
#ENTRYPINT /entrypoint.sh
vi entrypoint.sh
#!/bin/bash
/sbin/nginx -g "daemon off;"
15、docker的网络模型
NAT(默认)
None 只需要运行docker的计算资源,不需要对外提供服务
#docker run -ti --rm --net=none myalpine /bin/sh
Host #使用的是宿主机的网络,docker和宿主机在同一个网络中
#docker runn -ti --rm --net=host myalpine /bin/sh
联合网络
16、Docker容器化封装应用程序的意义
docker引擎统一了基础设置环境-docker环境,不需要关注操作系统版本,硬件配置,运行时环境的异构,对linux的内核有要求
docker需要centos7及以上
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




