docker的安装和入门


原文链接

docker是什么

Docker:是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的,可移植的,自给自足的容器

Docker的核心概念:镜像、仓库、容器

Docker镜像:是一个特殊的文件系统,提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。

Docker 容器Container):来运行应用。容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。

仓库(Repository):是集中存放镜像文件的场所


一次完整docker的操作流程

  • 一般的流程中,clientpull命令从仓库把image拉到docker host,然后通过run命令指挥imagehost上面弄一个container来跑这个image
  • 当然也可以是相反的流程,client 通过build命令在host上面创建一个自己的image,然后通过push命令把image推到仓库。之后这个image可以被别的人或者自己pull

DOCKER在windows上的安装

检查电脑环境

检查版本,为了运行docker,你的机器必须是windows7或以上的64bit系统。

 


另外,你的机器必须支持硬件虚拟化技术(Hardware Virtualization Technology)并且已被启用。对于windows10系统来说,你可以在 任务管理器->性能 中查看到你的电脑是否开启了虚拟化


 


怎么开启虚拟化,因为电脑型号不一样,所以每台电脑进入BOIS的方式不一样,重启电脑,我的电脑是Lenovo的ThinkPad,所以我按的是F1,进入BOIS页面,找到Security,把Security下面的Virtualization里面的Intel(R) Virtualization Technology的状态改为Enable


然后再重启就好了。

下载dockerToolbox

https://get.daocloud.io/toolbox/,下载新版本

全部next就可以了

安装完成

 

安转成功之后桌面会多三个图标

 

如果安装完成之后桌面少了一个Oracle VM VirtualBox 的话,找到你的dockertoolbox

安装目录下面的installers下面的virtualbox双击virtualbox.msi进行安装。

 

 

双击Docker Quickstart Terminal图标,启动一个终端第一次运行会比较就,一般会报下载对应的镜像iso到对C:下的docker路径的错误,把dockertoolbox下的boot2docker.iso复制放到你docker运行下载镜像的位置,再重新启动就可以了。

 

启动成功会出现这样的界面

 

 

docker在linux上的安装

1.安装docker

yum install docker.x86_64 

2. 启动Docker

service docker start

linux常用命令

 ls   -a(同时列出隐含文件),  -l(输出一个比较完整的格式,除每个文件名外,增加显示文件

     类型、权限、硬链接数、所有者名、组名、大小(byte)、及时间信息-----简化为 ll)

  mkdir    新建目录 例:mkdir test 命令会在当前目录下建立一个名为“test”的新目录   

  touch   创建文件    例:touch test/readme.txt 在 test 目录下创建 readme.txt文件

  cd   切换目录  cd /.  到根目录    cd .. 上一级目录   cd /hahaha/hahaha  到指定目录

  pwd   显示当前目录

  mv   移动/重命名(加上 -i 参数询问是否覆盖)   mv hello rock/ 移动到rock目录下   

       mv hello rock 重命名为rock

  cp   拷贝 (加上 -i 参数询问是否覆盖,-r 参数递归调用)  

        cp -ir test/  workspace"(递归复制 test 目录到 workpace 目录下并在覆盖时提示)

  rm   删除 (加上 -i 参数确认提示,-r 参数递归调用)  

      rm -ir test/  递归删除test目录及其子目录并询问

  wget url  下载文件到当前目录

  sudo  暂时获取超级用户权限(有默认时长)加上 -i 参数 没有时间限制,输入 exit或logout 退出

  su  账户名    切换到某某用户模式,没有时间限制

  ZIP 工具:

    压缩文件  zip target.zip filename

    压缩文件夹  zip -r target.zip dir   -r 参数表示递归压缩子目录

    解压  unzip target.zip

  tar 工具:

    -c: 建立压缩档案

    -x:解压
    -t:查看内容
    -r:向压缩归档文件末尾追加文件
    -u:更新原压缩包中的文件

    这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用

    其中一个。下面的参数是根据需要在压缩或解压档案时可选的。
    -z:有gzip属性的
    -j:有bz2属性的
    -Z:有compress属性的
    -v:显示所有过程
    -O:将文件解开到标准输出

    下面的参数-f是必须的

    -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名

    例:tar -xvf file.tar //解压 tar包

      tar -xzvf jdk-8u131-linux-x64.tar.gz -C /usr/local/java //解压jdk到指定文件夹  

      tar -cZf  jpg.tar.Z  *.jpg  //将目录里所有jpg文件打包成jpg.tar后,并且将其用

        compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z

  vim 编辑器:  vim test.cpp

    vim 有两种模式,一种是普通模式,另一种是插入模式。执行上述命令以后进入普通模式。

    按下字母键“i”进入插入模式,使用方向键移动光标到需要插入的位置,然后输入想要插入

    的内容。编辑完成后按键“Esc”退出回到普通模式,在普通模式下输入冒号“:”,然后输入

    w 回车,保存更改。接着输入“:q”退出。也可以直接输入“:wq”保存并退出(注意 w 一定要

    在 q之前,先保存再退出)。

    查找:在普通模式下输入“/查找内容”,回车,即可定位到第一个匹配项。接着按下字母

       键“n”可以查找下一个。

    撤销:普通模式下输入“:u”并回车,实现撤销

docker常用命令

docker search(-s) nginx  搜索相关镜像 加上-s 参数 选出至少start数范围的镜像
docker push 192.168.0.100:5000/ubuntu      推送镜像库到私有源
docker rmi(-f) 镜像名:版本号/镜像ID   删除镜像 (加上 -f 参数 强制删除)
docker rmi $(docker images -q)  删除所有镜像
docker save docker.io/tomcat:7.0.77-jre7 >/root/mytomcat7.tar.gz 导出镜像
docker load < /root/mytomcat7.tar.gz  导入镜像

如果你想要去查看一个镜像的运行效果,你需要先下载一个镜像,直接运行命令docker pull 镜像名

$ docker pull nginx

 


下载成功之后,运行docker images查看已经下好的镜像

$ docker images

 

使用docker run 直接运行镜像

$ docker run

-d 是容器在后天运行
-p 是暴漏出来的端口号

docker容器常用命令

 docker ps 查看当前正在运行的容器

 docker inspect name/image[name/image...] 查看详细

 docker ps -a 查看所有容器的状态

 docker start/stop(-t) id/name[name...] 启动/停止某个(多个)容器 -t 指定时间

 docker kill (-s) name[name...] 强制中断 -s指定SIGINT信号类型,默认“kill”

 docker restart (-t) name[name...]  重启 -t 指定时间

    docker pause name 暂停  docker unpause name 继续

    docker rm(-$) name[name...] 移除 

      -f  --force=false  强制移除运行中容器

      -l  --link=false     移除指定链接,保留底层容器

      -v   --volumes=false   移除容器关联卷

指令指南

容器生命周期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause]
容器操作运维 — docker [ps|inspect|top|attach|events|logs|wait|export|port]
镜像仓库 — docker [login|pull|push|search]
本地镜像管理 — docker [images|rmi|tag|build|history|save|import]
其他命令 — docker [info|version]

使用dockerfile制作镜像

Docker与微服务-使用Maven插件构建Docker镜像可以参照http://blog.csdn.net/qq_22841811/article/details/67369530

打开我们的项目,在我们项目的src/main下面新建一个docker文件,在docker文件里面新建Dockerfile文本

FROM java:8  #From是from那个镜像,最好现在docker里面pull下来,不然构建的时候会在再下一遍

VOLUME /tmp                           #指定挂载点,该指令使容器中的一个目录具有持久化存储的功能,该目录可被容器本身使用,也可以共享给其他容器

ADD microservice-discovery-eureka-0.0.1-SNAPSHOT.jar app.jar  #复制文件

RUN bash -c 'touch /app.jar'      #run是启动容器后执行的命令

EXPOSE 9000                           #声明暴露的端口

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]  #entrypoint 和cmd指令的目的一样,都是指定Docker容器启动时执行的命令

Dockerfile文件

修改pom.xml
FROM Jjava:8 //来自那个基础镜像
VOLUME /tmp //指定临时挂载点
ADD microservice-discovery-eur.jar app.jar //把项目jar添加到app.jar里
RUN bash -c 'touch/app.jar' //镜像运行后执行该命令
EXPOSE:9000 //暴露出来访问的端口
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] //运行后执行的命令
在maven的配置文件里面增加配置
 
 
<build>

        <plugins>

            <!-- docker的maven插件,官网:https://github.com/spotify/docker-maven-plugin -->

            <plugin>

                <groupId>com.spotify</groupId>

                <artifactId>docker-maven-plugin</artifactId>

                <version>0.4.12</version>

                <configuration>

                    <!-- 注意imageName一定要是符合正则[a-z0-9-_.]的,否则构建不会成功 -->

                    <!-- 详见:https://github.com/spotify/docker-maven-plugin Invalid repository

                        name ... only [a-z0-9-_.] are allowed -->

                    <!-- 如果要将docker镜像push到DockerHub上去的话,这边的路径要和repo路径一致 -->

                    <imageName>eacdy/test</imageName>

                    <!-- 指定Dockerfile所在的路径 -->

                    <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>

                    <resources>

                        <resource>

                            <targetPath>/</targetPath>

                            <directory>${project.build.directory}</directory>

                            <include>${project.build.finalName}.jar</include>

                        </resource>

                    </resources>

                    <!-- 以下两行是为了docker push到DockerHub使用的。 -->

                    <serverId>docker-hub</serverId>

                    <registryUrl>https://index.docker.io/v1/</registryUrl>

                </configuration>

            </plugin>

        </plugins>

</build>

照上面修改后build之后的项目会报找不到2375端口的错误

需要我们去修改dockerhost的端口

在控制台中输入 docker-machine env

 

 
 
$Env:DOCKER_TLS_VERIFY = "1"

$Env:DOCKER_HOST = "tcp://192.168.99.100:2376"

$Env:DOCKER_CERT_PATH="C:\Users\Administrator\.docker\machine\machines\default(每个人的路径都不一样)

 再去修改pom.xml

 
 
<plugin>

    <groupId>com.spotify</groupId>

    <artifactId>docker-maven-plugin</artifactId>

    <version>0.4.12</version>

    <configuration>

        <imageName>eacdy/test</imageName>

        <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>

 

        <!-- 解决Connect to localhost:2375的问题的其中一种方式,注意要跟docker-machine env相一致 -->

        <dockerHost>https://192.168.99.100:2376</dockerHost>

        <dockerCertPath>C:\Users\Administrator\.docker\machine\machines\default</dockerCertPath>

        <resources>

            <resource>

                <targetPath>/</targetPath>

                <directory>${project.build.directory}</directory>

                <include>${project.build.finalName}.jar</include>

            </resource>

        </resources>

        <!-- 以下两行是为了docker push到DockerHub使用的。 -->

        <serverId>docker-hub</serverId>

        <registryUrl>https://index.docker.io/v1/</registryUrl>

    </configuration>

</plugin>

这样build的项目就不会报错了

 

完美打包构建build项目。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值