导航
欢迎访问我的博客
我的博客
手动从镜像运行一个容器
手动启动一个容器
手动在本地电脑的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会自动从镜像服务器去下载这个镜像
```
启动容器常见的问题
```sh
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
```
关于容器相关的命令
```sh
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>
```
在容器中安装必备软件
启动容器以后,说明了运行了一个镜像实例,比如ubuntu:18.04镜像生成的test容器。这个容器目前有了ubuntu操作系统的文件管理功能,内存管理功能,进程调度等功能。现在还需要拥有python3, pip 环境, apt工具包。
```sh
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的目的就是软件应用带环境安装。现在环境好了,需要运行软件应用
```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'
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
- 在当前目录下创建install.sh文件
apt update
apt -y install python3 python3-pip
pip3 install flask
- 在当前目录下创建run.sh文件
cd /code
python3 a.py
- 打开终端,输入以下命令
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/