docker使用

docker system prune -af --volumes

 https://github.com/kubernetes/minikube/issues/1043

1、参数大全

1.1

docker    run    -it    --rm    
          ubuntu:16.04
          bash

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

参数说明:

 1.2用dockerfile构建一个自己的镜像

文件名称:Dockerfile(只能是这个,可以改,但没必要)

文件内容:

FROM    nginx
RUN    echo    '<h1> vimi test without auto remove </h1>'    >    /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 
--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

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

原文地址:https://www.cnblogs.com/liuweimingcprogram/p/8461689.html