Docker学习笔记
常用命令说明
docker run
docker run --name="demo" //容器名称为demo
-p 9999:8080 // 宿主机的9999映射 容器里面的8080
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-d //deamon 模式运行(守护进程【后台】)
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
-h "mars": 指定容器的hostname;
--env-file=[]: 从指定文件读入环境变量;
-m :设置容器使用内存最大值;
--expose=[]: 开放一个端口或一组端口;
docker cp
docker cp nginxcontainer:/etc/nginx/nginx.conf ./nginx.conf //将容器中/etc/nginx/nginx.conf拷贝到当前目录下的nginx.conf
docker rm
docker rm //删除容器
-f quizzical_goldberg //忽略正在运行的状态删除容器`quizzical_goldberg`
docker build
docker build //根据Dockerfile文件构建一个镜像
-t nginxdockerfile
Dockerfile 示例
FROM nginx //从哪个镜像拉取
ADD ./nginx.conf /etc/nginx/nginx.conf //将本地文件加入到容器中
ADD ./test /usr/share/nginx/html/test
ENV TEST="hello" //环境变量进去交互界面,使用 echo $TEST 可以拿到变量值【用于存储系统变量】
EXPOSE 8080 //开放端口
CMD //容器运行完成后执行的指令, 可以使jar包 运行 例如 java -jar xxx.jar
DockerFile
FROM anapsix/alpine-java:8_server-jre_unlimited //这个指的是从哪儿拉镜像
MAINTAINER xxx //维护者
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN mkdir -p /my-file
WORKDIR /my-file //工作目录 WORKDIR 工作目录,类似于cd命令
EXPOSE 8888// EXPOSE 指定于外界交互的端口
ADD ./file/target/test.jar ./ //将本地文件添加到镜像中 ADD 将本地文件添加到容器中,tar类型文件会自动解压,可以访问网络资源,类似wget
CMD sleep 60;java -Xms128m -Xmx256m -jar test.jar //容器启动后执行命令运行jar CMD 构建容器后调用,也就是在容器启动时才进行调用。
// VOLUME ["/path/to/dir"]: VOLUME ["/data"] // VOLUME 用于指定持久化目录
// COPY 功能类似ADD,但是是不会自动解压文件,也不能访问网络资源URL
// ENV <key> <value> : ENV myName fendo //ENV 设置环境变量,它主要是为后续的RUN指令提供一个环境变量
// LABEL <key>=<value> <key>=<value> <key>=<value> : LABEL version="1.0" description="这是描述" by="fendo" //LABEL 用于为镜像添加元数据
// ENTRYPOINT 配置容器,容器启动时要执行的命令,它和CMD很像,也是只有一条生效,如果写多个只有最后一条有效。
// -和CMD不同是:CMD 是可以被 docker run 指令覆盖的,而ENTRYPOINT不能覆盖
// : ENTRYPOINT ["executable", "param1", "param2"] (可执行文件, 优先) ENTRYPOINT command param1 param2 (shell内部命令)
// FROM ubuntu
// ENTRYPOINT ["top", "-b"]
// CMD ["-c"]