镜像操作

搜索镜像:docker search 关键字 例:docker search redis

拉取镜像:docker pull 镜像名称:镜像版本号 例:

  • docker pull redis #默认下载最新版本 (latest)

  • docker pull redis:5.0 #下载指定版本

查看镜像:docker images [选项]

  • docker images -a #列出所有镜像
  • docker images -q #只显示镜像ID

查看指定镜像信息:docker inspect 镜像ID 例:docker inspect 78612560eb20

本地镜像 添加新的标签:docker tag 名称:标签 新名称:标签

例:执行 docker tag redis:latest redis:5.0

删除镜像: 例:docker rmi 78612560eb20 #存在运行中的容器正在使用该镜像会失败

  • docker rmi 镜像ID

  • docker rmi 仓库名称:标签

删除多个:docker rmi 镜像ID1 镜像ID2

删除全部镜像:

导出镜像: docker save -o <输出文件路径.tar> <镜像名称>:<标签>

例:docker save -o myimage_latest.tar myimage:latest

导入镜像:

  • 使用docker load命令来从一个tar归档文件中加载镜像。
  • 使用docker import命令从一个文件系统归档(比如使用tar命令创建的归档)导入镜像

例:docker load --input image.tar
例:docker import files.tar my-new-image

创建镜像(基于容器):docker commit -m="描述信息" -a="作者" 容器id或名字 新镜像名:TAG

容器操作

启动一个新容器:docker run 参数 镜像名字 镜像中的命令 命令参数

  • -i,以交互模式运行容器,通常与 -t 同时使用
  • -t,启动容器后,为容器分配一个命令行,通常与-i同时使用
  • -v,目录映射,容器目录挂载到宿主机目录,格式: <host目录>:<容器目录>
  • -d,守护进程,后台运行该容器
  • -p,指定端口映射,格式:主机(宿主)端口:容器端口
  • -P,随机端口映射,容器内部端口随机映射到主机的端口
  • -u,以什么用户身份创建容器
  • --name "nginx-lb",容器名字
  • -m, --memory bytes,设置容器使用内存最大值
  • -h, --hostname string,指定容器的 host name
  • --dns 8.8.8.8,指定容器 dns 服务器
  • -e username="ritchie",设置环境变量
  • --restart,Docker 重启后,容器是否自动重启
  • --privileged,容器内是否使用真正的 root 权限

例:

docker run --name tomcat_1 tomcat:7 #使用镜像tomcat7启动新容器, 指定容器的名字是tomcat_1

docker run -d --name tomcat_1 tomcat:7 #使用镜像tomcat7启动新容器,后台运行, 指定容器的名字是tomcat_1

docker run -d -P --name tomcat_1 tomcat:7 #使用镜像tomcat7启动新容器, 后台运行,指定容器的名字是tomcat_1,随机分配宿主机端口映射

docker run -d -p 8888:8080 --name tomcat_1 tomcat:7 #指定宿主机端口

docker run -d -p 8888:8080 -v /usr/local/webapps:/usr/local/webapps -it --name tomcat77 tomcat:7 bash #指定宿主机的文件夹映射,后台运行,同时启动一个与容器交互的bash命令窗口

docker run -d --name jenkin_1 --privileged=true jenkins/jenkins #使用镜像 jenkins/jenkins 启动新容器,后台运行 赋予root权限

docker run -d --name --restart always jenkins/jenkins#设置自启动

操作一个已存在的容器:

docker start 容器id或容器名字 #启动

docker stop 容器id或容器名字 #停止

docker restart 容器id或容器名字 #重启

docker pause 容器id或容器名字 #暂停

docker unpause 容器id或容器名字 #恢复

进入容器(已停止的也可以进入)

  • docker exec -it 容器id或容器名字 /bin/bash 例:docker exec -it jenkins_1 bash

  • nsenter --target 容器进程id --mount --uts --ipc --net --pid

查看容器:

docker ps #显示正在运行中的容器

docker ps -a #显示全部容器(包含不在运行状态的)

查看容器(或镜像)详情:

docker inspect 容器id或镜像id 例: docker inspect 78612560eb20

docker inspect -f {{.State.Pid}} 容器id #得到容器的进程id

删除容器:

docker rm 参数 容器id或容器名字

docker rm -f 容器id或容器名字 #强行删除容器

docker rm $(docker ps -a -q) #删除全部容器

文件复制:

docker cp 容器id或容器名字:容器内路径 宿主机路径

例:docker cp 78612560eb20:usr/local/tomcat/README.md ./

容器的导入和导出:

导出:docker export 容器id > 文件名.tar

导入:docker import 导出的镜像文件名.tar 新镜像名称:标签