docker 理解及常用命令

因为要把一些服务进行 docker 部署,系统的学习了一下 docker 的使用,不说原理,网上很多,只记录一些命令
docker 类似于虚拟机,但是又不同于虚拟机,所有的容器以及镜像都是基于精简的 linux 系统进行展开(划重点,刚开始学习过程中一直在疑惑怎么跑起来一些服务的)
自定义镜像
获取镜像有两种方式,第一种
方式是从网上 pull 下来,然后根据要求更改(如果有现成的可以不改),第二种
方式,使用 Dockerfile 文件
一
获取
1 | docker pull ubuntu |
启动
1 | docker run -it -d --name test-ubuntu ubuntu |
这样就从 ubuntu 这个镜像上新建了一个容器
查看后台运行的容器
1 | docker ps |
进入
1 | docker attach 上方的id |
可以看到是一个精简的 Ubuntu 系统
安装完想要的东西后,生成新镜像(可选)
1 | docker commit --change='CMD ["python /app/Api.py"]' -c "EXPOSE 22" flask ubuntu |
其他命令后面补上
二
基于在 Dockerfile 中的指令,我们可以使用 Docker build
命令来创建镜像。通过减少镜像和容器的创建过程来简化部署。
以创建一个 python Flask 为例
新建一个目录,名称随意
1 | mkdir python |
输入以下内容
1 | #根镜像 |
注:re.txt 放在 python 目录下,是我 flask 环境的一些依赖,把程序源码同样拷贝到 python 目录,放在新建文件夹 test 目录下,
FROM
: 必不可少的命令,从某个镜像作为基。如 FROM
MAINTAINER
:标明该 Dockerfile 作者及联系方式,可忽略不写
RUN
:建立新的镜像时,可以执行在系统里的命令,如安装特定的软件以及设置环境变量。
ENV
:设置系统环境变量(注意:写在 /etc/profile 里的命令在 dockerfile 这里会不生效,所以为改成 ENV 的方式)
EXPOSE
:开放容器内的端口,但不和宿主机进行映射。方便在宿主机上进行开发测试。(如需映射到宿主机端口,可在运行容器时使用 -p host_port:container_port)
CMD
:设置执行的命令,经常用于容器启动时指定的某个操作。如执行自定义脚本服务,或者是执行系统命令。CMD 只能存在一条,如在 Dockerfile 中有多条 CMD 的话,只有最后一条 CMD 生效!
文件中每一条 RUN 命令都为一层,一次写完最好,详情 Google.com
1 | #构建 |
常用命令
启动服务
docker run -d -p 8080:8080 --name=api flask-api:latest python /app/Api.py
1 | //拉取镜像 |
- 标题: docker 理解及常用命令
- 作者: tsvico
- 创建于 : 2018-11-29 23:35:26
- 更新于 : 2021-03-06 20:21:07
- 链接: https://blog.tbox.fun/2018/ce28352e.html
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。