Hello World

docker 常用命令

1. 容器生命周期管理

1.1 操作 image

-create : 根据image创建一个新的容器
-run : 根据image创建一个新的容器并运行

1.2 操作 container

-start : 启动容器
-stop : 停止容器
-restart : 重启容器
-pause : 暂停容器中的所有进程
-unpause : 恢复容器中的所有进程
-exec : 在运行中的容器执行命令,也可以进入容器内部

1.3 run

  从image创建容器并运行
  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
  -d: 后台运行容器,并返回容器ID;
  -i: 以交互模式运行容器,通常与 -t 同时使用;运行后就直接进入容器内部
  -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;运行后就直接进入容器内部
  --expose=[]: 开放一个端口或一组端口
  -P: 大写P,随机端口映射,容器内部端口随机映射到主机的端口
  -p: 指定端口映射,格式为:宿主机端口:容器端口。-p 8888:80  -p 8899:8080
  -v,将宿主机的目录映射的容器对应的目录;-v /data:/home/data
  -e env1="value1": 设置环境变量;-e env1="value1"  -e env2="value2"
  --env-file=[]: 从指定文件读入环境变量;
  --name: 为容器指定一个名称,--name=xxx,不指定则随机生成一个字符串;
  -h "hostname": 指定容器的hostname;

  --cpus=2 容器可以使用两个cpu
  --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
  -m=2014m :设置容器使用内存最大值为1024MB;

  --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
  --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
  --link=[]: 添加链接到另一个容器;
  --privileged=true 开启特权模式
  --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
        bridge: docker默认在宿主机创建一个docker0的bridge,所有的容器都连接docker0,再通过docker0和宿主机网络连接;
        host:容器共享主机的network namaspace,直接访问宿主机的网络,此时容器使用的端口默认为宿主机的端口,比如容器内的应用监听了80端口,则映射到宿                  
             主机上也是80端口,此时使用 -p -P 参数指定映射端口都是不生效的;
        container:容器共享其他容器的网络配置信息,k8s中的pod中多个容器时就是这种情况;
        none:容器有自己的network namespace,但是没有做任何网络配置

    k8s下host时配置:hostNetwork: true

示例:

  docker run 启动时参数放前面,镜像ID放在参数后面
  创建并启动容器
  docker  run  -d  -it  --net=host  <image_name>:<tag>  /bin/bash

  以sleep命令创建启动容器 
  --entrypoint后面是命令,命令最后是命令参数
  docker  run  -d  -it  --entrypoint="sleep" <image_name>:<tag>  600

1.4 exec

  在运行的容器中执行命令
  示例:docker exec -it <container_id> /bin/bash
  docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
  -d :分离模式: 在后台运行
  -i :即使没有附加也保持STDIN 打开
  -t :分配一个伪终端

2. 容器操作

2.1 ps

  列出容器
  docker ps  -a

2.2 logs

  获取容器日志
  docker logs [OPTIONS] CONTAINER
  -f : 跟踪日志输出
  -since :显示某个开始时间的所有日志
  -t : 显示时间戳
  --tail :仅列出最新N条容器日志

2.3 port

  查询容器的端口映射情况
  docker port [OPTIONS] CONTAINER [PRIVATE_PORT[/PROTO]]

2.4 export

  将容器导出为tar文件,包含镜像的当前信息
  export导出的镜像文件则用import加载,否则可能出现异常

  将镜像保存为tar文件
  docker export [OPTIONS] IMAGE
  docker export -o xxx.tar  <image_name>:<tag>
  -o : 归档的文件名

2.5 cp

  宿主机拷贝到容器
  docker  cp  filepath  <image_id>:filepath

  容器拷贝到宿主机
  docker cp <image_id>:filepath  filepath

2.5 inspect

  查看容器基本信息及GraphDriver,Mounts,Config,NetworkSettings相关信息。

  docker inspect  <container_id>

3. 镜像管理

3.1 images

  列出本地镜像
  docker images -a

3.2 build

  创建镜像
  以当前目录为基础目录,根据当前目录的 Dockerfile文件创建镜像,镜像名字为name,镜像tag为tag,后面的点(.)表示当前目录
  docker build -t name:tag .

3.3 history

  显示镜像的历史信息
  docker history [OPTIONS] IMAGE

3.4 rmi

  删除镜像
  docker rmi [OPTIONS] IMAGE [IMAGE...]
  docer rmi xxxx

3.5 save/load

  将镜像导出为tar文件,包含镜像的历史信息
  save导出的镜像文件则用load加载,否则可能出现异常

  将镜像保存为tar文件
  docker save [OPTIONS] IMAGE
  docker save -o xxx.tar  <image_name>:<tag>
  -o : 归档的文件名
  如果使用 image_id 导出镜像,导入的镜像没有 image_name 和 tag 信息

  根据tar文件创建镜像
  docker load [OPTIONS]
  docker load -i xxx.tar
  docker load < xxx.tar

3.6 import

  根据tar文件创建镜像
  docker import [OPTIONS]
  docker import -i xxx.tar
  docker import < xxx.tar

3.7 commit

  更新镜像版本,根据某个容器打包为新的镜像版本推送到本地仓库
  docker commit  -m <message>  -a <author>  <container_id> <image_name>:<tag>

3.8 push

  将本地镜像推送到远程仓库
  镜像有目录信息时需要带上目录信息
  docker  push  <image_name>:<tag>

3.8 tag

  对本地镜像进行重名名
  docker  tag  <image>  <image_name>:<tag>
  <image> 可以是 image_id,也可以是 image_name:tag,可以定位到具体镜像就行
  <image_name> 重命名后的 imahe_name 可以包含目录信息
  示例:docker  tag  ffelix/partition:v1.1  ffelix2/partition:1.2
posted @ 2020-07-02 17:33  小小忧愁米粒大  阅读(478)  评论(0编辑  收藏  举报
瞅啥瞅,好好看书