docker的一些使用小结

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

搜索镜像:

docker search 镜像名字

下载镜像:

docker pull

docker 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 stop
docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm
docker 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的一些简单常用的方法或者问题做了下总结。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值