3. Docker学习之路 —— Docker常用命令
Posted 半路勇者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3. Docker学习之路 —— Docker常用命令相关的知识,希望对你有一定的参考价值。
Docker学习之路 —— Docker常用命令
1. Docker系统级命令
## 启动/重启Docker
systemctl start/restart docker
service docker start/restart
## 关闭Docker
systemctl stop docker
service docker stop
## Docker版本信息
docker version
## Docker更详细的信息,包括版本信息
docker info
## 帮助信息
docker help
docker COMMAND --help
2. Docker镜像命令
## 查看所有本地主机上的所有镜像
## --all / -a:显示所有镜像
## --quiet / -q: 只显示镜像ID
docker images
## Docker在仓库中搜索镜像
## --filter / -f:过滤查询:-f=STARS=3000
docker search [OPTIONS] 镜像名称
## 下载镜像
## -a:下载所有版本镜像
## :TAG:指定版本,若不指定,则下载latest最新版本。
docker pull [OPTIONS] 镜像名称[:TAG]
## 删除镜像 除(多个镜像使用空格分割)
## -f:强制删除
## 根据镜像ID删
docker rmi -f 镜像ID1 镜像ID2
## 根据镜像名称加版本删除
docker rmi -f 镜像名称:版本(默认latest)
## 删除所有镜像(骚操作)
docker rmi -f $(docker images -aq)
## 从容器创建一个新镜像
## -a="作者"
## -m="描述"
## -p:暂停运行容器后再提交
## -c:使用Dockerfile指令来创建镜像
docker commit [OPTIONS] 容器ID 镜像名称:TAG
## 将指定镜像保存成 tar 归档文件
docker save -o tar文件路径
## 导入使用 docker save 命令导出的镜像
docker load -i tar文件路径
## 查看镜像构建历史
docker history 镜像ID/镜像名称:TAG
3. Docker容器命令
## 运行镜像为容器
## --name="唯一别名":容器命名,用于区分容器
## -d:后台方式运行,相当于nohup。问题:docker容器没有前台进程执行,会自行退出,所以可以配合-it使用
## -it:使用交互方式运行,并且进入容器查看信息
## --rm:容器退出后自动删除(一般用于测试)
## -p: 主机端口:容器端口:宿主机端口映射容器端口,访问宿主机端口即可。
## -p:容器端口:指定容器端口
## -P:随机端口
## -v:宿主机目录:容器目录:权限 镜像ID/名称:数据卷指定路径挂载
## -v:卷名:容器目录:权限 镜像ID/名称:数据卷具名名挂载(/var/lib/docker/volumes/卷名)
## -v:容器目录:权限 镜像ID/名称:数据卷匿名挂载
## --volumes-from:容器ID/容器名称:继承容器的数据卷(可多个)
## -e:配置容器参数,例如Java程序:-e JAVA_OPTS="-Xms=64m,-Xmx=512m"
## --link:使前面的容器可以ping通后面的容器(反向则不行),例如:tomcat01 --link tomcat02
docker run [OPTIONS] 镜像名称
## 容器停止并退出
exit
## 容器不停止并退出
Ctrl + P + Q
## 查看运行中的容器
## -a:可以查看所有容器(包括历史容器和运行中的容器)
## -n=数字:显示多少条容器
## -q:只显示容器ID
docker ps [OPTIONS]
## 查看容器资源占用情况
## 查看所有容器的资源占用
docker stats
## 查看指定容器的资源占用
docker stats 容器ID
## 查看容器中的进程信息
docker top 容器ID
## 查看容器的元数据
docker inspect 容器ID
## 查看容器数据卷的元数据
docker volumes inspect 数据卷ID/数据卷名称
## 进入正在运行的容器
## 方式一:进入容器并打开新的终端(常用)
docker exce -it 容器ID
## 方式二:进入容器并打开正在运行的终端
docker attach 容器ID
## 将容器内文件复制到宿主机
docker cp 容器ID:容器内路径 宿主机路径
## 删除容器
## -f:强制删除
## 根据容器ID删除(不能删除运行中的,需要加-f参数)
docker rm [OPTIONS] 容器ID
## 删除所有容器(不能删除运行中的,需要加-f参数)
docker rm [OPTIONS] $(docker ps -aq)
## 启动/重启容器
docker start 容器ID
docker restart 容器ID
## 停止容器
docker stop 容器ID
## 强制停止容器
docker kill 容器ID
4. Docker网络
## 将容器连接到网络
docker network connect [OPTIONS] 网络名称 容器ID/容器名称
## 创建新的Docker网络。默认情况下,在Windows上会采用NAT驱动,在Linux 上会采用Bridge 驱动。可以使用 -d 参数指定驱动(网络类型)。
docker network create
## 断开容器的网络
docker network disconnect 容器ID
## 列出Docker主机上的所有Docker网络
docker network ls
## 删除Docker主机上所有未使用的网络
docker network prune
## 删除Docker的指定网络
docker network rm
5. Docker其它常用命令
## 查看日志
## -t: 显示时间戳
## -f: 跟随打印日志
## --tail 行数:显示多少行
docker logs [OPTIONS] 容器ID
## 登录
docker login 仓库地址(不指定,则默认https://registry.hub.docker.com/) -u 用户名 -p 密码
## 退出登录
docker logout 仓库地址(不指定,则默认https://registry.hub.docker.com/)
## 发布镜像
docker push DockerHub的用户名/镜像ID
注: 关闭Docker时警告:Stopping docker.service, but it can still be activated by:docker.socket怎么解决?
原因分析:这是因为除了docker.service单元文件,还有一个docker.socket单元文件,docker.socket这是用于套接字激活。该警告意味着:如果你试图连接到docker socket,而docker服务没有运行,系统将自动启动docker。
解决方法(关闭Docker socket):sudo systemctl stop docker.socket
建议:其实这是个挺人性化的设计,知道意思后,就不想采取什么干预了。
6. 命令练习一(nginx)
① 搜索nginx(为了确认nginx在docker仓库中是否存在)
docker search nginx
② 安装nginx镜像
docker pull nginx
③ 后台运行nginx镜像生成容器,容器命名为nginx01,
## 启动后就可以访问IP:8080,进入nginx首页
docker run -d --name nginx01 -p:8080:80 镜像ID/镜像名称:TAG
④ 进入nginx容器
docker exec -it nginx01 /bin/bash
⑤ 退出容器
## 退出容器
exit
⑥ 关闭nginx容器
docker stop 容器ID
## 或
docker kill 容器ID
⑦ 删除容器
docker rm 容器ID
⑧ 删除nginx镜像
docker rmi -f 镜像ID
## docker images存在image时,却无法删除怎么办?
cd /var/lib/docker/image/overlay2/imagedb/content/sha256
## 找到对应镜像删除即可
rm -rf xxxxxx
7. 命令练习二(Tomcat9.0,测试,容器退出即删)
① 直接运行tomcat镜像,容器退出即删除,镜像会保留通用部分层,需要手动删除镜像,一般用于测试使用。
docker run -it --rm -p 3443:8080 tomcat:9.0
② 注意问题
因为tomcat是阉割过的,已经被压榨到最小可用,所以访问时报404,所以想要访问到tomcat首页,需要进入tomcat容器,或将webapps删除,并将webapps.dist改为webapps,或将webapps.dist内容复制到webapps目录下。这样就可以访问到tomcat首页了。
以上是关于3. Docker学习之路 —— Docker常用命令的主要内容,如果未能解决你的问题,请参考以下文章