从docker容器访问日志

时间:2017-12-24 14:11:03

标签: python docker logging dockerfile

我有一个在docker容器中运行的python服务器。我通过python登录来记录我的消息,我不知道如何从容器中查找/查看我的日志文件。

# Pull base image
FROM python:3

# Copy code to the container
ADD src /usr/app
WORKDIR /usr/app

# run configuration
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

# Start script
CMD [ "python", "./main.py"]

我像这样启动服务器:

sudo docker run -it -p 5000:5000 --rm my_app

如何访问服务器日志?

由于

5 个答案:

答案 0 :(得分:2)

我认为您可以在“docker run”中使用-v参数将主机文件夹挂载到容器中的文件夹。

   //check is inputs has value

   if (empty($_POST['catname'])) {
  $errors[] = 'Ξεχάσατε το όνομα της κατηγορίας!';
}else{
  $stmt=$conn->prepare("SELECT cn_id FROM food_category WHERE catname= :catname");
  $stmt->bindParam(':catname', $_POST['catname'], PDO::PARAM_STR);
  $stmt->execute();
  $catres= $stmt->fetch(PDO::FETCH_ASSOC);
  if(count($catres) > 0 ){
    $cn_id= $catres['cn_id'];
  }else{
    $cn_id=0;
  }
}
if (empty($_POST['catname_en'])) {
    $errors[] = 'Ξεχάσατε το όνομα της κατηγορίας στα Αγγλικά!';
  }else{
    $stmt2=$conn->prepare("SELECT cn_id FROM food_category_en WHERE catname= :catname_en");
    $stmt2->bindParam(':catname_en', $_POST['catname_en'], PDO::PARAM_STR);
    $stmt2->execute();
    $catresen= $stmt2->fetch(PDO::FETCH_ASSOC);
    if(count($catresen) > 0 ){
      $cn_id_en= $catresen['cn_id'];
    }else{
      $cn_id_en=0;
    }
  }
  if(empty($errors)){
  //pdo trasaction
$conn->beginTransaction();
try{

    if($cn_id == 0){
    $stmt1= $conn->prepare("INSERT INTO food_category (catname) VALUES (:catname)");
    $stmt1->bindParam(':catname', $_POST['catname'], PDO::PARAM_STR);
    $stmt1->execute();
    $cn_id= $conn->lastInsertId();
    echo "id1=" . $cn_id;
  }
 if($cn_id_en == 0){
    $stmt3= $conn->prepare("INSERT INTO food_category_en (catname)   VALUES (:catname_en)");
    $stmt3->bindParam(':catname_en', $_POST['catname_en'], PDO::PARAM_STR);
    $stmt3->execute();
    $cn_id_en= $conn->lastInsertId();
  }

  $stmt4=$conn->prepare("INSERT INTO food_category_main (st_id, cn_id, cn_id_en, catcount) VALUES (:st_id, :cn_id, :cn_id_en, :catcount)");
  $stmt4->bindParam(':st_id', $_POST['st_id'], PDO::PARAM_INT);
  $stmt4->bindParam(':cn_id', $cn_id, PDO::PARAM_INT);
  $stmt4->bindParam(':cn_id_en', $cn_id_en, PDO::PARAM_INT);
  $stmt4->bindParam(':catcount', $noc, PDO::PARAM_INT);
  $stmt4->execute();

$stmt5=$conn->prepare("UPDATE magazia_main SET noc= :noc WHERE st_id= :st_id");
$stmt5->bindParam(':st_id', $_SESSION['st_id'], PDO::PARAM_INT);
$stmt5->bindParam(':noc', $noc, PDO::PARAM_INT);
$stmt5->execute();

$conn->commit();
header ("Location:dashboard.php?store=".$_SESSION['name']);
exit;
 }catch(Exception $e){
//An exception has occured, which means that one of our database queries
//failed.
//Print out the error message.
echo $e->getMessage();
//Rollback the transaction.
$conn->rollBack();
} 

然后,您将在hostPath中查看您的日志(它被映射到容器中的containerPathContainingLogs)。

或者换句话说,如果您的泊坞窗图片包含bash,您可以使用docker ps -a来查找您运行的容器ID,并使用“docker exec -it your-container-id bash”来登录您的容器,cd到您的日志路径并查看您的日志。

或者您可以尝试使用docker log your-container-id。

答案 1 :(得分:1)

您始终可以通过以下方式检查服务的直接泊坞机输出:

docker logs my-container-instance

要检查日志路径文件,您可以使用:

docker inspect my-cintainer-instance

并在json输出上找到LogPath键。

答案 2 :(得分:0)

docker logs --tail 200 -f docker-container-id

答案 3 :(得分:0)

除了要将日志重定向到文件时给出的答案,请使用此

docker logs containername>&日志文件

答案 4 :(得分:0)

只需使用此命令:

docker logs CONTAINER ID 

(例如:docker 日志 c587105f2a4f)

要获取正在运行的容器和容器 ID,请使用以下命令:

docker ps