Docker 基础命令
- 启动docker
systemctl start docker
- 关闭docker
systemctl stop docker
- 重启docker
systemctl restart docker
- docker设置随服务启动而自启动
systemctl enable docker
- 查看docker 运行状态
systemctl status docker
如果是在运行中 输入命令后 会看到绿色的active
- 查看docker 版本号信息
docker version
docker info
- docker 帮助命令
docker --help
忘记了某些命令便可使用此进行查看与回顾
- 比如 咱忘记了 拉取命令 不知道可以带哪些参数 咱可以这样使用
docker pull --help
Docker 镜像命令
- 查看自己服务器中docker 镜像列表
docker images
- 搜索镜像
docker search 镜像名
搜索 STARS >9000的 mysql 镜像
docker search --filter=STARS=9000 mysql
- 拉取镜像
不加tag(版本号) 即拉取docker仓库中 该镜像的最新版本latest 加:tag 则是拉取指定版本
docker pull 镜像名
docker pull 镜像名:tag
如果搜索的镜像不知道tag的话,可以去docker官网查询docker官方镜像搜索
- 运行镜像
docker run 镜像名
docker run 镜像名:Tag
注意:
docker run 镜像名这种简单方式启动的话,只能临时启动,并不是后台启动;如果窗口关闭,镜像会自动停止。不过有持久运行 映射端口 设置容器别名 数据卷挂载等
- 查看docker当前的容器
镜像启动后都会有一个对应的容器
#查看当前运行的容器
docker ps#查看所有容器
docker ps -a
- 删除容器
docker rm 容器id
- 删除镜像
#删除一个
docker rmi -f 镜像名/镜像ID
#删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID
#删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)
注意:
如果镜像已经启动过(无论是运行状态还是终止状态),容器中已经存在改镜像,那么,先删除容器。
- 强制删除镜像
docker image rm 镜像名称/镜像ID
- 保存镜像
将我们的镜像 保存为tar 压缩文件 这样方便镜像转移和保存 ,然后 可以在任何一台安装了docker的服务器上 加载这个镜像
docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字
eg:
docker save tomcat -o /opt/data/docker/docker-image.tar
- 加载镜像
任何装 docker 的地方加载镜像保存文件,使其恢复为一个镜像
docker load -i 镜像保存文件位置
- Dockerfile创建镜像
语法:docker build [OPTIONS] PATH | URL | -
OPTIONS说明:
- **-build-arg=[] 😗*设置镜像创建时的变量;
- **-cpu-shares 😗*设置 cpu 使用权重;
- **-cpu-period 😗*限制 CPU CFS周期;
- **-cpu-quota 😗*限制 CPU CFS配额;
- **-cpuset-cpus 😗*指定使用的CPU id;
- **-cpuset-mems 😗*指定使用的内存 id;
- **-disable-content-trust 😗*忽略校验,默认开启;
- **f 😗*指定要使用的Dockerfile路径;
- **-force-rm 😗*设置镜像过程中删除中间容器;
- **-isolation 😗*使用容器隔离技术;
- **-label=[] 😗*设置镜像使用的元数据;
- **m 😗*设置内存最大值;
- **-memory-swap 😗*设置Swap的最大值为内存+swap,"-1"表示不限swap;
- **-no-cache 😗*创建镜像的过程不使用缓存;
- **-pull 😗*尝试去更新镜像的新版本;
- **-quiet, -q 😗*安静模式,成功后只输出镜像 ID;
- **-rm 😗*设置镜像成功后删除中间容器;
- **-shm-size 😗*设置/dev/shm的大小,默认值是64M;
- **-ulimit 😗*Ulimit配置。
- **-squash 😗*将 Dockerfile 中所有的操作压缩为一层。
- -tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
- -network: 默认 default。在构建期间设置RUN指令的网络模式
Docker容器相关命令
- 查看docker当前的容器
镜像启动后都会有一个对应的容器,就好比 咱java中的new出来对象(docker run 镜像产生一个该镜像具体容器实例),docker 容器的启动需要镜像的支持
#查看当前运行的容器
docker ps#查看所有容器
docker ps -a
- 运行容器
# -it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行) --name 给要运行的容器 起的名字 /bin/bash 交互路径
docker run -it -d --name 要取的别名 镜像名:Tag /bin/bash
例如我们要启动一个redis 把它的别名取为redis001 并交互式运行 需要的命令 —我这里指定版本号为5.0.5
#- 拉取redis 镜像
docker pull redis:5.0.5
#2.命令启动
docker run -it -d --name redis001 redis:5.0.5 /bin/bash
注意:
如果是这样启动的话,redis默认端口6379,只是占用了当前redis容器的6379端口。占用的6379端口 仅仅是在容器中内部本身的端口,与宿主机的6379端口并无联系
每一个 Docker容器都是独立和安全的应用平台(我们可以理解为,每一个docker容器都相当于在我们的服务器上占用资源然后开辟了属于自己的一个空间(也可以理解为服务器))
- 停止容器
# 先停止咱之前运行的 redis 容器
docker stop 容器名/容器ID
- 删除容器
#删除一个容器
docker rm -f 容器名/容器ID
#删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID
#删除全部容器
docker rm -f $(docker ps -aq)
- 容器端口与服务器端口映射
-p 宿主机端口:容器端口
eg:启动redis指定宿主机端口6380和容器端口6379
docker run -itd --name redis002 -p 6380:6379 redis:5.0.5 /bin/bash
注意:
一旦宿主机的端口被占用就不能再次被指定,因为宿主机的端口只能是1对1。
- 进入镜像容器
docker exec -it 容器名/容器ID /bin/bash
或者
docker attach 容器名/容器ID
- 退出镜像容器
exit
- 停止容器
docker stop 容器ID/容器名
- 重启容器
docker restart 容器ID/容器名
- 启动容器
docker start 容器ID/容器名
- kill 容器
docker kill 容器ID/容器名
- 容器文件拷贝
无论容器是否开启 都可以进行拷贝
#docker cp 容器ID/名称:文件路径 要拷贝到外部的路径 | 要拷贝到外部的路径 容器ID/名称:文件路径
#从容器内 拷出
docker cp 容器ID/名称: 容器内路径 容器外路径
#从外部 拷贝文件到容器内
docker cp 容器外路径 容器ID/名称: 容器内路径
- 查看容器日志
docker logs -f --tail=要查看末尾多少行 默认all 容器ID
- 容器开机自启
容器启动时添加参数--restart=always
该容器随docker服务启动而自动启动
docker run -itd --name redis002 -p 6380:6379 --restart=always redis:5.0.5 /bin/bash
或者
# 不想删除容器的话
docker update --restart=always 容器Id 或者 容器名
或
docker container update --restart=always 容器Id 或者 容器名
- 容器挂载
将容器内的数据与外部宿主机文件绑定起来,类似一个双持久化,当容器删除时,宿主机文件数据目录仍在,下次启动容器只要将数据目录指向宿主机数据所在位置即可恢复!
容器启动时添加参数-v 宿主机文件存储位置:容器内文件位置
如此操作,就将 容器内指定文件挂载到了宿主机对应位置,-v命令可以多次使用
,即一个容器可以同时挂载多个文件
v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置
# 运行一个docker redis 容器 进行 端口映射 两个数据卷挂载 设置开机自启动
docker run -d -p 6379:6379 --name redis505 --restart=always -v /var/lib/redis/data/:/data -v /var/lib/redis/conf/:/usr/local/etc/redis/redis.conf redis:5.0.5 --requirepass "password"
注意:
如果当前启动的容器没有挂载的话,容器被删数据会丢失。
- 更换容器名
docker rename 容器ID/容器名 新容器名
Docker 运维命令
- 查看docker工作目录
sudo docker info | grep "Docker Root Dir”
- 查看docker磁盘占用总体情况
du -hs /var/lib/docker/
- 查看Docker的磁盘使用具体情况
docker system df
- 删除 无用的容器和 镜像
# 删除异常停止的容器
docker rm `docker ps -a | grep Exited | awk '{print $1}'`
# 删除名称或标签为none的镜像
docker rmi -f `docker images | grep '<none>' | awk '{print $3}'`
- 清除所有无容器使用的镜像
注意:
此命令只是镜像无容器使用(容器正常运行)都会被删除,包括容器临时停止
docker system prune -a
- 查找大文件
find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr
- 查找指定docker使用目录下大于指定大小文件
本文作者:Java技术债务
原文链接:https://www.cuizb.top/myblog/article/1652539170
版权声明: 本博客所有文章除特别声明外,均采用 CC BY 3.0 CN协议进行许可。转载请署名作者且注明文章出处。
JVM内存泄漏和内存溢出的原因
JVM常用监控工具解释以及使用
Redis 常见面试题(一)
ClickHouse之MaterializeMySQL引擎(十)
三种实现分布式锁的实现与区别
线程池的理解以及使用
号外!号外!
最近面试BAT,整理一份面试资料,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。想获取吗?如果你想提升自己,并且想和优秀的人一起进步,感兴趣的朋友,可以在扫码关注下方公众号。资料在公众号里静静的躺着呢。。。
- 喜欢就收藏
- 认同就点赞
- 支持就关注
- 疑问就评论
一键四连,你的offer也四连
————————————————————————————————————————————————————————————————