一:指令
1.获取镜像 :可以使用 docker pull 命令来从仓库获取所需要的镜
2.列出本地镜像:使用 docker images 显示本地已有的镜像。加-a全部
3.利用 Dockerfile 来创建镜像,Dockerfile 基本的语法是
使用 # 来注释
FROM 指令告诉 Docker 使用哪个镜像作为基础
接着是维护者的信息
RUN 开头的指令会在创建中运行,比如安装一个软件包,编写完成 Dockerfile 后可以使用 docker build 来生成镜像。
ADD 命令复制本地文件到镜像;用 EXPOSE 命令来向外部开放端口;
用 CMD 命令来描述容器启动后运行的程序等
4.启动一个容器 :docker run -t -i ouruser/sinatra:v2 /bin/bash
5.镜像的标签: docker tag 5db5f8471261 ouruser/sinatra:devel
6.上传镜像 :docker push 命令
7.移除本地的镜像:docker rmi 在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器
8.移除容器 :docker rm 【全删docker rm $(docker ps -a -q)】,移除镜像docker rmi 【docker rmi $(docker images -a -q)】
9:启动已终止容器 :docker start 命令,直接将一个已经终止的容器启动运行
10:终止一个运行中的容器:docker stop
11:Dockerfile 中使用 VOLUME 来添加一个或者多个新的卷到由该镜像创建的任意容器
12:查看当前映射的端口配置 :docker port
13:映射到指定地址的指定端口:可以使用 ip:hostPort:containerPort 格式指定映射使用一个特定地址$ sudo docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py
二:启动异常情况
1.docker启动报错docker_server_1 Attaching to docker_server_1: No such file or directoryash 原因.sh文件换行风格可能变成windows了,将文档格式转换成UNIX即可(我把idea也改了下idea--> settings-->code style–>line separator—>unix and osx(\n) )
2.启动docker 消息队列报错MNSQueue [MNSQueue.java:134] - mns queue loop exception: com.aliyun.mns.common.ServiceException: The http request you sent is expired. 时钟不一致问题 打开Hyper-V管理器 找到MobyLinuxVm下的设置选项 在管理 集成服务 勾选时间同步选项即可
3.启动docker报访问被拒绝denied:access forbidden 在settings of Docker for Windows的Share Drives设置共享的local drivers。Share Drive需要你的域账号。
三:容器运行准备:
1.准备在项目parent层pom.xml 设置<docker.repository>gitlib项目名如r_d_mm/user-base</docker.repository>docker仓库 、server层pom.xml添加docker plugin依赖、copy docker文件夹到项目相应位置
2.修改build.sh文件 mvn docker:build -pl 项目server层包名;当执行docker:build命令时会去查找Dockerfile文件并执行Dockerfile 将文件copy到target\docker下 然后创建images镜像
3.修改dockerfile export监听端口
4.修改setenv.sh文件配置 Prepare the environment variables for docker hub and image names
5.修改app.yml文件配置server image镜像名 port端口号 environment数据库环境
四:容器运行步骤
1.cd到项目docker目录下在bash(git bash环境下)运行build.sh构建项目并创建docker镜像。
2.source setenv.sh
3.dc -f app.yml up