文章目录

  • **CentOS Docker 安装** :
  • **centos7配置Docker镜像加速器** :
  • **Docker Compose安装使用&其他** :
  • 【例子】在linux-centos上部署python项目
  • **docker容器镜像常用命令**


centos7配置Docker镜像加速器 :

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



  • 遇到的问题: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)