Fork me on GitHub

Docker入门

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包中的一致!