docker常用命令
镜像管理命令
指令 描述
ls 列出镜像
build 构建镜像来自Dockerfile
history 查看镜像历史
inspect 显示一个或多个镜像详细信息
pull 从镜像仓库拉取镜像
push 推送一个镜像到镜像仓库
rm 移除一个或多个镜像
prune 移除未使用的镜像。没有被标记或被任何容器引用的。
tag 创建一个引用源镜像标记目标镜像
export 导出容器文件系统到tar归档文件
import 导入容器文件系统tar归档文件创建镜像
save 保存一个或多个镜像到一个tar归档文件
load 加载镜像来自tar归档或标准输入
docker image --help
Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE #创建一个引用源镜像标记目标镜像
命令使用
保存归档镜像
docker image save centos:7 > centos7.3.tar
导出容器归档镜像
docker export ef1a0ce7db6e > busybos.tar
导入归档文件镜像
#################################################
容器命令使用
Usage: docker container COMMAND
Manage containers
Options:
ls 列出容器
inspect 显示一个或多个容器详细信息
attach 附加本地标准输入,输出和错误到一个运行的容器
exec 在运行容器中执行命令
commit 创建一个新镜像来自一个容器
cp 拷贝文件/文件夹到一个容器
logs 获取一个容器日志
port 列出或指定容器端口映射
stats 显示容器资源使用统计
top 显示一个容器运行的进程
update 更新一个或多个容器配置
stop/start 停止/启动一个或多个容器
rm 删除一个或多个容器
运行容器使用比较频繁的指令
docker container run -itd --name [容器名称] -p [8080:80端口映射] 镜像名称
指令 描述
-i, --interactive 交互式
-t, --tty 分配一个伪终端
-d, --detach 运行容器到后台
-a, --attach list 附加到运行的容器
-dns list 设置DNS服务器
-e, --env list 设置环境变量
-env-file list 从文件读取环境变量
-p, --publish list 发布容器端口到主机
-P, --publish-all 发布容器所有EXPOSE的端口到宿主机随机端口
-h, --hostname string 设置容器主机名
-ip string 指定容器IP,只能用于自定义网络
-link list 添加连接到另一个容器
-network 连接容器到一个网络
-mount mount 挂载宿主机分区到容器
-v, --volume list 挂载宿主机目录到容器
-restart string 容器退出时重启策略,默认no [always|on-failure]
-add-host list 添加其他主机到容器中/etc/hosts
资源限制指令 描述
-m,--memory 容器可以使用的最大内存量
--memory-swap 允许交换到磁盘的内存量
--memory-swappiness=<0-100> 容器使用SWAP分区交换的百分比(0-100,默认为-1)
--memory-reservation 内存软限制,Docker检测主机容器争用或内存不足时所激活的软限制,使用此选项,值必须设置低于—memory,以使其优先
--oom-kill-disable 当宿主机内存不足时,内核会杀死容器中的进程。建议设置了-
--memory 选项再禁用OOM。如果没有设置,主机可能会耗尽内存
--cpus 限制容器可以使用多少可用的CPU资源
--cpuset-cpus 限制容器可以使用特定的CPU
--cpu-shares此值设置为大于或小于默认1024值,以增加或减少容器的权重,并使其可以访问主机CPU周期的更大或更小比例
以上是常用选项
docker container run --help
Usage: docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]
Run a command in a new container
测试学
运行container
docker container run -itd --name bs:v1 busybox
进入container
docker container attach
退出 Ctrl+p+q 这样退出不容器不会推出否容器也会退出
容器内程序自动重启 端口容器内80暴露宿主机的89
docker container run -itd -p 89:80 --restart=always --name web3 nginx
查看容器的logs
docker container logs web1
查看资料使用状况
docker container stats web1
######################
容器的数据挂载容器 存储
Docker提供三种不同的方式将数据从宿主机挂载到容器中:volumes,bind mounts和tmpfs。
volumes:Docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)。
bind mounts:可以存储在宿主机系统的任意位置。
tmpfs:挂载存储在宿主机系统的内存中,而不会写入宿主机的文件系统。
管理卷:
# docker volume create nginx-vol
# docker volume ls
# docker volume inspect nginx-vol
用卷创建一个容器:
# docker run -d -it --name=nginx-test --mount src=nginx-vol,dst=/usr/share/nginx/html nginx
进入Nginx
docker exec -it nginx-test bash
查看
测试1
docker run -d -it --name=nginx-test -p 88:80 --mount src=nginx-vol,dst=/usr/share/nginx/html nginx
测试2
docker run -d -it --name=nginx-test1 -p 89:80 --mount src=nginx-vol,dst=/usr/share/nginx/html nginx
两个容器使用一个数据卷
# docker run -d -it --name=nginx-test -v nginx-vol:/usr/share/nginx/html nginx
清理:
# docker container stop nginx-test
# docker container rm nginx-test
# docker volume rm nginx-vol
注意:
1. 如果没有指定卷,自动创建。
2. 建议使用—mount,更通用。
官方文档:https://docs.docker.com/engine/admin/volumes/volumes/#start-a-container-with-a-volume
用卷创建一个容器:
# docker run -d -it --name=nginx-test --mount type=bind,src=/app/wwwroot,dst=/usr/share/nginx/html nginx
# docker run -d -it --name=nginx-test -v /app/wwwroot:/usr/share/nginx/html nginx
验证绑定:
# docker inspect nginx-test
清理:
# docker container stop nginx-test
# docker container rm nginx-test
注意:
1. 如果源文件/目录没有存在,不会自动创建,会抛出一个错误。
2. 如果挂载目标在容器中非空目录,则该目录现有内容将被隐藏。
官方文档:https://docs.docker.com/engine/admin/volumes/bind-mounts/#start-a-container-with-a-bind-mount
docker run --name lnmp-mysql -e MYSQL_ROOT_PASSWORD=gprs9527 -d mysql:v.5.7