私信  •  关注

Mostafa Hussein

Mostafa Hussein 最近创建的主题
Mostafa Hussein 最近回复了
5 年前
回复了 Mostafa Hussein 创建的主题 » 错误:Dockerfile ubuntu 14.04、cuda 8.0、cudnn 6.0中的引用格式无效

你需要通过一个名为 IMAGE_NAME

docker build --build-arg IMAGE_NAME=nvidia/cuda .

输出:

Step 1/7 : ARG IMAGE_NAME
Step 2/7 : FROM ${IMAGE_NAME}:8.0-devel-ubuntu14.04
8.0-devel-ubuntu14.04: Pulling from nvidia/cuda
5 年前
回复了 Mostafa Hussein 创建的主题 » 为同一Docker容器的多个实例分配不同的公共IP

为了给docker容器分配公共IP,您需要使用 Macvlan network driver 例如:

Macvlan网络驱动程序可用于为每个容器分配一个MAC地址虚拟网络接口,使其看起来是一个直接连接到物理网络的物理网络接口。

docker network create -d macvlan -o macvlan_mode=bridge --subnet=172.16.86.0/24 --gateway=172.16.86.1 -o parent=eth0 pub_net

然后创建将使用上述网络的容器:

docker run --name web_container --net=pub_net --ip=172.16.86.2 --mac-address 25-EE-4E-B5-21-48 -itd nginx

现在有一个面向公众的容器在运行 172.16.86.2 从同一个docker镜像中,你可以运行多个docker容器并为每个容器分配一个公共IP。

5 年前
回复了 Mostafa Hussein 创建的主题 » 使用命令行安装docker for Mac时出现问题?

上面的错误意味着 docker

根据 this thread 这是一个有点旧,但仍然没有本地支持您的情况,这就是为什么您会注意到,有自定义项目,如 this comment

5 年前
回复了 Mostafa Hussein 创建的主题 » Docker节点应用无法连接链接的mysql容器

depends_on 不是要验证MySQL是否已经准备好接收连接。一旦数据库容器正在运行,它将启动第二个容器,而不管它是否准备好进行连接,这可能会导致应用程序出现问题,因为它希望数据库准备就绪,但这可能不是真的。

引自 the documentation :

depends不等待db和redis在启动web之前准备好,直到它们已经启动。

如果您需要等待服务就绪,请参见 Controlling startup order 关于这个问题的更多信息和解决策略。

由于设置原因,无法创建MySQL根用户 MYSQL_USER 要root用户,因为该用户已经存在于数据库中,并且尝试创建另一个。如果需要使用根用户本身,则只能使用此变量 MYSQL_ROOT_PASSWORD 或者改变 MYSQL_用户 因此,您可以在应用程序中安全地使用它,而不是在根用户中使用它。

5 年前
回复了 Mostafa Hussein 创建的主题 » AWS ECR上的Docker图像大小已更改

这是由于Docker客户端在将图像推送到ECR之前的行为,所以ECR仪表板上的大小是图像压缩版本的大小 documented 以下内容:

从Docker1.9版开始,Docker客户端在将图像层推送到v2 Docker注册表之前压缩它们。docker images命令的输出显示未压缩的图像大小,因此它可能返回比aws管理控制台中显示的图像大小更大的图像大小。

5 年前
回复了 Mostafa Hussein 创建的主题 » 如何用导出的表和行创建dynamodb本地docker实例?

我不确定官方的dynamodb本地是否默认支持这一点,而且看起来您需要一个将csv导入dynamodb的自定义脚本,但是您可以根据需要创建一个自定义图像。例如,你可以从一个简单的 Dockerfile 使用 amazon/dynamodb-local 然后添加一个python脚本,该脚本将负责导入csv文件,因此步骤可能如下:

  • 在容器中装入csv,可能在容器内部 /docker-entrypoint-initdb.d
  • 创建一个entrypoint.sh脚本,将其用作容器的入口点,并检查其中是否有任何csv文件 /docker入口点initdb.d 以便将其传递给python脚本- 下面添加的代码 -它将加载到dynamodb中,例如如下所示(取自 mongodb's entrypoint )以下内容:
        for f in /docker-entrypoint-initdb.d/*; do
            case "$f" in
                # if csv file pass it to the python script
                *.csv) echo "$0: running $f"; . "$f" ;;
                *)    echo "$0: ignoring $f" ;;
            esac
            echo
        done
  • 下面的代码不是我测试或创建的,我只是从下面的链接复制了它 Import a CSV file into a DynamoDB table using boto (Python package) ,您可以根据需要修改它,或者构建自己的脚本,或者如果您有更好的建议,请通知我以便更新答案。

  • boto支持dynamodb local,如下所述 answer 这意味着您可以修改脚本使其与dynamodb local一起工作

import boto

MY_ACCESS_KEY_ID = 'copy your access key ID here'
MY_SECRET_ACCESS_KEY = 'copy your secrete access key here'


def do_batch_write(items, table_name, dynamodb_table, dynamodb_conn):
    '''
    From https://gist.github.com/griggheo/2698152#file-gistfile1-py-L31
    '''
    batch_list = dynamodb_conn.new_batch_write_list()
    batch_list.add_batch(dynamodb_table, puts=items)
    while True:
        response = dynamodb_conn.batch_write_item(batch_list)
        unprocessed = response.get('UnprocessedItems', None)
        if not unprocessed:
            break
        batch_list = dynamodb_conn.new_batch_write_list()
        unprocessed_list = unprocessed[table_name]
        items = []
        for u in unprocessed_list:
            item_attr = u['PutRequest']['Item']
            item = dynamodb_table.new_item(
                    attrs=item_attr
            )
            items.append(item)
        batch_list.add_batch(dynamodb_table, puts=items)


def import_csv_to_dynamodb(table_name, csv_file_name, colunm_names, column_types):
    '''
    Import a CSV file to a DynamoDB table
    '''        
    dynamodb_conn = boto.connect_dynamodb(aws_access_key_id=MY_ACCESS_KEY_ID, aws_secret_access_key=MY_SECRET_ACCESS_KEY)
    dynamodb_table = dynamodb_conn.get_table(table_name)     
    BATCH_COUNT = 2 # 25 is the maximum batch size for Amazon DynamoDB

    items = []

    count = 0
    csv_file = open(csv_file_name, 'r')
    for cur_line in csv_file:
        count += 1
        cur_line = cur_line.strip().split(',')

        row = {}
        for colunm_number, colunm_name in enumerate(colunm_names):
            row[colunm_name] = column_types[colunm_number](cur_line[colunm_number])

        item = dynamodb_table.new_item(
                    attrs=row
            )           
        items.append(item)

        if count % BATCH_COUNT == 0:
            print 'batch write start ... ', 
            do_batch_write(items, table_name, dynamodb_table, dynamodb_conn)
            items = []
            print 'batch done! (row number: ' + str(count) + ')'

    # flush remaining items, if any
    if len(items) > 0: 
        do_batch_write(items, table_name, dynamodb_table, dynamodb_conn)


    csv_file.close() 


def main():
    '''
    Demonstration of the use of import_csv_to_dynamodb()
    We assume the existence of a table named `test_persons`, with
    - Last_name as primary hash key (type: string)
    - First_name as primary range key (type: string)
    '''
    colunm_names = 'Last_name First_name'.split()
    table_name = 'test_persons'
    csv_file_name = 'test.csv'
    column_types = [str, str]
    import_csv_to_dynamodb(table_name, csv_file_name, colunm_names, column_types)


if __name__ == "__main__":
    main()
    #cProfile.run('main()') # if you want to do some profiling

测试.CSV的内容(必须位于与Python脚本相同的文件夹中):

John,Doe
Bob,Smith
Alice,Lee
Foo,Bar
a,b
c,d
e,f
g,h
i,j
j,l
5 年前
回复了 Mostafa Hussein 创建的主题 » 文件Laravel与DOCKER文件权限-不能编辑文件

您需要做的只是从主机本身更改挂载目录的权限,例如,如果主机上有以下目录 /home/lykos/laravel/data 您需要将其安装在Docker容器中,如下所示:

  • 检查 UID GID 在用来制造 例如,你可能会发现 UID GID 具有 以下值 1000 然后从主机运行以下命令 命令 chown 1000:1000 /home/lykos/laravel/data

现在,laravel应用程序应该能够在您将其用作目标的任何目录中编写 /主页/lykos/laravel/data 并确保在没有确认您拥有正确权限的情况下不会对其进行修改,例如,除非您这样做,否则不要在其中手动创建另一个目录 chown 创建之后。

上述解决方案适用于将用于写入该目录的用户,如果有其他用户需要确保通过linux acl而不是使用world权限授予他们适当的权限(777)

假设您有一个容器作为web服务器,并且在从本地主机进行开发时需要将应用程序托管在容器中。假设用于开发的本地主机用户是 lykos web服务器使用的容器用户是 33 对于 UID GID 您可以从本地主机执行以下操作:

sudo chown 33:33 /home/lykos/laravel/data -R
sudo setfacl -Rm u:lykos:rwx,d:u:lykos:rwx /home/lykos/laravel/data

上面的命令将使web服务器能够访问和更新项目文件。并且还使本地主机能够修改当前文件和新创建的文件(请注意,如果您使用 莱科斯 需要创建的用户 乔恩 匹配web服务器uid)

5 年前
回复了 Mostafa Hussein 创建的主题 » Docker无法连接到容器公开端口

因此,可以将问题分解为以下步骤:

  1. 检查 docker inspect docker ps 确保正确暴露端口的结果
  2. 尝试使用公用IP连接到它。例如,如果您收到错误消息

    • 连接被拒绝 :原因可能是容器中的应用程序未按预期运行。例如,您需要确保应用程序绑定到 0.0.0.0 而不是 127.0.0.1

    • 连接超时 :原因可能是服务器外部的防火墙,如AWS或类似的安全组,或者Docker没有管理服务器防火墙(这不是默认设置)

5 年前
回复了 Mostafa Hussein 创建的主题 » 深度学习对数似然

MSE or Mean Squared Error 只是预测值和基本真值标签之间的平方差的期望值,表示为

\text{MSE}(\hat{\theta}) = E\left[(\hat{\theta} - \theta)^2\right]

哪里 θ 是基本真理的标签 西塔帽 是预测的标签吗

我不确定你指的到底是什么,像是理论问题还是代码的一部分

作为一个 蟒蛇 实施

def mean_squared_error(A, B):    
     return np.square(np.subtract(A,B)).mean()

yt = [[1,0,0],[0,0,1]] 
yp = [[0.9, 0.2,0.2], [0.2,0.8,0.3]]

mse = mean_squared_error(yt, yp) 
print(mse)

这将给出 0.21

如果您使用的是 TensorFlow ,那么他们已经提供了 function 计算张量之间的mse损失

tf.losses.mean_squared_error

哪里

tf.losses.mean_squared_error(
    labels,
    predictions,
    weights=1.0,
    scope=None,
    loss_collection=tf.GraphKeys.LOSSES,
    reduction=Reduction.SUM_BY_NONZERO_WEIGHTS
)

ARG:

标签: 地面真值输出张量,与“预测”的维数相同。

预言: 预测的输出。

重量: 可选的张量,其秩为0,或与标签的秩相同,并且必须可广播到标签(即,所有维度 必须是1,或与相应的损失维度相同)。

经营范围: 计算损失的操作范围。

托收损失: 将要添加损失的集合。

还原: 适用于损失的减少类型。

返回:

加权损失浮动张量。如果减量为无,则这与 形状作为标签;否则,它是标量。

5 年前
回复了 Mostafa Hussein 创建的主题 » 拒绝访问Gitlab Docker容器输出连接

映射端口时,应使用主机IP通过映射端口进行访问。

所以如果你需要访问端口 80 使用容器IP。 如果您需要访问端口 3000 使用主机IP或主机本身的本地主机,或者即使主机内部有一个私有接口。

所以这个命令: wget -O- https://172.25.0.2:3000 这意味着您正在与容器直接对话,而不是通过映射端口,并请求在端口3000上侦听的服务,这是不正确的,因此结果将是连接被拒绝。

您需要添加 npm-debug.log* 给你的 .gitignore 文件,因为 .git忽略 文件意味着 npm-debug.log 只有。

添加星号 * 将确保以 npm-debug.log文件 将被忽略

如果要从计算机中永久删除它们,请使用以下命令:

rm -f npm-debug.log.*