Docker日常究竟要怎么用?


最近在考C4认证,结果模拟卡在了Docker部署。我真的十分无语😓

我在Windows上面编辑的,踩了好多坑,耗了很多时间。

趁着下周考试前来写一下Docker在日常只能够究竟要怎么用:

本文首发于博客,观感更好 😃 https://hengy1.top/article/86cd1cda.html

我的Docker自学笔记 :CSDN博客,求个赞~

注意⚠️ : 原博客上已经更新了,去博客上看~

你能收获什么

下面这4项,除了玩复杂网络的,基本够了。

我把从本地 = > 云上 => 别的地方 都串通了

  • DockerFile使用
  • Docker上传仓库
  • docker-compose的编写与部署
  • 常用命令

DockerFile使用

这个是干嘛的? 简单来说就是你在本地写好了文件,然后写个DockerFile来打造你的专属Docker容器

也就是Centos上造个Ubuntu的感觉。我拿我的一个项目案例来说下。

首先呢创建一个Dockerfile文件,对!名字都是死的,当然你用-f也是行的,但是我懒得搞路径

其次呢,类似于 .gitignore你也要搞个.dockerignore这样就“加速”了,具体原因谷歌下。

好了到现在为止:开始写DockerFile 然后 命令参数到处都是 随便放个在这里

对了你在打包前记得开启docker服务哈~

下面是我的目录👇 目标是打包个Flask

这是我的目录

这里有几个天坑!

  1. COPY 过去的话文件就会自己创建相同名字,文件夹的话必须写一遍
  2. PYTHONPATH必须指定,不然的话就会说找不到Python模块,贼麻烦
  3. RUN尽量写一起,少建立层数,减小内存
  4. CMD的写法也要注意⚠️,不然只会执行最后一个
FROM python:3.9.5-slim
WORKDIR /
COPY requirements.txt /
COPY utils /utils
COPY src /src
COPY repo /repo
COPY model /model
COPY flask /flask
COPY __init__.py /
ENV FLASK_APP=/flask/app.py
ENV PYTHONPATH /
EXPOSE 8080
RUN pip install --upgrade pip && \
    pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
CMD flask run; python /src/app.py

开始部署打造自己的。

$ docker build -t csdn:v0.2 . # <名字>:<版本> . <= 注意这个点

$ docker image ls # 就能看到了 cfdac878807f 为csdn的

$ docker container run -d -p 8080:8080 cfdac878807f # 后台开启个container

$ docker container exec -it cfdac878807f sh # 交互式进入容器

Docker上传仓库

你打造出了自己的容器,自己在本地用肯定不够,放到云上,别人也能用对吧~

首先到仓库里面创建仓库 https://hub.docker.com/repositories

创建效果
$ docker login # 然后本地登陆下验证下你是你就好了

$ docker tag cfdac878807f <hub-user>/<repo-name>[:<tag>] # 给你将要上传的打上标签

$ docker push <hub-user>/<repo-name>:<tag> # 传到哪个仓库去 不写Tag就是最新的

到这里只要有网就能部署你的。

docker-compose的编写与部署

这个docker-compose又是干嘛的? 这个是你给别人的,别人有你这个

就能马上搭建出你想给他的环境。类似于sh脚本,很快就在另外机器上部署相同环境。

名字也是写死的 docker-compose.yml

version: "0.1"
services:
  mysql-server:
    image: mysql:latest
    networks:
      - demo-network

  flask-server:
    image: hengyisky/daily:latest
    networks:
      - demo-network
    ports:
      - 8080:8080

networks:
  demo-network:

这里就是吧 mysql 与自己的环境部署到一个子网里面,然后暴露端口直接用就行了。

$ docker-compose pull # 拉取需要的image

$ docker-compose up -d --build # 后台启动了直接用

# 对于已经在运行的container,更改了本地的文件之后呢还是可以继续使用 docker-compose up -d --build

常用命令

除了上面的命令;

$ docker container run -d -p 80:80 nginx # 后台运行创建一个nginx容器

$ docker run -it $(name) # 执行容器中的默认脚本

$ docker container exec -it $(id) sh # 交互式进入容器

$ docker system prune -f # 删除所有已经停止的容器

$ docker image prune -a # 删除所有没有使用的镜像

其实吧:Docker DeskTop已经可以实现点点点了。 https://www.docker.com/products/docker-desktop

image-20220219234504845
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值