docker入门之常用命令

docker命令:
帮助信息:
docker --help
docker command --help    #比如 docker run --help
docker info                         #显示docker的安装信息,及运行状态
docker version                    #版本版本信息
 
配置文件路径:
/etc/sysconfig/docker 

docker镜像及容器目录
主目录:/var/lib/docker
容器存放目录:/var/lib/docker/containers/
镜像存放目录:/var/lib/docker/image

容器,镜像导入导出
docker export 容器ID > container.tar #导出容器 migrate.tar,相当于快照
docker import container.tar - test/ubuntu         #导入 镜像 ,镜像名字为test/ubuntu,load不可以指定名字
cat container.tar| docker import - test/ubuntu #导入镜像,镜像名字为test/ubuntu,load不可以指定名字

docker save -o image.tar 镜像ID                 #将一个镜像导出为文件,会保存镜像的所有记录
docker load --input image.tar             #导入image.tar到本地镜像,import可以指定名字
docker load < image .tar                 #导入image.tar到本地 镜像,import可以指定名字

docker commit 容器 ID 新镜像名         将容器持久化为一个镜像
-a, --author=""                  #作者 
-m, --message=""             #注释
        -p                                        #在commit是,暂停容器执行

发布
$ docker image tag [imageName] [username]/[repository]:[tag] #打标签
$ docker image tag koa-demos:0.0.1 ruanyf/koa-demos:0.0.1 # 实例
$ docker image build -t [username]/[repository]:[tag] .             #也可以不标注用户名,重新构建一下 image 文件。
$ docker image push [username]/[repository]:[tag]         #最后,发布 image 文件。


docker search -s 100 centos   #搜索镜像centos,-s :搜索星标至少为100的镜像
docker inspect 镜像ID #查看镜像内边信息
docker restart 容器ID #重启镜像
docker pull image_name #下载镜像
docker ps #列出当前所有正在运行的container  
docker ps -a #列出所有的container  
docker ps -l #列出最近一次启动的container     
docker attach 容器ID #连接到启动的容器
docker exec -it 容器ID /bin/bash #连接到启动的容器
docker extc -it 容器ID 命令 #在容器里执行命令,并输出结果
docker logs 容器ID #输出容器日志
-f:实时输出
docker cp 容器ID:path hostpath #复制容器内的文件到宿主机目录上
docker rm 容器ID #删除container
- f:如果容器正在运行,则强行终止并删除
-v:删除容器挂载的数据卷,默认情况下删除容器不会删除数据卷,要删除一个数据卷,必须在删除最后一个挂载该数据卷的容器时使用 -v 参数
docker rm `docker ps -a -q` #删除所有容器
docker kill `docker ps -q`
docker rmi `docker images -q -a`
docker wait 容器ID #阻塞对容器的其他调用方法,直到容器停止后退出
docker top 容器ID #查看容器中运行的进程
docker diff 容器ID #查看容器中的变化
docker inspect 容器ID #查看容器详细信息(输出为Json)
-f:查找特定信息,如docker inspect -f '{{ .NetworkSettings.IPAddress }}'
docker port 容器ID 5000 #查看容器的5000端口对应本地机器的IP和端口号


image:

$ docker image ls -a         # 列出本机的所有 image 文件。
$ docker image rm [imageName]         # 删除 image 文件
$ docker image pull library/hello-world         #将 image 文件从仓库抓取到本地。
上面代码中,docker image pull是抓取 image 文件的命令。library/hello-world是 image 文件在仓库里面的位置,其中library是 image 文件所在的组,hello-world是 image 文件的名字。由于 Docker 官方提供的 image 文件,都放在library组里面,所以它的是默认组,可以省略。因此,上面的命令可以写成这样。$ docker image pull hello-world
$ docker image build -t koa-demo:0.0.1 . # 创建image 文件,会用到 dockerfile文件,在后面有简要介绍
    .        #注意最后有一个 "."代表本地路径
    -t     #指定image名字
    :     # 冒号后面可以添加标签


container:(命令中有的会不加container 选项)
$ docker container ls #列出本机正在运行的容器
$ docker container ls --all #列出本机所有容器,包括终止运行的容器
$ docker container kill [containID] #终止容器
$ docker container rm [containerID]#删除终止运行的容器
$ docker container run -p 8000:3000 koa-demo #运行容器
  • -p 8000:3000 #容器的 3000 端口映射到本机的 8000 端口。
  • -d #容器启动后,在后台运行
  • -it                         #容器的 Shell 映射到当前的 Shell,然后你在本机窗口输入的命令,就会传入容器。###
  • koa-demo:0.0.1         #image 文件的名字(如果有标签,还需要提供标签,默认是 latest 标签)。
  • /bin/bash #容器启动以后,内部第一个执行的命令。这里是启动 Bash,保证用户可以使用 Shell。
  • --name flp #容器的名字flp
  • --rm #容器终止运行后自动删除容器文件。
  • --volume "$PWD/":/var/www/html #将当前目录($PWD)映射到容器的/var/www/html(Apache 对外访问的默认目录)。因此,当前目录的任何修改,都会反映到容器里面,进而被外部访问到,可指定多个;
  • --volume /var/www/html                                   #在容器内部创建一个共享数据卷,数据卷只有在未被任何容器使用时才能被删除
  • --volume-from 容器ID                                        #挂载容器ID中的共享数据卷,实现在容器内部共享数据卷
  • -v #同--volume
  • :ro  #只读,"$PWD/":/var/www/html:ro
  • --env MYSQL_ROOT_PASSWORD=123456 #向容器进程传入一个环境变量MYSQL_ROOT_PASSWORD,该变量会被用作 MySQL 的根密码。
  • --env MYSQL_DATABASE=wordpress #向容器进程传入一个环境变量MYSQL_DATABASE,容器里面的 MySQL 会根据该变量创建一个同名数据库(本例是WordPress)
  • --link wordpressdb:mysql         #表示 WordPress 容器要连到wordpressdb容器,冒号表示该容器的别名是mysql
  • -p 127.0.0.2:8080:80                 #将容器的 80 端口映射到127.0.0.2的8080端口
  • -P         #随机映射一个端口
  • --cpuset-cpus=0-3         #设定容器可以使用哪些主机上的cpu核心,0-3:表示0核~3核,4个核心,1,2:表示1核和2核
  • --memory=104857600      #可以使用主机内存的上限,单位是B,这里表示100M 1024B * 1024B * 100

$ docker container start [containerID] #前面的docker container run命令是新建容器,每运行一次,就会新建一个容器。如果希望重复使用容器,就要使用docker container start命令,它用来启动已经生成、已经停止运行的容器文件。
$ bash container stop [containerID] #前面的docker container kill命令终止容器运行,相当于向容器里面的主进程发出 SIGKILL 信号。而docker container stop命令也是用来终止容器运行,相当于向容器里面的主进程发出 SIGTERM 信号,然后过一段时间再发出 SIGKILL 信号。这两个信号的差别是,应用程序收到 SIGTERM 信号以后,可以自行进行收尾清理工作,但也可以不理会这个信号。如果收到 SIGKILL 信号,就会强行立即终止,那些正在进行中的操作会全部丢失。
$ docker container logs [containerID] #命令用来查看 docker 容器的输出,即容器里面 Shell 的标准输出。如果docker run命令运行容器的时候,没有使用-it参数,就要用这个命令查看输出。
$ docker container exec -it [containerID] /bin/bash #docker container exec命令用于进入一个正在运行的 docker 容器。如果docker run命令运行容器的时候,没有使用-it参数,就要用这个命令进入容器。一旦进入了容器,就可以在容器的 Shell 执行命令了。
$ docker container cp [containID]:[/path/to/file] . #docker container cp命令用于从正在运行的 Docker 容器里面,将文件拷贝到本机。下面是拷贝到当前目录的写法。

dockerfile 文件实例,docker image build时会用到

FROM node:8.4
COPY . /app
WORKDIR /app
RUN npm install --registry=https://registry.npm.taobao.org
EXPOSE 3000
CMD node demos/01.js

  • FROM node:8.4:该 image 文件继承官方的 node image,冒号表示标签,这里标签是8.4,即8.4版本的 node。
  • COPY . /app:将当前目录下的所有文件(除了.dockerignore排除的路径),都拷贝进入 image 文件的/app目录。
  • WORKDIR /app:指定接下来的工作路径为/app。
  • RUN npm install:在/app目录下,运行npm install命令安装依赖。注意,安装后所有的依赖,都将打包进入 image 文件。
  • EXPOSE 3000:将容器 3000 端口暴露出来, 允许外部连接这个端口。
  • 它表示容器启动后自动执行node demos/01.js
  • RUN命令在 image 文件的构建阶段执行,执行结果都会打包进入 image 文件;CMD命令则是在容器启动后执行。另外,一个 Dockerfile 可以包含多个RUN命令,但是只能有一个CMD命令。
注意,指定了CMD命令以后,docker container run命令就不能附加命令了(比如前面的/bin/bash),否则它会覆盖CMD命令。现在,启动容器可以使用下面的命令。

猜你喜欢

转载自blog.csdn.net/fenglepeng/article/details/80185574