Dcoker入门
Docker 基本命令
docker run 启动一个容器
docker search 搜索容器
docker pull 从dockerHub下载镜像
docker images 列出docker所有的镜像
docker ps 列出所有正在运行的容器
docker ps -a 列出所有的容器
docker ps -l 列出最新创建的容器
docker stop 停止一个容器
docker kill 强制停止一个容器
docker restart 重新启动一个容器
docker attach 进入一个容器
docker rmi 删除镜像
docker rm 删除容器
docker rm $(docker ps -a -q) 删除所有容器
docker push 将容器发到dockerHub
sudo docker exec -it containerId /bin/bash 进入容器
dokcer logs 查看容器的日志信息
待补充。。。。。。。
1.搜索并下载一个镜像
docker search java 搜索java镜像
docker pull java:1.8(默认下载最新的镜像,添加:1.8指定版本)
2.启动一个镜像(容器)
docker run XXX (注:遇到了容器状态为exited状态的,其实是此容器执行已经结束了)
例:docker run echo "aaa" 这样输出一个字符串 状态为exited
若想将一个服务挂到docker下,状态为up
例:docker run -d nginx (将nginx在后台启动)
3.使用DockerFile构建Docker镜像
DockerFile其实就是一个描述了Docker若干条指令的文本文件
构建镜像:docker build -t 仓库名称/镜像名称 Dockerfile相对位置
启动镜像:docker run -d -p xx:xx 仓库名称/镜像名称
遇到的问题:
1.启动失败:容器的状态为EXIT,看Dockerfile中jar的配置路径,容器要在后台运行 -d
4.使用maven构建docker镜像
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<imageName>demo/provider</imageName>
//指定Dockerfile的文件路径
<dockerDirectory>${basedir}/src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}</include>
</resource>
</resources>
</configuration>
</plugin>
mvn clean package docker:build
5.Docker compose 编排微服务(暂时理解的作用为可以同时启动多个容器)
1.centos7 下安装docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
2.设置权限
chmod -x /usr/local/bin/docker-compose
6.遇到的bug总结
1.maven构建docker时主机连接异常:docker的配置文件中没有暴露端口号
添加:ExecStart=/usr/bin/docker daemon --tls=false -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 ps:docker老版本的配置文件在default/docker下 , 新版本的配置文件在/lib/systemd/system/docker.service下(卡了2天!)
2.maven构建的时候找不到jar的路径,配置pom文件中的resource
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
3.Dockerfile中暴露的端口号要和jar包中的一致!