Docker常用命令

镜像命令:

  • docker images ——查看本地仓库所有镜像

  • docker pull 镜像名:镜像tag(版本) ——从远程仓库拉取该镜像,不写版本默认latest

  • docker search 镜像名:镜像tag(版本) —— 远程仓库查找该镜像,不写版本默认latest

  • docker rmi 镜像名:镜像tag(版本) ——删除本地仓库镜像,不写版本默认latest

  • docker rmi -f 镜像名:镜像tag(版本) ——强制删除本地仓库镜像,不写版本默认latest

  • docker images -q ——查看所有镜像的id

  • docker rmi -f $(docker images [镜像名] -q) ——删除所有[镜像名的]镜像

例:docker rmi -f $(docker images tomcat -q) ——删除所有tomcat镜像

容器命令(常用):

  • docker run -d -p 本机端口号:容器端口号 --name 容器名 镜像id/镜像名:tag ——后台运行一个容器,并设置本地和容器内部的端口映射

例:docker run -d -p 8081:8080 --name tomcat01 tomcat:8.0 ——后台运行tomcat:8.0这个镜像,本机端口8081映射容器内部端口8080,容器名tomcat01。外部访问tomcat01路径:http://本地ip地址:8081

  • docker stop 容器id/容器名——停止正在运行的容器

  • docker start 容器id/容器名——启动停止的容器

  • docker restart 容器id/容器名——重启容器

  • docker pause 容器id/容器名——暂停一个容器

  • docker unpause 容器id/容器名——取消暂停

  • docker rm 容器id/容器名——删除容器

  • docker rm -f 容器id/容器名——强制删除容器

  • docker kill 容器id/容器名——杀死容器,和rm的区别是rm会让容器有个缓冲时间再关闭

  • docker ps -a ——查看所有容器

  • docker ps -aq ——查看所有容器的id

  • docker exec -it 容器id/容器名 bash ——进入一个容器内部,bash窗口操作

  • docker cp 文件 容器id/容器名:路径 —— 将本地文件拷贝到容器中

  • docker cp 容器id/容器名:文件 本地路径 ——将容器中的文件拷贝到本地

  • docker top 容器id/容器名——查看容器内运行进程

  • docker inspect 容器id/容器名——查看容器内部细节

  • docker run -v 本机绝对路径:容器路径——添加数据卷,清空容器内路径的内容

  • docker run -v 本机绝对路径:容器路径 ro——添加数据卷、容器内路径只读,清空容器内路径的内容

  • docker run -v 本机文件夹别名:容器路径——添加数据集、不清空容器内路径的内容

  • docker commit -m "描述信息" -a "作者" 容器id/容器名 镜像名:tag ——将容器打成镜像

  • docker save 镜像名:tag -o tar文件名——将镜像打成tar包

  • docker load -i tar文件——将tar文件加载为镜像

使用docker启动mysql

docker run -d -p 3306:3306 --name mysql01 --restart=always -v /home/lzh/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

docker pull mysql:5.7

解释:-d后台运行,-p端口映射,--name给容器起名字,--restart=always容器会随着docker引擎的重启动而重启动,-v设置容器数据卷持久化保存mysql数据,-e MYSQL_ROOT_PASSWORD=123456 设置mysql容器访问账号root密码123456

redisconfig下存放redis.conf 只需配置需要的内容如:

使用docker启动redis

第一种方式:

docker run -d -p 6379:6379 --name redis01 --restart=always -v /home/lzh/data/redis:/data redis:6.08 redis-server --appendonly yes

--appendonly yes 代表使用aof持久化,生成在/data文件夹下,同步到本机/home/lzh/data/redis

第二种方式:

docker run -d -p 6379:6379 --name redis01 --restart=always -v /home/lzh/data/redisconfig:/data redis:6.0 redis-server /data/redis.conf

appendonly yes  #开启aof持久化方案
appendfilename  aa.aof  #aof生成文件名

这样就会在本机redisconfig生成aa.aof文件到本机备份了

docker网络

用处:

容器间通信,当两个容器处于一个网桥上时可以互相发送请求,如:当两个tomcat容器,可以在容器内部使用 curl http://ip或容器名:8080互相访问

  • docker network create -d bridge 网络名称——创建网桥

  • docker network ls ——查看网络

  • docker network inspect 网络名——查看网络细节

  • docker network rm 网络名——删除网络

  • docker network prune ——删除没被使用的网络

  • docker run --network 网络名——运行容器时将容器加入到某个网络

  • docker network connect 网络名 容器名/容器id ——运行容器后将一个容器加入 一个网络

  • docker inspect 容器名/容器id 查看容器IP

docker容器启动时默认加入docker0网桥,只有在同一个网络下的容器才能互相访问,默认情况容器启动便可以互相访问。

docker 数据卷

  • docker volume create 数据卷别名——创建一个数据卷

  • docker volume ls——列出全部数据卷

  • docker volume rm 数据卷名称——删除数据卷

  • docker volume inspect 数据卷名称——查看数据卷详细信息

Dockerfile

Dockerfile就是docker镜像的描述文件

Docker-Compose

作用:管理容器,一次可以启动多个容器并且管理先后顺序、设置网络。一个正在运行的容器即是一个服务

下载docker-compose

sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose

添加可执行权限

sudo chmod +x /usr/local/bin/docker-compose

启动命令

docker-compose up

编写方式和Dockerfile类似,需要编写docker-compose.yml文件

示例(Dockerfile,docker-compose.yml同时使用):

创建一个最简单的SpringBoot的demo,连接mysql提供一个查询接口。

mysql连接url,其中mysql:3306中的mysql是服务名

jdbc:mysql://mysql:3306/dockertest?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true

Dockerfile:

FROM openjdk:8-jre
WORKDIR /home/lzh/
ADD ./demo-0.0.1-SNAPSHOT.jar ./demo.jar
EXPOSE 8989
ENTRYPOINT ["java","-jar"]
CMD ["demo.jar"]

docker-compose.yml

version:"3.3"
services:
    mysql:              #服务名
      image: mysql:8.0
      ports:
        - "3306:3306"    #端口映射
      networks:
        - demo            #设置网桥
      environment:
          MYSQL_ROOT_PASSWORD: 123456   #设置mysql访问账号密码
      volumes: "/home/lzh/mysql/bak:/var/lib/mysql" #设置mysql持久化
      restart: always          #随着docker重启动
     demo:                  #demo服务名
      build: ./            #Dockerfile方式构建,指定Dockerfile路径
      depends_on: mysql    #mysql服务启动差不多了再启动
      networks:
        - demo             #和mysql同一个网桥
      ports:
        - "8989:8989"       #暴露端口
networks:
  demo:               #docker-compose up执行时会先创建demo网桥

将demo的jar包和Dockerfile,docker-compose.yml放在同一个目录并进入该目录

执行docker-compose up

启动成功。接口也能正常访问。

更多请移步至中文手册:https://www.coonote.com/docker/docker-tutorial.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

生活低手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值