docker的一些使用小结

来源:互联网 发布:顶级域名表示政府部门 编辑:程序博客网 时间:2024/06/08 19:39

因为分析的项目中使用到了docker,做了一些使用方面的小结

搜索镜像:

docker search 镜像名字

下载镜像:

docker pulldocker pull learn/tutorial

要写完整镜像名字

在 docker中运行 hello world

docker容器可以理解为在沙盒中运行的进程。这个沙盒包含了该进程运行所必须的资源。

但这个沙盒默认不会运行任何程序。
你需要在沙盒中运行一个进程来启动某一个容器,这个进程是该容器的唯一进程,所以
当该进程结束时,容器也会完全的停止。

docker run 有两个参数 一个是镜像名,一个是在镜像中运行的命令

docker run learn/tutorial echo "hello world"
    -

在容器中安装一个简单的程序(ping)

比如 apt-get install -y ping

apt-get 命令执行完毕之后,容器就会停止,但对容器的改动不会丢失。

注意: 在 执行 apt-get命令的时候,要带上 -y参数,如果不指定 -y参数的话, apt-get命令会
进入交互模式,需要用户输入命令来进行确认,但在 docker环境中是无法响应这种交互的。

命令:

docker run learn/tutorial apt-get install -y ping

保存对容器的修改。 commint。

使用 docker ps -l命令获得安装完ping命令之后容器的id。然后把这个镜像保存为 learn/ping

执行 docker commit,可以查看该命令的参数列表

需要指定要提交保存容器的ID (这个id是 docker ps -l获取的)

这个id类似 git的版本号

执行命令:

docker commit 698 learn/ping

执行完后会返回 新版本镜像的ID号

运行新的镜像

想运行这个新的镜像就要使用新的镜像名了。

查询运作中的镜像

docker ps -a 查看所有的docker ps -l 查看最近的容器

使用 docker inspect命令可以更详细的查看一个容器的信息

根据 ID 查看

执行命令:

docker inspect ID

发布自己的镜像

查看所有安装过的镜像

docker images

将镜像发布到官方网站

docker push

这个镜像只能发布到自己的空间下面

命令: docker push learn/ping

从容器中复制文件到主机和把文件从主机复制到容器

docker cp CONTAINER ID:文件路径 保存路径docker cp CONTAINER ID 容器名:文件路径

这里写图片描述

复制进去

docker cp /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 bbd4312c781b:/usr/lib64

http://blog.csdn.net/niu_hao/article/details/69546208

要将镜像启动才可以,出来容器,然后查看容器CONTAINER ID
将文件传到容器中

docker容器目录挂在
http://blog.csdn.net/magerguo/article/details/72514813

docker run -ti -v /test:/soft centos /bin/bash

这个 /test是主机目录,如果存在就要删除, 冒号后面的是 soft是 docker容器中的目录

删除 name Tag 都会None的容器

这个也是参考的网上的,地址忘了。。

docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stopdocker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rmdocker images|grep none|awk '{print $3 }'|xargs docker rmi

如何查看容器的名字:

docker ps 查看 在最后一个属性就是 name

如何使容器后台运行

使用的-d 参数

使用 docker -ti 容器 /bin/bash 是交互进入容器
保存对容器的修改,因为不然每次执行完就恢复原来的镜像的状态了。

如何进入正在运行的容器呢?

docker ps

获取到正在运行的
进入
这里写图片描述

docker attach Names

例如

docker attach quizzical_torvalds

就可以进入了。

如何进入容器退出但是后台运行呢?

ctrl+p+q

按住就可以退出并且 容器还会继续运行,如果 exit就会关闭退出容器,!!!且之前的操作都恢复到初始了。也就都没了。

如何保存对容器的操作呢?

获取 commit id

docker ps -l 

获取要保存的容器的commitID
然后保存

docker commit commitID 保存的镜像名字

dockerfile文件编写,也就是构建docker的文件

http://blog.csdn.net/yuan_xw/article/details/77744272

一个简单事例

    1. # this is jdk1.8 + tomcat8.5 Dockerfile      2. # version 1.0      3. # author:yuan_xw      4.       5. # 指定基础image为该image的最后修改的版本。语法:FROM <image>:<tag>       6. FROM centos      7.       8. # MAINTAINER(用来指定镜像创建者信息)。语法:MAINTAINER <name>      9. MAINTAINER yuan_xw      10.       11. # RUN 构建指令,RUN可以运行任何被基础image支持的命令。如基础image选择了centos,那么软件管理部分只能使用centos的命令。      12. RUN yum install -y wget      13. RUN wget -P /usr/local/software --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie;" http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz    14.       15. # RUN 构建指令,解压jdk-8u144-linux-x64.tar.gz文件      16. RUN tar -zxvf /usr/local/software/jdk-8u144-linux-x64.tar.gz -C /usr/local/software      17.       18. # ENV构建指令,在image中设置一个环境变量。语法:ENV <key> <value>      19. ENV JAVA_HOME /usr/local/software/jdk1.8.0_144      20. ENV CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar      21. ENV PATH $JAVA_HOME/bin:$PATH      22.       23. # 安装 tomcat8.5       24. RUN wget -P /usr/local/software http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.20/bin/apache-tomcat-8.5.20.tar.gz    25. RUN tar -zxvf /usr/local/software/apache-tomcat-8.5.20.tar.gz -C /usr/local/software      26.       27. # EXPOSE(指定容器需要映射到宿主机器的端口)设置指令,该指令会将容器中的端口映射成宿主机器中的某个端口。当你需要访问容器的时候,可以不是用容器的IP地址而是使用宿主机器的IP地址和映射后的端口。要完成整个操作需要两个步骤,首先在Dockerfile使用EXPOSE设置需要映射的容器端口,然后在运行容器的时候指定-p选项加上EXPOSE设置的端口,这样EXPOSE设置的端口号会被随机映射成宿主机器中的一个端口号。也可以指定需要映射到宿主机器的那个端口,这时要确保宿主机器上的端口号没有被使用。EXPOSE指令可以一次设置多个端口号,相应的运行容器的时候,可以配套的多次使用-p选项。      28. EXPOSE 8080      29.       30. #设置tomcat8.5 启动        31. # ENTRYPOINT(设置container启动时执行的操作)      32. # 在Docker daemon模式下,无论你是使用ENTRYPOINT,还是CMD,最后的命令,一定要是当前进程需要一直运行的,才能够防容器退出。      33. ENTRYPOINT /usr/local/software/apache-tomcat-8.5.20/bin/startup.sh && tail -100f /usr/local/software/apache-tomcat-8.5.20/logs/catalina.out  

其实很简单!!!

开始的 FROM就是定义的这个镜像的基础镜像。
之后的RUN可以执行的命令都是这个镜像支持才能使用的。

之后就可以执行一些命令比如我想构建一个 tomcat &java的环境就可以使用
一路配置RUN就可以了。
hia可以设置 ssh远程登陆密码用户等

还可以直接配置环境变量和 容器开启端口 EXPOSE 22 就是这个开启 22端口

开启 tomcat端口同理。

之前实习遇到的那个就是打包然后构建,然后将这个docker容器 tomcat 8080端口映射到 主机服务器的 80端口

还可以设置 构建完成后 执行的一些命令

就是使用 ENTRYPOINT
后面是执行的命令

# 设置Tomcat7初始化运行,SSH终端服务器作为后台运行ENTRYPOINT service tomcat7 start && /usr/sbin/sshd -D

dockerfile脚本写好了 构建镜像

docker build -t 标签 .

注意 有点!!

运行 docker的时候 -d 就在后台运行了。 -p来指定端口映射

可以将镜像上传 要注册账号: 登陆也是 docker login

这个只是 dockerfile的简单用法

只是对 docker的一些简单常用的方法或者问题做了下总结。

原创粉丝点击