欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

极简Linux-Docker使用教程

程序员文章站 2022-05-26 20:40:08
...

–>>【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上
参考:

  1. https://blog.csdn.net/u013282737/article/details/85233408
  2. 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)