Geopackage is a new open standard for geospatial data exchange from the Open Geospatial Consortium (OGC), an industry standards organization. It is intended to allow users to bundle multiple layers of various types into a single file that can easily be passed to others. This recipe demonstrates how to utilize this new data format and what to expect in the future.
For this recipe, you will need a Geopackage file, often the extension is .gpkg. There should be a naturalearthsample.gpkg file in the provided sample data.
You'll also need GDAL 1.11 or newer; if you have QGIS 2.6 or newer, this probably came with a new enough GDAL. If you don't have a new enough GDAL, consider upgrading QGIS, which usually bundles newer versions.
naturalearthsample.gpkg file:

Consider Geopackage more of a read-only format. Even though it is not, its whole purpose is to exchange collections of data between systems with a single file, especially mobile systems. Due to this, once you have loaded layers, consider saving them to another format. Keep in mind that saving to Shapefiles may cause data loss in the attribute table. Spatialite or PostGIS are the recommend formats; refer to recipes Loading vector layers into SpatiaLite and Loading vector layers into PostGIS in Chapter 1, Data Input and Output.
Geopackage is also a database that is based on SQLite and it is compatible with SpatiaLite. If you open it with SpatiaLite tools, you should be able to query the tables. Geopackage and SpatiaLite store geometries differently, so not all functions or spatial index methods are available to Geopackages, but they are very easy to convert.
QGIS 2.10 introduces the ability to write a single layer to a Geopackage. It's expected that QGIS 2.12 will add the ability to write multiple layers to the same Geopackage (as well as SpatiaLite). In the meantime, you can use ogr2ogr on the command line to manage layers in a Geopackage.
If you want to batch convert a Geopackage to SpatiaLite, this can be done on the command line (OSGeo4W Shell on Windows, and a Terminal on Mac or Linux), as follows:
ogr2ogr -f SQLite naturalearthsample.sqlite naturalearthsample.gpkg -skip-failures -nlt PROMOTE_TO_MULTI -dsco SPATIALITE=YES
You can also perform the reverse to create a Geopackage:
ogr2ogr -f GPKG naturalearthsample.gpkg naturalearthsample.sqlite
Keep your eyes out for future implementation of raster support. The Geopackage specification does include limited raster support, which is primarily targeted at including imagery or tiles in the database for use on mobile devices.