1、获取镜像:
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
例:docker pull ubuntu:16.04
2、运行:
docker run -it --rm \
ubuntu:16.04 \
bash
docker run 就是运行容器的命令。
-i:交互操作,-t:终端
--rm:容器推出后将其删除
Ubuntu:16.04 指用Ubuntu:16.04镜像作为基础启动容器
Bash :放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是bash
3、列出镜像
Docker image ls命令
列表包括仓库名、标签、镜像id、创建时间、所占用的空间。
4、虚悬镜像
docker image ls -f dangling=true
一般来说,虚悬镜像已经失去了存在的价值,可以随意删除,可以用下面的命令删除
Docker image prune
5、删除镜像
用ID删除镜像,一般取前3个字符以上,只要有区别于别的镜像就可以
docker image rm 501
docker image rm centos
#删除所有未运行的容器(已经运行的删除不了,未运行的就一起被删除了)
sudo docker rm $(sudo docker ps -a -q)
以命令行方式启动docker容器,并在退出时自动删除,使用bash作为当前shell
docker run -it --rm org.pzy/base_os:1.0 /bin/bash
6、用docker image ls 命令来配合
像其它可以承接多个实体的命令一样,可以使用docker image ls -q来配合使用docker image rm ,这样可以成批的删除希望删除的镜像。
例如,要删除所有仓库名为redis的镜像
docker image rm $(docker image ls -q redis)
或者删除所以在mongo:3.2之前的镜像:
docker image rm $(docker image ls -q -f before=mongo:3.2)
7、使用dockerfile定制镜像
以定制nginx镜像为例,这次我们使用dockerfiel来定制
mkdir mynginx
cd mynginx
touch dockerfile
其内容为:
FROM nginx
RUN echo ‘<h1>hello,docker!</h1>’ >/usr/share/nginx/html/index.html
注:run 运行的的一般放在一行
8、构建镜像
在Dockerfile文件所在目录执行:docker build -t nginx:v3 .
9、COPY复制文件
COPY <源路径>... <目标路径>
COPY ["<源路径1>",... "<目标路径>"]
例如:COPY package.json /usr/src/app/ (注:可以使用通配符,如pack*)
10、ADD更高级的复制文件
ADD可以复制并解压文件,如果不解压就不能使用ADD了。
11、CMD容器启动命令
CMD指令与run相似,也用两种格式
①shell格式: CMD <命令>
②exec格式: CMD ["可执行文件", "参数1", "参数2"...]
如果使用shell格式的话,实际的命令会被包装为sh -c的参数进行执行。比如:
CMD echo $HOME
在实际执行中,会将其变更为:
CMD [ "sh", "-c", "echo $HOME" ]
12、ENTRYPOINT 入口点
ENTRYPOINT 的格式和RUN指令格式一样,分为exec 格式和shell格式
当指定了ENTRYPOINT后,cmd的含义就发生了改变,不在是直接的运行其命令,而是将cmd的内容作为参数传给ENTRYPOINT指令,将变为:<ENTRYPOINT> "<CMD>"
场景一:让镜像变成像命令一样使用
假设我们需要一个得知自己当前公网ip的镜像,那么可以先用cmd来实现:
FROM ubuntu:16.04
RUN apt-get update\
&& apt-get install -y curl \
&& rm -rf /var/lib/apt/lists/*
CMD [ "curl", "-s", "http://ip.cn" ]
13、ENV设置环境变量
格式有两种:
ENV <key> <value>
ENV <key1>=<vlaue1> <key2=value2>…
这个指令很简单,就是设置环境变量而已,无论是后面的其他指令,如run,还是运行时的应用,都可以直接使用这里定义的环境变量。
例如:ENV VERSION=1.0 DEBUG=on \
NAME=”HAPPY FEET”
下列指令可以支持环境变量展开:
ADD COPY ENV EXPOSE LABEL USER WORKDIR VOLUME STOPSIGNAL ONBUILD
一些必要的命令:{
docker exec -it test-1 sh :进入一个正在运行的容器
docker run -it -d –name test-1 –network my-net busybox:运行容器并把busybox别名改为test-1,以后启动容器就可以使用别名启动了。并且把容器放在my-net网络上。
Docker network inspect bridge :来看改网络的详细信息
Docker run -it -d –link test-1 –name test-2 busybox:进入test-2,通过网络别名可以ping通test-1
用户自定义的桥接网络
Docker network create my-net(请参阅 docker network create reference或输出docker network create --help)
将一个正在运行的容器连接到现在自定义的网卡上。使用:docker network connect 命令
例如:将运行的my-nginx容器连接到已经存在的my-net网络上
Docker network connect my-net my-nginx
断开容器与自定义的网络连接。使用:docker network disconnect命令
例如:my-nginx容器与my-net网络断开连接
Docker network disconnect my-net my-nginx
Docker run -it -d –name test-1 –network my-net busybox
}
14、docker create :创建一个新的容器但不启动它
例如:使用docker镜像nginx创建一个容器,并将容器命名为my-runoob
docker create --name myrunoob nginx
15、Docker exec:在运行的容器中执行命令
-d :分离模式,在后台运行
-i :即使没有附加也保持stidin打开
-t :分配一个伪终端
例如:在容器 mynginx中以交互模式执行容器内/root/runoob.sh脚本
docker exec -it mynginx /bin/sh /root/runoob.sh
在容器mynginx中开启一个交互的终端
docker exec -i -t mynginx /bin/bash
16、Docker push :将本地的镜像上传到镜像仓库,要先登录到镜像仓库
例如:上传本地镜像myapache到镜像仓库中
docker push myapache
17、Docker build:用于使用dockerfile创建镜像
例如:使用当前目录的dockerfile创建镜像,标签为 runoob/ubuntu:v1
docker build -t runoob/ubuntu:v1 .
例如:使用URL github.com/creack/docker-firefox 的 Dockerfile 创建镜像
docker build github.com/creack/docker-firefox
例如:也可以通过-f Dockerfile 文件的位置
docker build -f /path/to/a/dockerfile .
18、Docker start/stop/restart:
docker start :启动一个或多个已经被停止的容器
docker stop :停止一个运行中的容器
docker restart :重启容器
19、Docker rm:删除一个或多少容器
-f:通过sigkill信号强制删除一个运行的容器
-l:一处容器间的网络连接,而非容器本身
-v:删除与容器关联的卷