新风花雪月 发表于 2018-9-21 09:24:50

docker使用

  1、参数大全
  1.1
  

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


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

  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来查看一个容器的信息。

  2.13:
  

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

--mounttype=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、更新dockerdocker更新      卸载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 )
  就可以远程控制docker
  docker-file中的那些
  COPY db dbrestore/db
  这样会新建dbrestore/db这个目录然后把workdir切换到这里
  如果用rsync -avz db root@95.163.202.160:rsync/db
  会是rsync/db/db

  

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]
查看完整版本: docker使用