docker的小技巧
[root@light-test playbook-vars[]# docker inspect -f "{{.NetworkSettings.IPAddress}}" d3a9ae03ae5f
172.17.0.4
docker d3a9ae03ae5f:/etc/hosts .
将容器里面的文件拷贝出来,只适合临时使用
dockerfile
FROM centos:7.6.1810 #在整个dockfile文件中,除了注释之外的第一行,要是from,用于指定父镜像
ADD #用于添加宿主机本地的文件、目录、压缩等资源到镜像里面去,会自动解压tar.gz格式的压缩包,不会自动解压zip
MAINTAINER #(镜像的作者信息)
LABEL #设置镜像的属性标签
COPY #用于添加宿主机本地的文件、目录、压缩等资源到镜像里面去,不会解压任何压缩包
ENV #设置容器环境变量
USER nginx #指定运行操作的用户
RUN yum install vim unzip -y && cd /etc/nginx #执行shell命令,但是一定要以非交互式的方式执行
VOLUME #定义volume
WORKDIR #用于定义工作目录
EXPOSE 80 #生命要把容器的某些端口映射到宿主机
CMD #镜像启动为一个容器时候的默认命令或脚本, CMD ["/bin/bash"]
ENTRYPOINT #也可以用于定义容器在启动时候默认执行的命令或者脚本,如果是和CMD命令混合使用的时候,会将CMD的命令当做参数传递给ENTRYPOINT后面的脚本,可以在脚本中对参数做判断并相应的容器初始化操作。
ENTRYPOINT ["top", "-b"] == ENTRYPOINT ["top", "-b", "-c"]
CMD ["-c"]
["docker-entrypoint.sh"]
CMD ["mysqld"]
ENTRYPOINT ["docker-entrypoint.sh","mysqld"]
ENTRYPOINT(脚本) + CMD(当做参数传递给ENTRYPOINT)
容器为什么会出现启动了不暂停
在一个容器里,要有一个能在容器tty的前端执行的进程
命令
tail -f
tail -f /etc/hosts
服务进程
Nginx
daemon off;
CMD ["/apps/nginx/sbin/nginx"]
脚本:
MySQL
RUN chmod a+x /apps/nginx/sbin/run_nginx.sh
EXPOSE 80 443
CMD ["/apps/nginx/sbin/run_nginx.sh"]
查看docker 网桥相关信息
yum install -y bridge-utils
bridge name bridge id STP enabled interfaces
br-3c944e9ceabf 8000.0242a8cc20ff no veth06c3f7b
veth08e0199
veth59bbc2e
veth7f7a3e8
vethcea27a0
vethde3f344
vethe6fd44a
vethf4d9827
vethf7b502d
docker0 8000.0242fc9a1c32 no veth3c08c2d
vethb4f8509
vethd37d067
docker 内部网络信息查看 iptables -t nat -nvL
docker 数据卷