docker的基本知识点

将当前目录下的所有内容复制到/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等语言环境的操作。否则,这一段我们就得这么写了:



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:应用所有的依赖



Flask


* 把上述内容,保存到当前目录里一个名叫“Dockerfile”的文件中:



$ ls
Dockerfile app.py requirements.txt


* 然后就可以制作镜像了



$ docker build -t helloworld .


* -t是给这个镜像起个名字,docker build会自动加载这个目录下的DockerFile。


## 2、查看镜像


* 执行完上面的语句后,可以通过docker image来看结果



$ docker image ls

REPOSITORY TAG IMAGE ID
helloworld latest 653287cdf998


## 3、启动镜像


* 接下来,可以使用这个镜像了,通过docker run命令来启动容器



$ docker run -p 4000:80 helloworld


* -p 4000:80 是用4000端口来映射容器中的应用的80端口,这样做的目的是,只要访问宿主机的 4000 端口;


## 4、查看启动的容器


* 启动容器后,可以通过docker ps看到启动的容器



$ docker ps
CONTAINER ID IMAGE COMMAND CREATED
4ddf4638572d helloworld “python app.py” 10 seconds ago


## 5、上传镜像


* 为了能够上传镜像,我首先需要注册一个 Docker Hub 账号,然后使用 docker login 命令登录。 接下来,我要用 docker tag 命令给容器镜像起一个完整的名字:



$ docker tag helloworld geektime/helloworld:v1


* 将"geektime"替换成你自己的 Docker Hub 账户名称,比如 zhangsan/helloworld:v1;其中,geektime 是我在 Docker Hub 上的用户名,它的“学名”叫镜像仓库(Repository);“/”后面的 helloworld 是这个镜像的名字,而“v1”则是我给这个镜像分配的版本号。  
 然后执行docker push



$ docker push geektime/helloworld:v1


* 这样,我就可以把这个镜像上传到 Docker Hub 上了。


## 6、进入容器,修改镜像


* 也可以通过docker exec命令,进入到容器中,对容器中的文件进行操作



$ docker exec -it 4ddf4638572d /bin/sh

在容器内部新建了一个文件

root@4ddf4638572d:/app# touch test.txt
root@4ddf4638572d:/app# exit


## 7、保存修改


* 还可以通过docker commit命令,把操作后的文件,保存到镜像中



#将这个新建的文件提交到镜像中保存
$ docker commit 4ddf4638572d geektime/helloworld:v2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值