导航
手动从镜像运行一个容器
手动启动一个容器
手动在本地电脑的docker容器中运行一个web应用
1 2 3 4 5 6 7 8 9 10
| 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会自动从镜像服务器去下载这个镜像
|
启动容器常见的问题
1 2 3 4 5 6
| docker run -t -d -p 3456:5000 --name test ubuntu:18.04
docker rm -f test
docker run -t -d -p 3456:5000 --name test1 ubuntu:18.04
|
关于容器相关的命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| docker container ls
docker container ls --all
docker ps
docker ps -n 10
docker stop <container id>/<container name>
docker start <container id>/<container name>
docker logs <container id>/<container name
|
在容器中安装必备软件
启动容器以后,说明了运行了一个镜像实例,比如ubuntu:18.04镜像生成的test容器。这个容器目前有了ubuntu操作系统的文件管理功能,内存管理功能,进程调度等功能。现在还需要拥有python3, pip 环境, apt工具包。
1 2 3 4 5 6
| docker run -d -t -p 8000:5000 --name unbuntu:18.04
docker exec demo apt update docker exec apt -y install python3 python3-pip
docker exec demo pip3 install flask
|
在容器中运行程序
上面说过,使用docker的目的就是软件应用带环境安装。现在环境好了,需要运行软件应用
1 2 3 4 5 6
| docker exec demo mkdir /code
docker cp a.py demo:/code/a.py
docker exec demo python3 /code/a.py
|
用脚本的方式配置容器,然后运行脚本配置并开启新容器
之前的一系列命令有些繁琐, 其实更好的方式是在宿主机写脚本,然后cp到docker容器中直接运行.
具体操作看实例操作
实例操作
- 在当前目录下创建a.py文件
1 2 3 4 5 6 7 8 9 10 11
| from flask import Flask
app = Flask(__name__)
@app.route('/') def index(): return 'Hello from Docker'
if __name__ == "__main__": app.run(host="0.0.0.0", debug=True)
|
- 在当前目录下创建install.sh文件
1 2 3 4
| apt update apt -y install python3 python3-pip pip3 install flask
|
- 在当前目录下创建run.sh文件
- 打开终端,输入以下命令
1 2 3 4 5 6 7 8
| docker run -d -t -p 8000:5000 --name unbuntu:18.04
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/