docker初学
加载镜像:docker load -i ubuntu.tar
导出镜像:docker save -o ubuntu1.tar ubuntu
运行:
docker run -it --name mu ubuntu /bin/bash
ocker run -dit --name mmus docker.1ms.run/library/ubuntu /bin/bash
进入容器:docker exec -it mmus /bin/bash
docker exec -it ubun bash
docker exec -it <container_name> /root/start_flask.sh
停止:docker stop mmus
将容器打包成一个新的镜像资源:
docker commit mu(容器名) ubuntusss(资源名)
强制删除: docker rmi -f paddlex
构建镜像:docker build -t 名称 .
有GPU的运行:
docker run -it --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 bash
docker run -it --gpus all --name ubun nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 /bin/bash
docker run -it --gpus all --network my_custom_network -p 27000:27000 --shm-size=32g --name ubuntu2 -v my_volume:/root/Code -v /home2/aitp:/root/aitp --user root ubuntu_conda tail -f /dev/null /bin/bash
docker拷贝文件:docker cp Anaconda3-2023.03-Linux-x86_64.sh ubun(容器名):/
重启容器:docker restart
端口映射:docker run -dit -p --name my111 ngnix
自启动:
是的,使用 rc.local
可以在 Docker 容器启动时自动运行 Flask 服务并激活 Anaconda 虚拟环境。具体来说,您需要在 rc.local
文件中启动 Docker 容器后,进入该容器并执行启动 Flask 服务的命令,同时确保激活正确的 Anaconda 虚拟环境。
下面是一个详细的步骤来实现这一目标:
1. 在 Docker 容器中启动 Flask 服务并激活 Anaconda 环境
首先,确保您在容器内可以正常启动 Flask 服务并激活虚拟环境。以下是容器内的步骤:
1.1. 创建启动脚本
你需要创建一个启动脚本来激活 Anaconda 环境并启动 Flask 服务。假设虚拟环境的名称为 paddlex_env
,Flask 服务的启动脚本是 /root/Code/PaddleX/paddlex_restful/command.py
。
-
创建启动脚本
start_flask.sh
(可以放在容器中的某个目录,或直接放在/root/
目录下):bash
#!/bin/bash # 激活 Anaconda 环境 source /root/anaconda3/bin/activate paddlex_env# 启动 Flask 服务 python /root/Code/PaddleX/paddlex_restful/command.py
-
给这个脚本赋予可执行权限:
bash
chmod +x /root/start_flask.sh
1.2. 测试容器内的脚本
确保可以在容器内运行这个脚本,激活虚拟环境并启动 Flask 服务:
bash
docker exec -it <container_name> /root/start_flask.sh
如果一切正常,Flask 服务应当能够成功启动。
2. 配置 rc.local
来自动启动容器和服务
接下来,配置 rc.local
来确保在启动时自动启动容器,并执行启动脚本来启动 Flask 服务。
2.1. 编辑 rc.local
文件
-
打开
rc.local
文件:bash
sudo nano /etc/rc.local
-
在
rc.local
文件中添加命令:- 假设容器名为
paddlex_container
,你需要在rc.local
中加入以下命令:
bash
#!/bin/bash # 启动 Docker 容器 docker start paddlex_container || docker run -d --name paddlex_container <image_name># 在容器内运行 start_flask.sh 脚本启动 Flask 服务 docker exec -d paddlex_container /root/start_flask.shexit 0
docker start paddlex_container
:尝试启动现有的容器。docker run -d --name paddlex_container <image_name>
:如果容器不存在,则创建并启动新容器。docker exec -d paddlex_container /root/start_flask.sh
:在容器中执行启动 Flask 服务的脚本。
记得替换
<image_name>
为你的 Docker 镜像名称。 - 假设容器名为
2.2. 设置 rc.local
可执行权限
确保 rc.local
文件具有执行权限:
bash
sudo chmod +x /etc/rc.local
2.3. 启用并启动 rc.local
服务
-
启用
rc.local
服务(如果你的系统使用systemd
):bash
sudo systemctl daemon-reload sudo systemctl enable rc-local sudo systemctl start rc-local
-
检查
rc-local
服务状态:bash
sudo systemctl status rc-local
3. 测试和调试
-
重启系统,检查容器是否能自动启动并运行 Flask 服务:
bash
sudo reboot
-
检查容器状态,确保容器启动并正常运行 Flask 服务:
bash
docker ps
-
如果有任何问题,可以通过以下命令检查容器日志:
bash
docker logs paddlex_container
4. 优化
-
日志记录:为了便于调试,建议将启动脚本的输出记录到日志文件中,例如:
bash
#!/bin/bash # 激活 Anaconda 环境并启动 Flask 服务,将日志输出到文件 source /root/anaconda3/bin/activate paddlex_env python /root/Code/PaddleX/paddlex_restful/command.py >> /root/flask_service.log 2>&1
-
容器自启动:如果希望容器在系统重启时自动启动,可以在 Docker 容器运行时使用
--restart
选项,例如:bash
docker run -d --restart=unless-stopped --name paddlex_container <image_name>
总结:
- 使用
rc.local
可以实现 Docker 容器自启动,并且在启动时自动激活 Anaconda 环境和运行 Flask 服务。 - 配置
rc.local
启动 Docker 容器并在容器内运行启动脚本来启动 Flask 服务。 - 测试和调试启动过程,确保服务在系统重启后能够正确运行。
如果在配置过程中遇到任何问题,可以随时提问!