极简Linux-Docker使用教程
文章目录
–>>【Linux】CentOS-常用命令&新云服务器安装必看
Linux-Docker使用教程,我这里用的是Linux-CentOS
CentOS Docker 安装 :
https://www.runoob.com/docker/centos-docker-install.html
centos7配置Docker镜像加速器 :
https://www.cnblogs.com/djlsunshine/p/11375323.html
Docker Compose安装使用&其他 :
【x】https://www.runoob.com/docker/docker-compose.html不要用里面的下面地址,速度会特别慢!!!
【√】用这个https://cloud.tencent.com/developer/article/1339375 里面的
curl -L https://get.daocloud.io/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
然后输入docker-compose --version检查是否安装成功
【例子】在linux-centos上部署python项目
AAA 创建python项目并上传到linux上
参考:
- https://blog.csdn.net/u013282737/article/details/85233408
- https://blog.csdn.net/weixin_34064653/article/details/91923102
- 遇到的问题:docker 制作镜像时无法安装flask
- 解决方法:在Dockerfile中更换pip的安装源
Dockerfile使用的python3.7作为基础镜像 FROM python:3.7,但是执行
RUN pip install --no-cache-dir -r requirements.txt
是默认走了这个源,https://files.pythonhosted.org/packages,编译用时太久。
无赖修改成国内源来加快编译速度:
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --no-cache-dir -r requirements.txt
BBB Dockerfile的内容&构建镜像
#基于的基础镜像
FROM python:3.6
#代码添加到code文件夹,后面可以通过进入容器中看的
ADD ./py /code
# 设置code文件夹是工作目录
WORKDIR /code
# 安装支持
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --no-cache-dir -r requirements.txt
# 暴露端口
EXPOSE 5000
#当容器启动时,使用python3执行指定路径的py脚本
CMD ["python", "app.py"]
根据Dockerfile制作镜像的命令:docker build -t img_name:tag_name .
构建镜像,构建参数说明参考:http://www.runoob.com/docker/docker-build-command.html
CCC 【例子】运行镜像,生成并启动容器
执行命令:docker run -it -p 5000:5000 --name container_name IMAGE_ID
- 这里碰到个坑,找不到制作的镜像,报Unable to find image ‘py_demo1:latest’ locally
- 使用命令:docker run -it -p 5000:5000 --name container_name py_demo1(制作的docker镜像)
- 解决方法: 最后的镜像填IMAGE_ID 就可以了docker run -it -p 5000:5000 --name con_py_demo1 e542a29fd603
-it:表示交互式终端的容器,非启动后立刻结束的容器
-p 5000:5000:表示将docker的5000端口,映射到Linux虚拟机的5000端口
也就是说,访问Linux虚拟机的5000端口,就是在访问docker容器的5000端口
--name container_name:给容器取个名字,嫌麻烦可以省去
img_name:容器是用哪个镜像启动的(一个容器,必须依赖一个镜像启动)
-
直接输入exit 会退出且关闭容器,工程就stop了,再访问就访问不了了
-
Ctrl + C,会报错KeyboardInterrupt,工程就也stop了
-
解决方法:
- 使用命令:docker start 容器ID,去再启动容器后,就可以继续访问工程
- 使用命令:docker exec -it 容器ID /bin/bash
- 或者 docker attach 容器ID,重新进入容器后,可查看程序打印的日志
-
但是,如果使用Ctrl + P + Q退出容器,就不会中断工程,等于退出容器后,还可访问容器的工程,再进入,也是使用命令:docker attach 容器ID
ctrl+d 退出容器且关闭, docker ps 查看无
ctrl+p+q 退出容器但不关闭
CCC 运行镜像
–name 服务名
-d 后台运行
-p 暴露端口:nginx 端口
docker-nginx-test 镜像名/IMAGE ID
docker run --name dockertest -d -p 4455:80 docker-nginx-test
DDD Linux-CentOS需要开启5000端口
firewall-cmd --zone=public --add-port=5000/tcp --permanent #永久开启5000端口
firewall-cmd --reload #重启firewall 每次新添加端口都要
- 遇到的问题:5000端口已经占用
- 运行的命令:docker run -it -p 5000:5000 --name con_py_demo1 e542a29fd603
- 解决:杀掉linux-centos运行的5000端口内容
kill -9 $(netstat -nlp | grep :5000 | awk ‘{print $7}’ | awk -F"/" ‘{ print $1 }’)
docker容器镜像常用命令
1.查看当前运行的所有容器
docker ps -a
2.停止所有容器(container),这样才能够删除其中的images:
docker stop $(docker ps -a -q)
3.如果想要删除所有容器(container)的话再加一个指令:
docker rm $(docker ps -a -q)
4.查看当前有那些镜像(images)
docker images
5.删除镜像(images),通过镜像(images)的id来指定删除谁
docker rmi <image id>
6.想要删除镜像(images)id为<None>的image的话可以用
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
7.要删除全部镜像(images)的话
docker rmi $(docker images -q)