Docker是什么?
“Docker”一词指代了多个概念,包括开源社区项目、开源项目使用的工具、主导支持此类项目的公司 Docker Inc.,以及该公司官方支持的工具。这些技术和公司的同名可能会造成混淆。
以下简要说明 Docker 以便区分:
- IT 软件”Docker”是支持创建和使用 Linux® 容器的容器化技术。
- 开源 Docker 社区致力于改进这类技术,并免费提供给所有用户,使之获益。
- Docker Inc. 公司凭借 Docker 社区产品起家,主要负责提升社区版本的安全性,并将技术进步与广大技术社区分享。此外,它还专门对这些技术产品进行完善和安全固化,以服务于企业客户。
- 借助 Docker,您可将容器当做轻巧、模块化的虚拟机来使用。同时,您还将获得高度灵活性,实现对容器的高效创建、部署及复制,并在环境之间迁移它们,从而有助于您针对云来优化应用。
镜像管理
搜索镜像
拉取镜像
查看本地镜像
1 2 3 4 5 6 7 8 9
| docker images
docker image ls
docker images -q 只列出镜像的id
docker images --format "{{.ID}}--{{.Repository}}" 格式化显示镜像
docker images --format " table {{.ID}}\t{{.Repository}}\t{{.Tag}}" 以表格形式显示
|
删除镜像
1 2 3 4
| docker rmi 镜像id
docker rmi `docker images -qa
|
导入镜像
1 2 3 4 5
| docker image load -i /opt/centos7.8.2003.tar
zstd -dc /opt/centos-stream9.tar.zst | docker image load
|
导出镜像
1 2 3 4 5 6 7
| docker image save centos-stream9:cs9 > /opt/centos-stream9.tar
docker image save centos-stream9:cs9 | zstd -o /opt/centos-stream9.tar.zst
|
查看镜像详细信息
1
| docker image inspect 镜像id
|
容器管理
启动容器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| docker run -p 85:80 nginx docker run -P nginx docker run -it --rm -d --name test --ip 192.168.159.152 容器id/名字 bash/sh
|
注意事项:
- docker run 等于创建加启动,如果镜像不存在在本地则会去下载镜像
- 容器内的进程必须处于前台运行状态,否则容器会直接退出
- 如果容器内,什么事也不做,容器也会挂掉,容器内,必须有一个进程在前台运行,例如
docker run nginx 容器会直接挂掉
进入容器
1
| docker exec -it 容器id bash
|
查看运行的容器
查看停止的容器
容器的重启、停止、启动
1
| docker restart/stop/start 容器id
|
查看容器的详细信息
1
| docker container inspect 容器id
|
查看容器端口转发情况
查看容器内进程信息
查看容器内资源
查看容器的具体信息
传输本地文件到容器中
1
| docker cp 本地文件路径 容器ID:容器中的存储路径
|
传输容器中的文件到本地
1
| docker cp 容器ID:容器中的路径 本地存储路径
|
退出容器
只删除容器,volume保留
1 2 3 4
| docker rm 容器id
docker rm -f 容器id
|
阻塞容器
用于阻塞 docker 容器,并在容器退出时打印退出码,当容器不在运行的时候,直接输出 0;可以用来监控容器是否正常退出。
删除容器,同时删除volume
1 2 3
| docker rm -v 容器ID
docker rm --volumes 容器ID
|
查看容器资源使用情况
1
| docker stats <container_name_or_id>
|
容器打包成镜像
1 2 3
| docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
docker commit -a 'LML' -m 'This is a container image' 容器ID 容器打包后的镜像名字:标签
|
| Option |
功能 |
| -a |
指定新镜像作者 |
| -c |
使用 Dockerfile 指令来创建镜像 |
| -m |
提交生成镜像的说明信息 |
| -p |
在 commit 时,将容器暂停 |
容器打包成tar包
1 2 3 4
| docker save -o tar包名称.tar 待打包镜像名称:待打包镜像版本
docker save -o mysql-lml-docker.tar mysql-lml-docker:v1.0
|
tar包载入镜像
1 2 3 4
| docker load [OPTIONS] tar包名称.tar
docker load -i mysql-lml-docker.tar
|
日志管理
查看容器日志
1 2 3 4 5
| docker logs 容器id
docker logs -f 容器id
|
网络管理
列出所有网桥
查看网络信息
1
| docker network inspect 网络类型
|
创建新的网桥
1
| docker network create --subnet=192.168.159.0/24 NetTest
|
删除创建的网桥
1
| docker network rm net_name
|
将容器加入自建网络中
1
| docker network connect 网络名称 容器名称
|
将容器退出自建网络中
1
| docker network disconnect 网络名称 容器名称
|
命名卷管理
列出所有的volume
删除未使用的volume
查看volume信息
1
| docker volume inspect 命名卷名字
|
删除volume
创建volume
1
| docker volume create 命名卷名字
|
进阶命令
查看所有的容器和镜像大小
回收悬空的镜像
删除所有已停用的容器
回收孤儿卷(无容器使用)
批量删除(网络,数据卷,镜像…)
1 2 3 4 5
| docker system prune
docker system prune -a
docker system prune -a --volumes
|
启停全部容器
1
| docker stop/start $(docker ps -aq -f "status=running/exited/created/paused")
|