导航
- docker概念
- 手动从镜像运行一个容器
- 应用dockerfile打包镜像
- 应用compose部署多容器利用
- 给docker加上数据长久
- docker在服务器部署
- docker继续集成和部署
手动从镜像运行一个容器
手动启动一个容器
手动在本地电脑的docker容器中运行一个web利用``` sh # 上面的命令启动一个docker容器 docker run -d -t -p 8000:5000 --name demo ubuntu:18.04 # 这条命令的解释 -d 的意思是让容器在后盾运行 -t 极少能用到,用于让一个空白的Ubuntu镜像在后盾运行 -p 用于指定端口映射,示意在本机拜访8000会被主动转到容器中5000端口 必须保障本机没有其余应用程序占用了8000端口,否则这里会失败 --name demo 制订了容器的名字是demo ubuntu:18.04 是启动容器时用的镜像名, docker会主动从镜像服务器去下载这个镜像```
启动容器常见的问题
# 启动一个端口为3456的过程 docker run -t -d -p 3456:5000 --name test ubuntu:18.04 # 报错1,端口被占用,删除test容器来不安比3456端口的占用 docker rm -f test # 报错2,名字已存在, 那么改名字, 也能够用下面的删除容器命令 docker run -t -d -p 3456:5000 --name test1 ubuntu:18.04
对于容器相干的命令
# 列出本机正在运行的容器 docker container ls # 列出本机所有容器,包含终止运行的容器 docker container ls --all # 查看正在运行的容器 docker ps # 查看最新指定数量的容器的状态 docker ps -n 10 # 终止容器 docker stop <container id>/<container name> # 对终止运行的容器重启, 容器id通过docker ps查问 docker start <container id>/<container name> # 查看容器日志 docker logs <container id>/<container name
在容器中装置必备软件
启动容器当前,阐明了运行了一个镜像实例,比方ubuntu:18.04镜像生成的test容器。这个容器目前有了ubuntu操作系统的文件治理性能,内存治理性能,过程调度等性能。当初还须要领有python3, pip 环境, apt工具包。```sh docker run -d -t -p 8000:5000 --name unbuntu:18.04 # 下载apt工具包 docker exec demo apt update docker exec apt -y install python3 python3-pip # 装置flask库 docker exec demo pip3 install flask```
在容器中运行程序
下面说过,应用docker的目标就是软件应用带环境装置。当初环境好了,须要运行软件应用```sh # demo 容器中创立/code目录 docker exec demo mkdir /code # cp参数把以后文件夹的a.py拷贝到demo容器的/code/a.py docker cp a.py demo:/code/a.py # 运行demo容器中的a.py docker exec demo python3 /code/a.py```
用脚本的形式配置容器,而后运行脚本配置并开启新容器
之前的一系列命令有些繁琐, 其实更好的形式是在宿主机写脚本,而后cp到docker容器中间接运行.具体操作看实例操作
实例操作
在当前目录下创立a.py文件
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Hello from Docker' # 默认端口5000 if __name__ == "__main__": app.run(host="0.0.0.0", debug=True)
在当前目录下创立install.sh文件
# install.sh apt update apt -y install python3 python3-pip pip3 install flask
在当前目录下创立run.sh文件
# run.sh cd /code python3 a.py
关上终端,输出以下命令
docker run -d -t -p 8000:5000 --name unbuntu:18.04 # demo 容器中创立/code目录 docker exec demo mkdir /code docker cp install.sh "demo:/code/install.sh" docker cp run.sh "demo:/code/run.sh" docker cp a.py "demo:/code/a.py" docker exec demo bash /code/install.sh docker exec demo bash /code/run.sh
- 关上浏览器输出:localhost:8000/