docker常用命令

docker 基础命令
启动docker systemctl start docker 关闭docker systemctl stop docker 重启docker systemctl restart docker docker设置随服务启动而自启动 systemctl enable docker 查看docker 运行状态 systemctl status docker 查看docker 版本号信息 docker version docker info docker 帮助命令 docker --help 比如 咱忘记了 拉取命令 不知道可以带哪些参数 咱可以这样使用 docker pull --help

镜像命令
查看镜像列表 docker images 搜索镜像docker search 镜像名 ex:

docker search --filter=STARS=9000 mysql

拉取镜像
不加tag(版本号) 即拉取docker仓库中 该镜像的最新版本latest 加:tag 则是拉取指定版本

docker pull 镜像名 
docker pull 镜像名:tag

删除镜像
1.删除一个 docker rmi -f 镜像名/镜像ID 2.删除多个 其镜像ID或镜像用用空格隔开即可 docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID 3.删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID docker rmi -f $(docker images -aq) 4.删除镜像docker image rm 镜像名称/镜像ID 保存镜像
将我们的镜像 保存为tar 压缩文件 这样方便镜像转移和保存 ,然后 可以在任何一台安装了docker的服务器上 加载这个镜像
命令:docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字 ex:

docker save tomcat -o /myimg.tar

加载镜像

任何装 docker 的地方加载镜像保存文件,使其恢复为一个镜像

docker load -i 镜像保存文件位置

容器命令
1.查看正在运行容器列表docker ps 2.查看所有容器 -----包含正在运行 和已停止的docker ps -a 3.运行一个容器
-it 表示 与容器进行交互式启动
-d 表示可后台运行容器 (守护式运行)
–name 给要运行的容器 起的名字
/bin/bash 交互路径
docker run -it -d --name 要取的别名 镜像名:Tag /bin/bash
例如我们要启动一个redis 把它的别名取为redis001 并交互式运行 需要的命令 —我这里指定版本号为5.0.5
#1. 拉取redis 镜像
docker pull redis:5.0.5
#2.命令启动
docker run -it -d --name redis001 redis:5.0.5 /bin/bash

#3.查看已运行容器
docker ps

4.停止容器
先停止咱之前运行的 redis 容器
docker stop 容器名/容器ID

5.删除容器
#删除一个容器
docker rm -f 容器名/容器ID
#删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID
#删除全部容器
docker rm -f $(docker ps -aq)

容器端口与服务器端口映射
命令:
-p 宿主机端口:容器端口
还是使用前方的 redis 镜像 尝试 将6379端口 映射到服务器的8888
如果成功了的话 那么咱们访问服务器的8888端口就会访问到咱们的 docker 中 的容器 redis002
-p 8888:6379 解析 将容器内部的 6379端口与docker 宿主机(docker装在哪太服务器 那台服务器 )8888 端口进行映射 那通过外部访问宿主机8888端口 即可访问到 docker 容器 6379 端口了
docker run -itd --name redis002 -p 8888:6379 redis:5.0.5 /bin/bash
进入容器
方式一 这里咱就进入 前面的 redis001容器
docker exec -it 容器名/容器ID /bin/bash

#进入 前面的 redis001容器
docker exec -it redis001 /bin/bash

退出容器
从容器内 退出到自己服务器中 需注意 两个退出命令的区别
#直接退出 未添加 -d(持久化运行容器) 时 执行此参数 容器会被关闭
exit
优雅退出 — 无论是否添加-d 参数 执行此命令容器都不会被关闭
Ctrl + p + q
-》停止容器
docker stop 容器ID/容器名
重启容器
docker restart 容器ID/容器名
启动容器
docker start 容器ID/容器名
kill 容器
docker kill 容器ID/容器名
容器文件拷贝
docker cp 命令用于在容器和本地文件系统之间复制文件/文件夹。
#从主机上拷贝文件到容器内
docker cp foo.txt mycontainer:/foo.txt
#从容器里面拷贝文件/目录到本地一个路径
docker cp Name:/container_path to_path
例如:
docker cp tomcat:usr/local/tomcat/README.md ./
查看容器日志
docker logs -f --tail=要查看末尾多少行 默认all 容器ID
容器自动重启
使用docker run命令时 添加参数–restart=always 便表示,该容器随docker服务启动而自动启动
docker run -d -p 8888:6379 --restart=always --name redis002 redis:5.0.5 /bin/bash

数据挂载
简单来讲,就是将容器内的数据与外部宿主机文件绑定起来,类似一个双持久化,当容器删除时,宿主机文件数据目录仍在,下次启动容器只要将数据目录指向宿主机数据所在位置即可恢复!
命令:
-v 宿主机文件存储位置:容器内文件位置
如此操作,就将 容器内指定文件挂载到了宿主机对应位置,-v命令可以多次使用,即一个容器可以同时挂载多个文件
-v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置
示例:
运行一个docker redis 容器 进行 端口映射 两个数据卷挂载 设置开机自启动

docker run -p 6379:6379 --name redis01 --restart=always -v /root/redis/redis.conf:/etc/redis/redis.conf -v /root/redis/data:/data -d redis redis-server /etc/redis/redis.conf

运行一个docker rabbitmq 容器 进行 端口映射 两个数据卷挂载 设置开机自启动

docker run --privileged=true -d -p 5672:5672 -p 15672:15672 --name rabbitmq -v /root/rabbitmq/docker_rabbitmq_data:/var/lib/rabbitmq --restart=always --hostname=rabbitmqhost rabbitmq:3.10-management

更换容器名
想给容器换个霸气炫酷吊炸天的名字?
docker rename 容器ID/容器名 新容器名
自己提交一个镜像
我们运行的容器可能在镜像的基础上做了一些修改,有时候我们希望保存起来,封装成一个更新的镜像,这时候我们就需要使用 commit 命令来构建一个新的镜像
docker commit -m=“提交信息” -a=“作者信息” 容器名/容器ID 提交后的镜像名:Tag

环境变量
docker run -d -e name=heimi -e like=run nginx

打包并推送至私仓

打包应用

mvn clean package -DskipTests

docker pull时指定源 docker pull 指定版本_运维

新建dockerfile

FROM java:8
ADD beimao-app-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar"]

docker pull时指定源 docker pull 指定版本_容器_02

打包镜像

docker build -t beimao:v1 .

测试运行

docker run -it --rm beimao:v1

docker pull时指定源 docker pull 指定版本_运维_03

阿里云免费私仓
https://cr.console.aliyun.com/cn-hangzhou/instances

$ docker login --username=lewowo123 registry.cn-beijing.aliyuncs.com
密码:by123456
$ docker tag [ImageId] registry.cn-beijing.aliyuncs.com/beiyou123/beimao:[镜像版本号]
$ docker push registry.cn-beijing.aliyuncs.com/beiyou123/beimao:[镜像版本号]
拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/206/beimao:[镜像版本号]