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的基本用法就介绍完了

相关推荐
赵庆明老师5 小时前
.net framework 的项目部署到docker
docker·eureka·.net
西格电力科技5 小时前
光伏策略控制服务器如何成为电站智慧转型的中枢与关键一步?
运维·服务器·人工智能·分布式·能源
恒创科技HK5 小时前
香港云大宽带服务器常见的配置及价格参考
运维·服务器
默|笙5 小时前
【Linux】进程(3)状态
linux·运维·服务器
_OP_CHEN5 小时前
【Git原理与使用】(三)Git 分支管理终极指南:从基础操作到企业级实战,解锁高效协作密码
linux·运维·git·git分支管理·企业级组件·企业协作
meng_ser5 小时前
基于Linux内核模块的进程与内存监控工具(CentOS 7实现)
linux·运维·centos
irisart5 小时前
第一章【基石与起源】—— 编译、安装与配置
运维·nginx·angie
Lethehong5 小时前
算力新标杆:昇腾Atlas 800T NPU实战Llama-2-7b全流程评测与技术解析
运维·服务器·数据库·llama-2-7b·昇腾atlas 800t
wanhengidc5 小时前
云手机中都运用到了哪些技术
运维·服务器·科技·智能手机·云计算
weixin_46685 小时前
K8S-Deployment
云原生·容器·kubernetes