sudo usermod -a -G docker ubuntu
解决每次docker命令都需要sudo的问题
docker run hello-world
运行 hello-world 镜像
docker ps
docker ps 显示正在运行的镜像, docker ps -a 显示所有的镜像
docker images
查看本地有哪些镜像
docker images rm -f id
删除本地镜像
docker tag id repository:tag
修改 repository 和 tag
docker built -t repository:tag .
build docker file
docker run test
run test 镜像,停止后(ctrl-c, docker stop),在此docker run test 会报 已经有一个 test container的错误,可以使用 docker start test, 如果想 docker run test, 可以先 docker rm -f test 删除容器就可以了
docker stop test
启动一个容器
docker start test
启动 stop 的容器, 未run的容器 无法start
docker rm -f test
删除容器 test
docker stop `docker ps -qa`
停止所有容器
docker rm `docker ps -qa`
删除所有 stop 的image
docker images | grep none | xargs docker image rm
删除 所有 none images
docker logs likun_vp0_1 -f
查看指定容器的日志
DOCKER FILE 指令
FROM :
指定基本镜像
FROM
FROM :
FROM :
ENV abc=hello
指定环境变量
ENV abc=hello
ENV abc=bye def=$abc
ENV ghi=$abc
abc = bye, def = hello, ghi = bye
RUN
images build 时用的指令,在old image 基础上构建new image,通常用来 更新系统,安装软件等
RUN apt-get update && apt-get install -y \
bzr
cvs
git
mercurial
subversion
CMD
docker start 后的命令,如果有多条,只有最后一条被执行,可以被 docker run 的 command 覆盖
ENTRYPOINT
docker start 后的命令, shell 模式会覆盖任意的 cmd, docker run comand, exec 模式可以配合 CMD 附加的那种模式进行 默认参数设定
exec, shell 模式区别
exec: ["executable", "param1", "param2", ...]
直接执行二进制文件,不会打开shell,所以环境变量得不到
shell :
会从 shell中执行,可以得到环境变量
addition: ENTRYPOINT 和 RUN 都只有 exec, shell 两种模式,
cmd有另外一种附加模式,可以用来配合 ENTRYPOINT 的
exec模式进行有默认参数的设定
LABEL
LABEL multi.label1="value1" multi.label2="value2" other="value3"
可使用docker inspect 查看,管理工具可通过label对container进行管理
MAINTAINER
不推荐使用,推荐使用 label 代替
LABEL maintainer "[email protected]"
EXPOSE
对外暴露端口,可使用 -p 参数, network 等功能代替
ENV
设置环境变量
ADD
two forms
. ADD src dst
. ADD ["src", "dst"] (this form is required for paths containing whitespace)
支持 * ? 等match模式, dst / 绝对路径, xx/ 相对路径,相对于workdir
COPY
. COPY ...
. COPY ["",... ""] (this form is required for paths containing whitespace)
add 相对于copy 多2点功能
1. ADD 的可以为URL
2. ADD 到container的tar文件会被自动解压,并删除原tar文件。
VOLUME
目录挂载,可使用-v参数,docker-compose 配置 等方式代替
WORKDIR
指定工作目录
USER
设定容器 用户 uid 等
network
docker network ls
查看网络
docker network inspect bridge
查看 使用 bridge 网络的容器
docker inspect --format='{{json .NetworkSettings.Networks}}' db
查看 db 容器的网络情况
docker network create -d bridge my-bridge-network
使用 bridge 创建一个新的网络 my-bridge-network
docker run -d --net=my-bridge-network --name db training/postgres
--net 指定使用那个网络
docker network connect my-bridge-network web
web 容器加入 my-bridge-network 网络