docker的基本知识点

1、打包构建镜像

  • 用docker打包部署一个python用Flask框架启动的web服务;写好服务代码 app.py 后,进行以下操作:
  • 先写DockerFIle:
powershell 复制代码
# 使用官方提供的Python开发镜像作为基础镜像
FROM python:2.7-slim

# 将工作目录切换为/app
WORKDIR /app

# 将当前目录下的所有内容复制到/app下
ADD . /app

# 使用pip命令安装这个应用所需要的依赖
RUN pip install --trusted-host pypi.python.org -r requirements.txt

# 允许外界访问容器的80端口
EXPOSE 80

# 设置环境变量
ENV NAME World

# 设置容器进程为:python app.py,即:这个Python应用的启动命令
CMD ["python", "app.py"]
  • FROM 原语,指定了"python:2.7-slim"这个官方维护的基础镜像,从而免去了安装 Python等语言环境的操作。否则,这一段我们就得这么写了:
powershell 复制代码
FROM ubuntu:latest
RUN apt-get update -yRUN apt-get install -y python-pip python-dev build-essential
...
  • RUN 原语就是在容器里执行 shell 命令的意思。
  • WORKDIR,意思是在这一句之后,Dockerfile 后面的操作都以这一句指定的 /app 目录作为当前目录。
  • requirements.txt:应用所有的依赖
powershell 复制代码
Flask
  • 把上述内容,保存到当前目录里一个名叫"Dockerfile"的文件中:
powershell 复制代码
$ ls
Dockerfile  app.py   requirements.txt
  • 然后就可以制作镜像了
powershell 复制代码
$ docker build -t helloworld .
  • -t是给这个镜像起个名字,docker build会自动加载这个目录下的DockerFile。

2、查看镜像

  • 执行完上面的语句后,可以通过docker image来看结果
powershell 复制代码
$ docker image ls

REPOSITORY            TAG                 IMAGE ID
helloworld         latest              653287cdf998

3、启动镜像

  • 接下来,可以使用这个镜像了,通过docker run命令来启动容器
powershell 复制代码
$ docker run -p 4000:80 helloworld
  • -p 4000:80 是用4000端口来映射容器中的应用的80端口,这样做的目的是,只要访问宿主机的 4000 端口;

4、查看启动的容器

  • 启动容器后,可以通过docker ps看到启动的容器
powershell 复制代码
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED
4ddf4638572d        helloworld       "python app.py"     10 seconds ago

5、上传镜像

  • 为了能够上传镜像,我首先需要注册一个 Docker Hub 账号,然后使用 docker login 命令登录。 接下来,我要用 docker tag 命令给容器镜像起一个完整的名字:
powershell 复制代码
$ docker tag helloworld geektime/helloworld:v1
  • 将"geektime"替换成你自己的 Docker Hub 账户名称,比如 zhangsan/helloworld:v1;其中,geektime 是我在 Docker Hub 上的用户名,它的"学名"叫镜像仓库(Repository);"/"后面的 helloworld 是这个镜像的名字,而"v1"则是我给这个镜像分配的版本号。
    然后执行docker push
powershell 复制代码
$ docker push geektime/helloworld:v1
  • 这样,我就可以把这个镜像上传到 Docker Hub 上了。

6、进入容器,修改镜像

  • 也可以通过docker exec命令,进入到容器中,对容器中的文件进行操作
powershell 复制代码
$ docker exec -it 4ddf4638572d /bin/sh
# 在容器内部新建了一个文件
root@4ddf4638572d:/app# touch test.txt
root@4ddf4638572d:/app# exit

7、保存修改

  • 还可以通过docker commit命令,把操作后的文件,保存到镜像中
powershell 复制代码
#将这个新建的文件提交到镜像中保存
$ docker commit 4ddf4638572d geektime/helloworld:v2
  • 在通过docker push把新的镜像推到镜像库中
powershell 复制代码
$ docker push geektime/helloworld:v2

至此,docker的基本用法就介绍完了

相关推荐
黄毛火烧雪下3 小时前
【Ruby 】脚本和自动化语言 常用的内容
运维·自动化·ruby
小白不想白a4 小时前
【shell】每日shell练习:安全日志入侵检测/系统配置文件合规检查
运维·服务器
洛克大航海5 小时前
Linux 中新建用户
linux·运维·服务器
三口吃掉你6 小时前
Docker安装Elasticsearch、kibana、IK分词器
elasticsearch·docker·kibana·ik分词器
dehuisun6 小时前
jenkins流水线部署springboot项目
运维·jenkins
fly五行6 小时前
Windows 系统下使用 Docker 安装 Milvus 向量数据库
windows·docker·milvus
爱宇阳7 小时前
离线环境下运行 Docker 容器编排指南
docker·容器·eureka
蜜蜜不吃糖7 小时前
解决Vcenter告警datastore存储容量不足问题
linux·运维·服务器
东城绝神7 小时前
《Linux运维总结:基于ARM64+X86_64架构CPU使用docker-compose一键离线部署redis 7.4.5容器版分片集群》
linux·运维·redis·架构·分片集群
Java陈序员8 小时前
免费开源!一款操作 MySQL 和 MariaDB 的 Web 界面工具!
mysql·docker·php·mariadb