闲来无事,复习docker的时候,正好写一篇快速入门
基础环境
系统为centos7.7,发现没有docker,顺便安装下最新版本
#卸载docker及相关组件
yum remove -y docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
#设置 yum repository
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce #yum安装docker
systemctl enable docker #设置开机启动
systemctl start docker #启动docker
定义Dockerfile
dockerfile用来构建镜像的文本文件,文本内容为构建镜像所需要的指令和说明
定义一个超级简单的Dockerfile
[root@te1 app]# cat Dockerfile
FROM python:2.7-slim #跟面向对象语言的类一样,表示以哪个基础镜像定制
WORKDIR /data/docker/app #docker工作目录
COPY . /data/docker/app #复制当前文件到/data/docker/app目录
RUN pip install -r requirements.txt #在docker build时运行,此处通过pip安装flask
CMD ["python", "hello.py"] #在docker run时运行此命令
[root@te1 app]# cat requirements.txt
flask
[root@te1 app]# cat hello.py
#一个简单的flask web站点
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return 'hello world'
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8000)
通过Dockerfile编译镜像
cd /data/docker/app && docker build -t hello .
查看镜像
docker images
通过镜像运行一个容器
docker run -it -d --name 'first-hello' -p80:8000 hello
-it -i 标准输入,-t表示允许一个终端
-d 后台运行
--name 容器名字
-p 对外暴露端口,此处将docker的8000端口映射为80向外暴露
查看容器进程
docker ps -a
访问这个flask的web容器
[root@te1 app]# curl 127.0.0.1:80
hello world
进入容器
有些时候需要进入容器调试排查故障等
[root@te1 app]# docker exec -it first-hello bash
root@64660eb25be0:/data/docker/app# ls
Dockerfile dump.rdb hello.py requirements.txt
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。