玩转docker

玩转docker

你将学会什么?这是一个最小的闭环,可以动手别BB, 做一遍你会明白很多

  1. 可以把docker 运行起来;
  2. 可以定制化自己的容器;
  3. 怎样推送自己的镜像;
  4. 让你学会怎样写一个简单的dockerfile;

环境准备

从哪里下手? 先有一个docker 环境,至于docker 怎么搭建环境,请参考:docker 官方文档

为什么要自己构建镜像?

1.自己把测试环境装一遍? 这个时间成本太高,所以docker 镜像能让你快速的复制一个可用的测试环境;

构建自己的基础镜像

我们以python 为例,构建一个flask 的镜像环境,并推送到自己的镜像仓库;

如果没有镜像仓库怎么办? 到这里注册一个:https://www.docker.com/

实在不想注册,那本地玩玩也行,就不用管本文档里面介绍的登录和推送镜像仓库相关的步骤;

1.先从登录开始

docker login #默认登录的是 https://hub.docker.com , 如果你有自己搭建的仓库,后面可以跟自己仓库的地址
在这里插入图片描述

2.查找镜像

我们如果需要定制化一个自己的python 镜像,就需要先找一个合适的基础镜像;

docker search python #查找所有python 的镜像
docker search python:3.7.4 #查找指定版本的镜像

3.拉取镜像

既然找到了,那就把镜像拉到你自己的机器上

docker pull python:3.7.4 #第一次获取会比较慢,毕竟要下很多东西,截图里我是已经下过的,所以就会先从本地查找
在这里插入图片描述

4.有镜像了,怎么把容器跑起来?

docker run -d python:3.7.4 #这时会返回一个容器ID, 只需要前面一部分字符串就可以了, -d 是后台运行的命令参数

docker exec -it 6bee4548e3e7aa0b6388d6a bash #当你试图进入容器的时候,报错了
在这里插入图片描述

PS: 这是因为你docker run 的时候,容器会默认的执行它设置好的命令执行完,容器就结束了

要想自己手动的交互式的执行命令,那么你就需要使用 下面的命令:

docker run -d -it python:3.7.4  #多了 -it 参数,用来指定是手动执行命令
docker exec -it 4be1f2f8779439a6bda /bin/bash #docker exec -it 容器ID /bin/bash  进入容器手动执行命令,并指定 shell 的版本
python -V #查看python 版本
pip -V #查看pip版本

在这里插入图片描述

5.修改你的容器

已经进去了,接下来要做什么呢? 当然是安装你的flask 相关环境了;

那么假如你有一个依赖文件需要copy 到容器里面? 怎么搞

step1: 先退出容器,exit 命令就可以

step2: docker cp requirements.txt 4be1f2f8779439a6bda:/tmp #docker cp 文件名 容器ID前几位:容器里面的目录

step3: 进入容器,我们看下文件
docker exec -it 4be1f2f8779439a6bda /bin/bash
cd /tmp
ls
cat requirements.txt
在这里插入图片描述
step4: 开始安装 pip install -r requirements.txt
在这里插入图片描述

呦呦~~呦呦~

安装完了,接下来怎么搞? 简单写个flask页面吧

app.py
from flask import Flask
app = Flask(__name__)
 
@app.route('/')
def hello_world():
    return 'Hello, World!'
 
 
if __name__ == "__main__":
    app.run("0.0.0.0", 8080, True)

把它copy 到容器里面
docker cp app.py 4be1f2f8779439a6bda:/tmp
容器里面运行一下, 证明你的容器环境是OK 的
python /tmp/app.py
在这里插入图片描述

OK 没有问题,先退出容器:exit
我们来搞下一步,保存对容器的修改

docker commit -m “构建基础镜像” -a “安装flask环境” 4be1f2f8779439a6bda #把修改内容提交到容器里面,备注修改内容
docker images #查看新生成的副本
在这里插入图片描述
docker tag 51d96631de36 assless/you2b:python3.7.4 #docker tag 新副本容器ID 仓库地址:tag_name
在这里插入图片描述

推送到镜像仓库

docker push assless/you2b:python3.7.4 #assless/you2b 是镜像地址, python3.7.4 是tag名
在这里插入图片描述

镜像也提交了,接下来做什么?

6.写个dockerfile 运行一下

dockerfile
FROM assless/you2b:python3.7.4
 
MAINTAINER Arvin.liu@wayz.ai
 
EXPOSE 8080
 
WORKDIR /tmp
CMD python app.py

运行之前需要先build一下,把运行命令加进去
把dockerfile 和 需要用到的文件放到同一个干净的目录下

docker build -t flask_text .  #不要忘记最后的那个"." 点,命令需要和 dockerfile 在同一目录下执行

构建好了,那么我们来运行一下

docker run -d  -p 8089:8080 flask_test

那么最后见证奇迹的时刻到了,本地访问下 127.0.0.1:8089

你就能访问到容器里面的程序了~

7.善后处理

本地搞了一些测试的东西,需要删除掉

清理容器:

docker container ls #查看正在运行的容器
docker container stop  容器ID  #停止容器, 停止的容器,可以用: docker container start 容器ID 重新启动
docker container rm 容器ID #删除的就无法重新启动了
docker stop $(docker ps -a -q) #停止所有容器
docker rm $(docker ps -aq) #批量删除所有容器
docker rm $(docker ps -f "status=exited" -q) #删除状态是退出的容器

清理镜像:

docker images #查看本地的镜像
docker rmi 容器ID #注意如果有容器在使用这个镜像,那么你是删不掉的,需要先停止和删除容器(如果这个容器不再使用的话)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值