设为首页 收藏本站
查看: 3587|回复: 0

[经验分享] docker使用

[复制链接]
发表于 2018-9-21 09:24:50 | 显示全部楼层 |阅读模式
  1、参数大全
  1.1
  

docker    run    -it    --rm    \  ubuntu:16.04 \
  bash
  

DSC0000.png

  只能用第二种方法,一步一步来的。就可以进入一个ubuntu的系统
  参数说明:
DSC0001.png

  1.2用dockerfile构建一个自己的镜像
  文件名称:Dockerfile(只能是这个,可以改,但没必要)
  文件内容:
  

FROM    nginx  
RUN    echo
' vimi test without auto remove '    >    /usr/share/nginx/html/index.html   

  然后用
  

docker build -t nginx:vimi .  

  最后的那个点,代表build在当前目录下的docekrfile文件
  就会生成一个镜像
  

docker run -d -p 1515:80 --name vimiWebServer nginx:vimi  

  运行一个容器,在本机的1515端口上,就能访问到
  build的时候会把整个目录的东西都send去docker服务器哦,所以需要在一个空文件夹中放Dockerfile,需要某些文件支持的,不能写/opt/shaer/xxx
  因为访问不了,因为是把他复制过来,放在Dockerfile的上下文目录下,用./xxx这样访问。然后,如果有些东西不希望上传,可以用.gitignore类似的语法
  写一个.dockerignore
  1.3:将go工程放去docker,其中golang:update是一个拥有vim的golang环境,安装其实也很简单,首先sudo apt-get update && sudo apt-get install vim
  如果./main下拥有多个go文件,会一起编译的,并且不能有多个main函数
  

FROM golang:update  

  
MAINTAINER vimi
"vimiming@gmail.com"  

  
WORKDIR
/home/vimi/Golang/project/test/src/main/  

  
COPY .
/home/vimi/Golang/project/test/src/main/  

  
RUN go build .            //这里用 RUN go run .   会死循环的      还是?(RUN go run web.go) ??
  

  
ENTRYPOINT [
"./main"]  

  golang:updae dockerfile文件
  

FROM golang:latest  

  
MAINTAINER vimi
"vimiming@gmail.com"  

  
RUN apt
-get update \&& apt-get install -y vim \&& apt-get autoremove -y  

  2、一些命令:
  2.1:docker ps,列出现在运行的容器,用docker ps -a可以查看所有容器(包括没运行的),也可以用docker container ls -a
  2.2:docker image ls,列出现在有的镜像,但是这些镜像的体积总和不是实际的存取空间和,因为同一层的话,只使用一次union FS技术。所以用
  docker system df  才能查看所有体积和。还有就是,网络上显示的大小是压缩的大小,因为其关注流量。下载后的是物理大小,因为其关注的是空间
  2.3:docker image remove name可以删除一个镜像(需要镜像没有对应的容器在运行)。
  2.4:docker stop name停止容器,docker rm name,删除一个停止的容器
  2.5:docker container vimiWebServerNginx logs, 能查看这个容器输出的信息。因为其加了 -d  这个参数,所以这个容器是后台运行的,不加就是输出在当前的终端
  应该是docker logs -f containerName
  2.6:-i, 是分配标准输入,-t, 是分配一个伪终端,所以用 -it是分配一个交互式的shell
  2.7:一个正在运行的容器,如果用了-d,也就是后台运行,可以用docker exec -it vimiWebServerNginx bash  来进入它的bash(和ubuntu差不多的bash,不过没vim之类的,很麻烦,可以用echo来弄。。。。)
  2.8:参数 -f往往是强制的意思,比如删除一个正在运行的容器,用docker container rm -f containName
  2.9:docker container prune,可以把所有停止的container都删除
  2.10:docker search centos,可以查询对应镜像,然后用docker pull
  2.11:docker tag myip vimi/findip把镜像打包好,即可docker push vimi/findip。登录是docker login -p xxxx -s xxxx,前面要用proxychains
  2.12:docker volume create my-vol,可以创建一个数据卷, docker volume inspect my-vol 可以查看数据卷,以json形式输出信息,也可以用docker inspect container来查看一个容器的信息。
DSC0002.png

  2.13:
  

docker run -d -p 80:80 --name web \  

--mount  type=bind,source=/home/vimi/Downloads/web/,target=/usr/share/nginx/html/ \  
nginx
  

  这样可以把本地目录映射到容器上面,然后在本地目录加上一个html网页,也可以运行到
  上面是文件夹 -- 文件夹
  也可以用文件 -- 文件,这样如果容器上的文件被修改了,可以立刻反应到本地目录上。
  也可以捆绑一个数据卷上去
  3、一些技巧:
  

FROM    debian:jessie  
RUN    buildDeps
='gcc    libc6-dev    make'    \&&    apt-get    update    \&&    apt-get    install    -y    $buildDeps    \&&    wget    -O    redis.tar.gz    "http://download.redis.io/releases/redis-3.2.5.tar.gz"    \&&    mkdir    -p    /usr/src/redis    \&&    tar    -xzf    redis.tar.gz    -C    /usr/src/redis    --strip-components=1    \&&    make    -C    /usr/src/redis    \&&    make    -C    /usr/src/redis    install    \&&    rm    -rf    /var/lib/apt/lists/*    \  &&    rm    redis.tar.gz    \
  &&    rm    -r    /usr/src/redis    \
  &&    apt-get    purge    -y    --auto-remove    $buildDeps
  

  用Dockerfile构建docker的时候,可以用#添加注释,用\代表换行。。然后最后一句的auto-remove很重要,因为这一层的东西不会被下一层改变,所以要删除冗余的东西。
  每一个run是一层,一个不同的容器。也就是run cd app/      下一个run和上一个run木有关系,不是在app这个目录下的
  每一个 RUN 都是启动一个容器、执行命令、然后提交存储层文件变更。
  1、更新docker  docker更新      卸载docker  下载docker-compse
  2、安装docker-compose :  pip install docker-compose
  3、运行docker连接到代理 && 安装proxychains,  vim /etc/proxychains.conf更改配置
  docker-machine
  https://www.cnblogs.com/sparkdev/p/7044950.html
  首先远程电脑什么都不用安装,就是一个裸机
  然后,需要一个账号辅助我们。
  docker-machine就是,在本地,帮远程安装docker,当然还可以在本地远程控制他的docker
  eval $(docker-machine env [yourname])
  就可以远程控制docker
  docker-file中的那些
  COPY db dbrestore/db
  这样会新建dbrestore/db这个目录然后把workdir切换到这里
  如果用rsync -avz db root@95.163.202.160:rsync/db
  会是rsync/db/db

DSC0003.gif DSC0004.gif   

FROM mysql:5.7  

  
COPY db dbrestore
/db  

  
WORKDIR dbrestore
  

  
CMD mysql
-h${DC_DB_HOST} -uroot -p${MYSQL_ROOT_PASSWORD} ${MYSQL_DATABASE} < db/sql/latest_dump.sql  


因为这个有image  所以不用了,直接在dockerfile上弄。一定要有workdir
  jsp + tomcat + docker
  JSP书写
  项目目录 + tomcat in docker
  tomcat in docker random bug



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-599220-1-1.html 上篇帖子: oprenstack cloud init set password 下篇帖子: Go语言中slice使用注意事项
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表