docker入门

命令

镜像命令
  • 镜像信息 docker images
    在这里插入图片描述
    repository 镜像名字
    tag 镜像标签
    image id 镜像id
    create 镜像创建时间
    size 镜像大小
    -a 显示所有镜像
    -q 只现实镜像id
  • 镜像搜索 docker search xxx
  • 镜像下载 docker pull xxx:版本
  • 镜像删除 docker rmi -f $(docker images -q mysql)
容器命令
  • 运行 docker run [可选参数] xxx
    • d 后台方式运行
    • it 交互式运行,进入容器内查看命令
    • p 指定容器端口
    • --name="Name" 设置容器名字,用来区分容器
  • 从容器中返回主机 exit(容器停止退出)
  • 容器不停止退出(CTRL+P+Q)
  • 列出所有运行的容器 docker ps(同样支持-a -q)
  • 移除容器 docker rm (-f 强制删除)
  • 启动重启停止杀死 docker start/restart/stop/kill 容器id
常见命令

如果前台没有服务,那么后台自动关闭、

  • 查看进程 docker top 容器id
  • 进入正在运行的容器
  • docker exec -it ceebc81e4789 /bin/bash #进入容器后开启一个新的终端
  • docker attach #不会启动新的进程
  • 将容器中的文件复制到主机中
    docker cp 容器id:容器中的文件 主机中的目录
实例:安装docker
docker pull nginx
# -d后台运行
# --name 为容器起名
# -p  外端口和内端口
# 外端口是宿主机端口
# 内端口是容器中的端口
docker run -d --name nginx01 -p 1234:80 nginx #注意内端口是80,不然不能访问

提交镜像(commit)

容器 --> 镜像

# -a 创建者
# -m 提交信息
 docker commit -a "chen" -m "add" 容器名字或者id 提交的镜像名

容器数据卷

将容器中的文件和宿主的文件双向绑定,只需要修改外部文件就可以修改容器中的文件,无需进入容器

# -v 外部目录:容器中目录 (双向绑定)【卷挂载】
# -e 配置环境 MYSQL_ROOT_PASSWORD=密码 (设置mysql密码)
 docker run --name mysql01 -d -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql

如果没有指明具体路径,默认在 /var/lib/docker/volumes

  • 具名挂载-v 卷名:容器内路径
  • 匿名挂在-v 容器内路径【不推荐】
  • ro/rw 只读(容器只读)/ 读写
    在这里插入图片描述

Dockerfile

就是命令脚本,通过Dockerfile来构建镜像

  • FROM 指定基础镜像
  • RUN 构建镜像时执行的命令 例RUN yum -y install vim
  • ADD 将本地文件加载到容器中
  • CMD 文件镜像构建完成后执行CMD ["ls","-a"]
  • ENV 设置环境变量
  • EXPOSE 暴露端口
  • WORKDIR 工作目录,构建时的目录都在这个目录下进行
  • CMD和ENTRYPOINT
    cmd 追加命令会替换cmd
    entrypoint 追加命令会直接追加在cmd后面
  • 构建命令
# add的本地文件在url中
# t tag
# Dockerfile 的具体路径 默认PATH/Dockerfile
docker build -f 指定目录 -t 名字:版本号 创建的位置 url

Docker网络

  • docker0 作为路由
    在这里插入图片描述
    每产生一个容器,就会生成一对网卡 负责容器和docker0互联,容器之间的连接时通过docker0之间的桥接实现
  • –自定义网络
    解决docker0无法ping名字的问题
# --subnet 设置子网
# --gatway 设置网关
docker network create --driver bridge --subnet 180.1.0.0/16 --gateway 180.1.0.1 网络名字
# 启动时使用自定义网络
# -P 随机选择一个端口号
# --net 使用特定网络
docker run -d -P --name tom03 --net mynet tomcat
  • 解决两个网络的容器相互连接问题
    通过给一个容器多个ip实现 docker network connect 网络名 容器名,这样网络会给容器分配一个ip,容器就可以来和这个网络建立连接
springboot打包docker
  1. 利用maven打jar包 mvn package
  2. 建立Dockerfile
FROM openjdk:8
COPY *.jar /app.jar
CMD ["--server.port=8000"]
EXPOSE 8000
ENTRYPOINT ["java","-jar","/app.jar"]

注意:

  • java:8拉取失败,最后使用了openjdk:8,
  • Dockerfile中设置的端口号需要和springboot中的配置文件一致
  1. docker build
  2. docker run

测试

  • curl localhost:port
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值