Docker常用操作
参考:https://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html
1.安装
参考:Ubuntu Docker 安装、如何在Ubuntu上安装使用Docker
检查是否安装成功docker version
、docker run hello-world
常用命令:
#查看所有容器(在运行和已经停止运行的容器)
docker ps -a
#启动/终止/重启/运行状态
docker start/stop/restart/stats 容器id或者容器名
#进入容器并打开容器的shell终端
docker exec -it 容器id或者容器名 /bin/bash
#退出容器终端
ctrl+p 然后 ctrl+q
#完全退出容器的终端
ctrl+d 或者 exit
2.使用docker运行
docker run直接运行容器,本地不存在则远端拉取镜像并运行。以nginx为例:
docker run -d nginx
-d参数,让docker在后台运行该容器。
3.端口映射
此时无法通过外部的浏览器访问这个nginx服务器,因为docker内部的端口并没有暴露出来,可以运行下面的命令进行端口映射。
docker run -d -p 80:80 nginx #本地端口:容器端口
4.文件挂载
-v参数可以挂载本地文件目录,一般在运行数据库容器时,需要将数据持久化,否则在容器退出后所有的数据将丢失;例如:
docker run -d -p 80:80 -v /data/nginx:/data nginx
以上命令将本机的/data/nginx目录挂到到容器中的/data目录,如果容器中对/data目录的任何修改都将直接映射到外部磁盘上。
5.容器执行命令
交互式
docker exec -it [CONTAINER ID] /bin/bash
-i选项代表使用交互方式,-t代表打开一个终端。/bin/bash是本次要运行的命令,一个shell程序。
这样就相当于打开了一个交互式终端进入了容器内部,所做的操作都只在容器内部生效,如同进入了一个虚拟机。
6.配置阿里镜像源
echo '{ "registry-mirrors": ["https://ra9q5uam.mirror.aliyuncs.com"] }' > /etc/docker/daemon.json
重启docker:service docker restart
查看是否成功:docker info
7.使用DockerFile创建镜像及容器
Docker使用一种称为Dockerfile的文件来描述容器的组成以及相关配置,Dockerfile是docker的特有文件,必须满足相关格式。
假如要创建自己的web程序,需要将所有依赖都打包到一个镜像中,以某个操作系统为底座来构筑自己的镜像
作为样例,我们使用python的flask框架来编写一个最简单的网页程序,并打包成一个镜像。
参考:https://flask.palletsprojects.com/en/2.1.x/quickstart/
1、新建文件夹,新建app.py文件
mkdir flask && cd flask && vim app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
2、新建一个文件命名为dockerfile
#这是一个注释
FROM ubuntu
RUN apt-get update
RUN apt-get install -y nginx
RUN apt-get install -y python3
RUN apt-get install -y python3-flask
COPY app.py /var/hello.py
ENV FLASK_APP=hello
CMD cd /var && flask run
dockerfile只有一种格式,就是
# 注释
INSTRUCTION arguments
dockerfile必须以FROM开始,代表在某个基础镜像上做接下来的操作
RUN命令可以在镜像内部运行某个命令
COPY命令可以将本地文件拷贝到容器内部,注意只能拷贝当前目录下的内容
ENV命令则可以简单的对容器注入环境变量
CMD命令用于指定当容器运行时需要执行的默认命令,CMD命令可以被docker run命令覆盖
3、构建镜像
docker build -t flask:latest .
-t 参数用于指明镜像的名称和tag,后面紧跟一个目录,docker会自动查找该目录下的dockerfile并根据该文件来进行镜像构建。
构建完成后可以使用docker image ls
命令来查看当前机器上所有的镜像列表
4、运行该镜像容器
docker run -it -p 83:5000 flask
Docker-compose
参考:https://www.linuxmi.com/docker-install-wordpress.html、https://www.cnblogs.com/jiumo/p/15959062.html
Docker系列 了解Docker Compose的配置文件
我们往往需要多个容器配合来完成某个上层应用,例如网站程序经常需要搭配一个数据库使用,这种情况可以把网站后台程序和数据库分别放到两个容器中运行,Docker compose工具提供一种简化的方式来组织多个容器,并且能够用一个命令快速的部署多个容器。
Docker compose使用YAML文件来描述容器以及容器之间的关系,使用Docker compose一般分为3步
1、定义每个容器的Dockerfile
2、定义一个称为docker-compose.yaml的文件,用来描述多个容器之间的关系
3、使用docker compose up命令一键部署应用程序