docker命令(常用、简洁)

最近618活动抢了一个腾讯云服务器,购买地址,120买一个2核4g的很划算了。我选择的镜像是centOS自带docker的版本。操作的控制台也包含了容器操作,感觉很方便:
在这里插入图片描述
在此记录一下docker的简单操作命令吧:

镜像操作

相关命令:

  • docker images 查看当前docker下的镜像。

  • docker rmi 删除镜像,后面跟镜像名称。eg: docker rmi redis:5.0.15

  • docker pull 拉取镜像,后面跟镜像名称,这个通常在dockerHub里面查找镜像。eg: docker pull redis:5.0.15

  • docker push 推送镜像

  • docker save 保存镜像为一个压缩包,eg:docker save -o redis.tar myRedis

  • docker load 从压缩包中加载进行,相当于本地的pull。eg:docker load -i redis.tar

一图胜千言:
在这里插入图片描述

容器相关命令

容器有些java new出来的实例对象了。相关命令如下:

  • docker run 这个命令是最常用的最基础的了,如下解释:
    eg:docker run --name myNginx -p 80:80 -d nginx

docker run :创建并运行一个容器
–name : 给容器起一个名字,比如叫做mn
-p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
-d:后台运行容器
nginx:镜像名称,例如nginx

  • docker logs 查看容器日志命令,加-f为持续
  • docker ps 查看容器状态,加-a看所有
  • docker exec -it mn bash 进入容器内部,平常不这样用
    在这里插入图片描述
  • docker rm 删除容器,添加-f强制删除

eg:创建并运行一个redis容器,并且支持数据持久化
docker run --name redis -p 6379:6379 -d redis redis-server --appendonly yes

数据卷操作

数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。
在这里插入图片描述
基本命令如下:
docker volume [COMMAND]
在这里插入图片描述
数据卷挂载操作
把容器内部的数据和外部(宿主机)上的数据关联起来,修改外部数据,内部数据也发生变化。比如把nginx内部的html文件挂载出来:
在这里插入图片描述
命令如下:
docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx

Dockerfile自定义镜像

常见的镜像在DockerHub就能找到,但是我们自己写的项目就必须自己构建镜像了。
而要自定义镜像,就必须先了解镜像的结构才行。
镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。

我们以MySQL为例,来看看镜像的组成结构:
在这里插入图片描述

简单来说,镜像就是在系统函数库、运行环境基础上,添加应用程序文件、配置文件、依赖文件等组合,然后编写好启动脚本打包在一起形成的文件。
我们要构建镜像,其实就是实现上述打包的过程。

dockerFile语法:
构建自定义的镜像时,并不需要一个个文件去拷贝,打包。
我们只需要告诉Docker,我们的镜像的组成,需要哪些BaseImage、需要拷贝什么文件、需要安装什么依赖、启动脚本是什么,将来Docker会帮助我们构建镜像。

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。
在这里插入图片描述
自己写的一个java项目build需要的dockerfile(基于java:8-alpine作为基础镜像):

# 指定基础镜像
FROM java:8-alpine
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local

# 拷贝java项目的包
COPY ./studio-city-1.0.jar /opt/CJY/docker-demo/app.jar

# 暴露端口
EXPOSE 8080
# 入口,java项目的启动命令
ENTRYPOINT java -jar /opt/CJY /docker-demo/app.jar

放入一个文件夹中的运行命令:

docker build -t javaweb:1.0 .

DockerCompose部署分布式应用

Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。格式如下:

version: "3.8"
 services:
  mysql:
    image: mysql:5.7.25
    environment:
     MYSQL_ROOT_PASSWORD: 123 
    volumes:
     - "/tmp/mysql/data:/var/lib/mysql"
     - "/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf"
  web:
    build: .
    ports:
     - "8090:8090"

上面的Compose文件就描述一个项目,其中包含两个容器:

  • mysql:一个基于mysql:5.7.25镜像构建的容器,并且挂载了两个目录
  • web:一个基于docker build临时构建的镜像容器,映射端口时8090

DockerCompose的详细语法参考官网:DockerCompose语法

详细使用请参考我的另一篇文章:使用DockerCompose搭建es集群:

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值