С чем связана докер, при использовании команды ps? [Дубликат]

$result = mysql_query('SELECT * FROM Users WHERE UserName LIKE $username');

Вы определяете строку, используя одинарные кавычки, и PHP не анализирует строки с разделителями одиночной кавычки. Чтобы получить переменную интерполяцию, вам нужно использовать двойные кавычки или конкатенацию строк (или их комбинацию). См. http://php.net/manual/en/language.types.string.php для получения дополнительной информации.

Также вы должны проверить, что mysql_query вернул действительный ресурс результата, иначе fetch_ *, num_rows и т. д. не будут работать с результатом, поскольку это не результат! IE:

$username = $_POST['username'];
$password = $_POST['password'];
$result = mysql_query('SELECT * FROM Users WHERE UserName LIKE $username');

if( $result === FALSE ) {
   trigger_error('Query failed returning error: '. mysql_error(),E_USER_ERROR);
} else {
   while( $row = mysql_fetch_array($result) ) {
      echo $row['username'];
   }
}

http://us.php.net/manual/en/function.mysql-query.php для получения дополнительной информации.

2
задан Walid Ashraf 22 December 2015 в 14:42
поделиться

1 ответ

TLDR; демон docker хранит список контейнеров в памяти. На docker ps доступ к файловой системе не требуется. На docker create/run/start список контейнера может быть получен из слоя, найденного в /var/lib/docker/aufs (если вы используете драйвер хранения aufs )

Сами контейнеры находятся под /var/lib/docker/containers/{id}. Как не разрешено вопросом 15047 , этот путь загружается, когда запускается демон docker. После этого он управляется в памяти.


docker ps запрашивает контейнеры в api/client/ps.go#L59 :

containers, err := cli.client.ContainerList(options)

Он запрашивает api/client/lib/container_list.go#L45

resp, err := cli.get("/containers/json", query, nil)

Это управляется в api/server/router/container/container.go#L34

local.NewGetRoute("/containers/json", r.getContainersJSON),

It затем запрашивает бэкэнд в api/server/router/container/container_routes.go#L48

containers, err := s.backend.Containers(config)

. Каков интерфейс в api/server/router/container/backend.go#L58

Containers(config *daemon.ContainersConfig) ([]*types.Container, error)

, реализованный демоном докеров в daemon/list.go#L83-L86 :

// Containers returns the list of containers to show given the user's filtering.
func (daemon *Daemon) Containers(config *ContainersConfig) ([]*types.Container, error) {
    return daemon.reduceContainers(config, daemon.transformContainer)
}

Демон имеет список контейнеров: daemon/list.go#L37-L40

// List returns an array of all containers registered in the daemon.
func (daemon *Daemon) List() []*container.Container {
    return daemon.containers.List()
}

Из contStore : daemon/daemon.go#L123-L132

func (c *contStore) List() []*container.Container {
    containers := new(History)
    c.Lock()
    for _, cont := range c.s {
        containers.Add(cont)
    }
    c.Unlock()
    containers.sort()
    return *containers
}


type contStore struct {
    s map[string]*container.Container
    sync.Mutex
}
2
ответ дан VonC 5 September 2018 в 07:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: