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
所以不用了,直接在dockerfile上弄。一定要有workdir
jsp + tomcat + docker