docker pull 获取镜像
docker build --tag imageName:v1 . 建立镜像
docker images 查看镜像
docker run --name imageName -d -p 8080:80 运行镜像
docker ps 列出container
docker tag imageid name:tag 修改容器名字及tag
删除 正在运行的docker
docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop
启动容器,并挂在
#docker run -d -v /home/user/software/:/home/software/ -p 58080:8080 --name javaweb javaweb:0.1 /root/run.sh
-d:表示以“守护模式”执行/root/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上。
-p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 58080 端口,这样就向外界暴露了58080端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。
--name:表示容器名称,用一个有意义的名称命名即可。
-v:冒号指定的路径是Dockfile中VOLUME指定的目录
docker还提供了一种高级的用法。叫数据卷。
数据卷:“其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的”。感觉像是由一个容器定义的一个数据挂载信息。其他的容器启动可以直接挂载数据卷容器中定义的挂载信息。
eg: docker run -v /home/dock/Downloads:/usr/Downloads --name dataVol ubuntu64 /bin/bash
创建一个普通的容器。用--name给他指定了一个名(不指定的话会生成一个随机的名子)
再创建一个新的容器,来使用这个数据卷。
docker run -it --volumes-from dataVol ubuntu64 /bin/bash
Dockerfile 语法总结:
FROM baseimage
RUN 执行命令
ADD 添加文件
COPY 拷贝文件
EXPOSE 暴露端口
WORKDIR 指定路径
MAINTAINER 维护者
ENV 设置环境变量
ENTRYPOINT 容器入口
USER 指定用户
VOLUME mount point eg: VOLUME [
"/data1"
,
"/data2"
]
eg1: java 镜像 运行jar文件
FROM hub.c.163.com/library/java COPY eurekaserver-0.0.1-SNAPSHOT.jar /usr/src/app.jar ENTRYPOINT ["java","-jar","/usr/src/app.jar"]
eg2: mvn clean package -DskipTests=true docker:build