Docker常用命令
镜像操作
搜索镜像: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 新镜像名称:标签