Improve code/comment/output markings & display consistency
This PR aims to increase the consistency across the docs for code blocks and code/comment/output markings. Rule followed here is "what's visible on the screen should be reflected" Issue: - Docs had various code blocks showing: comments, commands & outputs. - All three of these items were inconsistently marked. Some examples as to how this PR aims to introduce improvements: 1. Removed `> ` from in front of the "outputs". Eg, ` > REPOSITORY TAG ID CREATED` replaced with: ` REPOSITORY TAG ID CREATED`. 2. Introduced `$` for commands. Eg, ` sudo chkconfig docker on` replaced with: ` $ sudo chkconfig docker on` 3. Comments: ` > # ` replaced with: ` # `. > Please note: > Due to a vast amount of items reviewed and changed for this PR, there > might be some individually incorrect replacements OR patterns of incorrect > replacements. This PR needs to be reviewed and if there is anything missing, > it should be improved or amended. Closes: https://github.com/dotcloud/docker/issues/5286 Docker-DCO-1.1-Signed-off-by: O.S. Tezer <ostezer@gmail.com> (github: ostezer)
This commit is contained in:
parent
51a39563fa
commit
f87a97f7df
45 changed files with 307 additions and 309 deletions
|
@ -26,7 +26,7 @@ corresponding to existing containers.
|
||||||
|
|
||||||
To figure out where your control groups are mounted, you can run:
|
To figure out where your control groups are mounted, you can run:
|
||||||
|
|
||||||
grep cgroup /proc/mounts
|
$ grep cgroup /proc/mounts
|
||||||
|
|
||||||
## Enumerating Cgroups
|
## Enumerating Cgroups
|
||||||
|
|
||||||
|
@ -287,7 +287,7 @@ an interface) can do some serious accounting.
|
||||||
For instance, you can setup a rule to account for the outbound HTTP
|
For instance, you can setup a rule to account for the outbound HTTP
|
||||||
traffic on a web server:
|
traffic on a web server:
|
||||||
|
|
||||||
iptables -I OUTPUT -p tcp --sport 80
|
$ iptables -I OUTPUT -p tcp --sport 80
|
||||||
|
|
||||||
There is no `-j` or `-g` flag,
|
There is no `-j` or `-g` flag,
|
||||||
so the rule will just count matched packets and go to the following
|
so the rule will just count matched packets and go to the following
|
||||||
|
@ -295,7 +295,7 @@ rule.
|
||||||
|
|
||||||
Later, you can check the values of the counters, with:
|
Later, you can check the values of the counters, with:
|
||||||
|
|
||||||
iptables -nxvL OUTPUT
|
$ iptables -nxvL OUTPUT
|
||||||
|
|
||||||
Technically, `-n` is not required, but it will
|
Technically, `-n` is not required, but it will
|
||||||
prevent iptables from doing DNS reverse lookups, which are probably
|
prevent iptables from doing DNS reverse lookups, which are probably
|
||||||
|
@ -337,11 +337,11 @@ though.
|
||||||
|
|
||||||
The exact format of the command is:
|
The exact format of the command is:
|
||||||
|
|
||||||
ip netns exec <nsname> <command...>
|
$ ip netns exec <nsname> <command...>
|
||||||
|
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
ip netns exec mycontainer netstat -i
|
$ ip netns exec mycontainer netstat -i
|
||||||
|
|
||||||
`ip netns` finds the "mycontainer" container by
|
`ip netns` finds the "mycontainer" container by
|
||||||
using namespaces pseudo-files. Each process belongs to one network
|
using namespaces pseudo-files. Each process belongs to one network
|
||||||
|
@ -369,14 +369,13 @@ measure network usage. From there, you can examine the pseudo-file named
|
||||||
control group (i.e. in the container). Pick any one of them.
|
control group (i.e. in the container). Pick any one of them.
|
||||||
|
|
||||||
Putting everything together, if the "short ID" of a container is held in
|
Putting everything together, if the "short ID" of a container is held in
|
||||||
the environment variable `$CID`, then you can do
|
the environment variable `$CID`, then you can do this:
|
||||||
this:
|
|
||||||
|
|
||||||
TASKS=/sys/fs/cgroup/devices/$CID*/tasks
|
$ TASKS=/sys/fs/cgroup/devices/$CID*/tasks
|
||||||
PID=$(head -n 1 $TASKS)
|
$ PID=$(head -n 1 $TASKS)
|
||||||
mkdir -p /var/run/netns
|
$ mkdir -p /var/run/netns
|
||||||
ln -sf /proc/$PID/ns/net /var/run/netns/$CID
|
$ ln -sf /proc/$PID/ns/net /var/run/netns/$CID
|
||||||
ip netns exec $CID netstat -i
|
$ ip netns exec $CID netstat -i
|
||||||
|
|
||||||
## Tips for high-performance metric collection
|
## Tips for high-performance metric collection
|
||||||
|
|
||||||
|
|
|
@ -32,8 +32,8 @@ Again, you can do it in other ways but you need to do more work.
|
||||||
|
|
||||||
## Check out the Source
|
## Check out the Source
|
||||||
|
|
||||||
git clone http://git@github.com/dotcloud/docker
|
$ git clone http://git@github.com/dotcloud/docker
|
||||||
cd docker
|
$ cd docker
|
||||||
|
|
||||||
To checkout a different revision just use `git checkout`
|
To checkout a different revision just use `git checkout`
|
||||||
with the name of branch or revision number.
|
with the name of branch or revision number.
|
||||||
|
@ -45,7 +45,7 @@ Dockerfile in the current directory. Essentially, it will install all
|
||||||
the build and runtime dependencies necessary to build and test Docker.
|
the build and runtime dependencies necessary to build and test Docker.
|
||||||
This command will take some time to complete when you first execute it.
|
This command will take some time to complete when you first execute it.
|
||||||
|
|
||||||
sudo make build
|
$ sudo make build
|
||||||
|
|
||||||
If the build is successful, congratulations! You have produced a clean
|
If the build is successful, congratulations! You have produced a clean
|
||||||
build of docker, neatly encapsulated in a standard build environment.
|
build of docker, neatly encapsulated in a standard build environment.
|
||||||
|
@ -54,7 +54,7 @@ build of docker, neatly encapsulated in a standard build environment.
|
||||||
|
|
||||||
To create the Docker binary, run this command:
|
To create the Docker binary, run this command:
|
||||||
|
|
||||||
sudo make binary
|
$ sudo make binary
|
||||||
|
|
||||||
This will create the Docker binary in `./bundles/<version>-dev/binary/`
|
This will create the Docker binary in `./bundles/<version>-dev/binary/`
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ The binary is available outside the container in the directory
|
||||||
host docker executable with this binary for live testing - for example,
|
host docker executable with this binary for live testing - for example,
|
||||||
on ubuntu:
|
on ubuntu:
|
||||||
|
|
||||||
sudo service docker stop ; sudo cp $(which docker) $(which docker)_ ; sudo cp ./bundles/<version>-dev/binary/docker-<version>-dev $(which docker);sudo service docker start
|
$ sudo service docker stop ; sudo cp $(which docker) $(which docker)_ ; sudo cp ./bundles/<version>-dev/binary/docker-<version>-dev $(which docker);sudo service docker start
|
||||||
|
|
||||||
> **Note**:
|
> **Note**:
|
||||||
> Its safer to run the tests below before swapping your hosts docker binary.
|
> Its safer to run the tests below before swapping your hosts docker binary.
|
||||||
|
@ -74,7 +74,7 @@ on ubuntu:
|
||||||
|
|
||||||
To execute the test cases, run this command:
|
To execute the test cases, run this command:
|
||||||
|
|
||||||
sudo make test
|
$ sudo make test
|
||||||
|
|
||||||
If the test are successful then the tail of the output should look
|
If the test are successful then the tail of the output should look
|
||||||
something like this
|
something like this
|
||||||
|
@ -105,11 +105,10 @@ something like this
|
||||||
PASS
|
PASS
|
||||||
ok github.com/dotcloud/docker/utils 0.017s
|
ok github.com/dotcloud/docker/utils 0.017s
|
||||||
|
|
||||||
If $TESTFLAGS is set in the environment, it is passed as extra
|
If $TESTFLAGS is set in the environment, it is passed as extra arguments
|
||||||
arguments to `go test`. You can use this to select certain tests to run,
|
to `go test`. You can use this to select certain tests to run, e.g.
|
||||||
eg.
|
|
||||||
|
|
||||||
TESTFLAGS=`-run \^TestBuild\$` make test
|
$ TESTFLAGS=`-run \^TestBuild\$` make test
|
||||||
|
|
||||||
If the output indicates "FAIL" and you see errors like this:
|
If the output indicates "FAIL" and you see errors like this:
|
||||||
|
|
||||||
|
@ -124,7 +123,7 @@ is recommended.
|
||||||
|
|
||||||
You can run an interactive session in the newly built container:
|
You can run an interactive session in the newly built container:
|
||||||
|
|
||||||
sudo make shell
|
$ sudo make shell
|
||||||
|
|
||||||
# type 'exit' or Ctrl-D to exit
|
# type 'exit' or Ctrl-D to exit
|
||||||
|
|
||||||
|
@ -134,7 +133,7 @@ If you want to read the documentation from a local website, or are
|
||||||
making changes to it, you can build the documentation and then serve it
|
making changes to it, you can build the documentation and then serve it
|
||||||
by:
|
by:
|
||||||
|
|
||||||
sudo make docs
|
$ sudo make docs
|
||||||
|
|
||||||
# when its done, you can point your browser to http://yourdockerhost:8000
|
# when its done, you can point your browser to http://yourdockerhost:8000
|
||||||
# type Ctrl-C to exit
|
# type Ctrl-C to exit
|
||||||
|
|
|
@ -95,7 +95,7 @@ your container with the docker build command, e.g.
|
||||||
Start the container with `apache2` and `sshd` running and managed, forwarding
|
Start the container with `apache2` and `sshd` running and managed, forwarding
|
||||||
a port to our SSH instance:
|
a port to our SSH instance:
|
||||||
|
|
||||||
docker run -p 127.0.0.1:222:22 -d managed_image "/usr/sbin/sshd" "/etc/init.d/apache2 start"
|
$ docker run -p 127.0.0.1:222:22 -d managed_image "/usr/sbin/sshd" "/etc/init.d/apache2 start"
|
||||||
|
|
||||||
We now clearly see one of the benefits of the cfe-docker integration: it
|
We now clearly see one of the benefits of the cfe-docker integration: it
|
||||||
allows to start several processes as part of a normal `docker run` command.
|
allows to start several processes as part of a normal `docker run` command.
|
||||||
|
|
|
@ -20,28 +20,28 @@ different versions of CouchDB on the same data, etc.
|
||||||
|
|
||||||
Note that we're marking `/var/lib/couchdb` as a data volume.
|
Note that we're marking `/var/lib/couchdb` as a data volume.
|
||||||
|
|
||||||
COUCH1=$(sudo docker run -d -p 5984 -v /var/lib/couchdb shykes/couchdb:2013-05-03)
|
$ COUCH1=$(sudo docker run -d -p 5984 -v /var/lib/couchdb shykes/couchdb:2013-05-03)
|
||||||
|
|
||||||
## Add data to the first database
|
## Add data to the first database
|
||||||
|
|
||||||
We're assuming your Docker host is reachable at `localhost`. If not,
|
We're assuming your Docker host is reachable at `localhost`. If not,
|
||||||
replace `localhost` with the public IP of your Docker host.
|
replace `localhost` with the public IP of your Docker host.
|
||||||
|
|
||||||
HOST=localhost
|
$ HOST=localhost
|
||||||
URL="http://$HOST:$(sudo docker port $COUCH1 5984 | grep -Po '\d+$')/_utils/"
|
$ URL="http://$HOST:$(sudo docker port $COUCH1 5984 | grep -Po '\d+$')/_utils/"
|
||||||
echo "Navigate to $URL in your browser, and use the couch interface to add data"
|
$ echo "Navigate to $URL in your browser, and use the couch interface to add data"
|
||||||
|
|
||||||
## Create second database
|
## Create second database
|
||||||
|
|
||||||
This time, we're requesting shared access to `$COUCH1`'s volumes.
|
This time, we're requesting shared access to `$COUCH1`'s volumes.
|
||||||
|
|
||||||
COUCH2=$(sudo docker run -d -p 5984 --volumes-from $COUCH1 shykes/couchdb:2013-05-03)
|
$ COUCH2=$(sudo docker run -d -p 5984 --volumes-from $COUCH1 shykes/couchdb:2013-05-03)
|
||||||
|
|
||||||
## Browse data on the second database
|
## Browse data on the second database
|
||||||
|
|
||||||
HOST=localhost
|
$ HOST=localhost
|
||||||
URL="http://$HOST:$(sudo docker port $COUCH2 5984 | grep -Po '\d+$')/_utils/"
|
$ URL="http://$HOST:$(sudo docker port $COUCH2 5984 | grep -Po '\d+$')/_utils/"
|
||||||
echo "Navigate to $URL in your browser. You should see the same data as in the first database"'!'
|
$ echo "Navigate to $URL in your browser. You should see the same data as in the first database"'!'
|
||||||
|
|
||||||
Congratulations, you are now running two Couchdb containers, completely
|
Congratulations, you are now running two Couchdb containers, completely
|
||||||
isolated from each other *except* for their data.
|
isolated from each other *except* for their data.
|
||||||
|
|
|
@ -80,7 +80,7 @@ continue to do this until we stop it.
|
||||||
|
|
||||||
**Steps:**
|
**Steps:**
|
||||||
|
|
||||||
CONTAINER_ID=$(sudo docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done")
|
$ CONTAINER_ID=$(sudo docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done")
|
||||||
|
|
||||||
We are going to run a simple hello world daemon in a new container made
|
We are going to run a simple hello world daemon in a new container made
|
||||||
from the `ubuntu` image.
|
from the `ubuntu` image.
|
||||||
|
@ -98,7 +98,7 @@ from the `ubuntu` image.
|
||||||
|
|
||||||
<!-- -->
|
<!-- -->
|
||||||
|
|
||||||
sudo docker logs $container_id
|
$ sudo docker logs $container_id
|
||||||
|
|
||||||
Check the logs make sure it is working correctly.
|
Check the logs make sure it is working correctly.
|
||||||
|
|
||||||
|
@ -107,7 +107,7 @@ Check the logs make sure it is working correctly.
|
||||||
|
|
||||||
<!-- -->
|
<!-- -->
|
||||||
|
|
||||||
sudo docker attach --sig-proxy=false $container_id
|
$ sudo docker attach --sig-proxy=false $container_id
|
||||||
|
|
||||||
Attach to the container to see the results in real-time.
|
Attach to the container to see the results in real-time.
|
||||||
|
|
||||||
|
@ -120,7 +120,7 @@ Attach to the container to see the results in real-time.
|
||||||
|
|
||||||
Exit from the container attachment by pressing Control-C.
|
Exit from the container attachment by pressing Control-C.
|
||||||
|
|
||||||
sudo docker ps
|
$ sudo docker ps
|
||||||
|
|
||||||
Check the process list to make sure it is running.
|
Check the process list to make sure it is running.
|
||||||
|
|
||||||
|
@ -128,7 +128,7 @@ Check the process list to make sure it is running.
|
||||||
|
|
||||||
<!-- -->
|
<!-- -->
|
||||||
|
|
||||||
sudo docker stop $container_id
|
$ sudo docker stop $container_id
|
||||||
|
|
||||||
Stop the container, since we don't need it anymore.
|
Stop the container, since we don't need it anymore.
|
||||||
|
|
||||||
|
@ -137,7 +137,7 @@ Stop the container, since we don't need it anymore.
|
||||||
|
|
||||||
<!-- -->
|
<!-- -->
|
||||||
|
|
||||||
sudo docker ps
|
$ sudo docker ps
|
||||||
|
|
||||||
Make sure it is really stopped.
|
Make sure it is really stopped.
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ apt source and installs the database software on Ubuntu.
|
||||||
|
|
||||||
Create an empty file called Dockerfile:
|
Create an empty file called Dockerfile:
|
||||||
|
|
||||||
touch Dockerfile
|
$ touch Dockerfile
|
||||||
|
|
||||||
Next, define the parent image you want to use to build your own image on
|
Next, define the parent image you want to use to build your own image on
|
||||||
top of. Here, we'll use [Ubuntu](https://index.docker.io/_/ubuntu/)
|
top of. Here, we'll use [Ubuntu](https://index.docker.io/_/ubuntu/)
|
||||||
|
@ -69,21 +69,21 @@ container.
|
||||||
Now, lets build the image which will go through the
|
Now, lets build the image which will go through the
|
||||||
Dockerfile we made and run all of the commands.
|
Dockerfile we made and run all of the commands.
|
||||||
|
|
||||||
sudo docker build -t <yourname>/mongodb .
|
$ sudo docker build -t <yourname>/mongodb .
|
||||||
|
|
||||||
Now you should be able to run `mongod` as a daemon
|
Now you should be able to run `mongod` as a daemon
|
||||||
and be able to connect on the local port!
|
and be able to connect on the local port!
|
||||||
|
|
||||||
# Regular style
|
# Regular style
|
||||||
MONGO_ID=$(sudo docker run -d <yourname>/mongodb)
|
$ MONGO_ID=$(sudo docker run -d <yourname>/mongodb)
|
||||||
|
|
||||||
# Lean and mean
|
# Lean and mean
|
||||||
MONGO_ID=$(sudo docker run -d <yourname>/mongodb --noprealloc --smallfiles)
|
$ MONGO_ID=$(sudo docker run -d <yourname>/mongodb --noprealloc --smallfiles)
|
||||||
|
|
||||||
# Check the logs out
|
# Check the logs out
|
||||||
sudo docker logs $MONGO_ID
|
$ sudo docker logs $MONGO_ID
|
||||||
|
|
||||||
# Connect and play around
|
# Connect and play around
|
||||||
mongo --port <port you get from `docker ps`>
|
$ mongo --port <port you get from `docker ps`>
|
||||||
|
|
||||||
Sweet!
|
Sweet!
|
||||||
|
|
|
@ -134,16 +134,16 @@ Go to the directory that has your `Dockerfile` and run the following command
|
||||||
to build a Docker image. The `-t` flag let's you tag your image so it's easier
|
to build a Docker image. The `-t` flag let's you tag your image so it's easier
|
||||||
to find later using the `docker images` command:
|
to find later using the `docker images` command:
|
||||||
|
|
||||||
sudo docker build -t <your username>/centos-node-hello .
|
$ sudo docker build -t <your username>/centos-node-hello .
|
||||||
|
|
||||||
Your image will now be listed by Docker:
|
Your image will now be listed by Docker:
|
||||||
|
|
||||||
sudo docker images
|
$ sudo docker images
|
||||||
|
|
||||||
> # Example
|
# Example
|
||||||
> REPOSITORY TAG ID CREATED
|
REPOSITORY TAG ID CREATED
|
||||||
> centos 6.4 539c0211cd76 8 weeks ago
|
centos 6.4 539c0211cd76 8 weeks ago
|
||||||
> gasi/centos-node-hello latest d64d3505b0d2 2 hours ago
|
gasi/centos-node-hello latest d64d3505b0d2 2 hours ago
|
||||||
|
|
||||||
## Run the image
|
## Run the image
|
||||||
|
|
||||||
|
@ -151,44 +151,44 @@ Running your image with `-d` runs the container in detached mode, leaving the
|
||||||
container running in the background. The `-p` flag redirects a public port to
|
container running in the background. The `-p` flag redirects a public port to
|
||||||
a private port in the container. Run the image you previously built:
|
a private port in the container. Run the image you previously built:
|
||||||
|
|
||||||
sudo docker run -p 49160:8080 -d <your username>/centos-node-hello
|
$ sudo docker run -p 49160:8080 -d <your username>/centos-node-hello
|
||||||
|
|
||||||
Print the output of your app:
|
Print the output of your app:
|
||||||
|
|
||||||
# Get container ID
|
# Get container ID
|
||||||
sudo docker ps
|
$ sudo docker ps
|
||||||
|
|
||||||
# Print app output
|
# Print app output
|
||||||
sudo docker logs <container id>
|
$ sudo docker logs <container id>
|
||||||
|
|
||||||
> # Example
|
# Example
|
||||||
> Running on http://localhost:8080
|
Running on http://localhost:8080
|
||||||
|
|
||||||
## Test
|
## Test
|
||||||
|
|
||||||
To test your app, get the the port of your app that Docker mapped:
|
To test your app, get the the port of your app that Docker mapped:
|
||||||
|
|
||||||
sudo docker ps
|
$ sudo docker ps
|
||||||
|
|
||||||
> # Example
|
# Example
|
||||||
> ID IMAGE COMMAND ... PORTS
|
ID IMAGE COMMAND ... PORTS
|
||||||
> ecce33b30ebf gasi/centos-node-hello:latest node /src/index.js 49160->8080
|
ecce33b30ebf gasi/centos-node-hello:latest node /src/index.js 49160->8080
|
||||||
|
|
||||||
In the example above, Docker mapped the `8080` port of the container to `49160`.
|
In the example above, Docker mapped the `8080` port of the container to `49160`.
|
||||||
|
|
||||||
Now you can call your app using `curl` (install if needed via:
|
Now you can call your app using `curl` (install if needed via:
|
||||||
`sudo apt-get install curl`):
|
`sudo apt-get install curl`):
|
||||||
|
|
||||||
curl -i localhost:49160
|
$ curl -i localhost:49160
|
||||||
|
|
||||||
> HTTP/1.1 200 OK
|
HTTP/1.1 200 OK
|
||||||
> X-Powered-By: Express
|
X-Powered-By: Express
|
||||||
> Content-Type: text/html; charset=utf-8
|
Content-Type: text/html; charset=utf-8
|
||||||
> Content-Length: 12
|
Content-Length: 12
|
||||||
> Date: Sun, 02 Jun 2013 03:53:22 GMT
|
Date: Sun, 02 Jun 2013 03:53:22 GMT
|
||||||
> Connection: keep-alive
|
Connection: keep-alive
|
||||||
>
|
|
||||||
> Hello World
|
Hello World
|
||||||
|
|
||||||
We hope this tutorial helped you get up and running with Node.js and
|
We hope this tutorial helped you get up and running with Node.js and
|
||||||
CentOS on Docker. You can get the full source code at
|
CentOS on Docker. You can get the full source code at
|
||||||
|
|
|
@ -125,14 +125,14 @@ prompt, you can create a table and populate it.
|
||||||
psql (9.3.1)
|
psql (9.3.1)
|
||||||
Type "help" for help.
|
Type "help" for help.
|
||||||
|
|
||||||
docker=# CREATE TABLE cities (
|
$ docker=# CREATE TABLE cities (
|
||||||
docker(# name varchar(80),
|
docker(# name varchar(80),
|
||||||
docker(# location point
|
docker(# location point
|
||||||
docker(# );
|
docker(# );
|
||||||
CREATE TABLE
|
CREATE TABLE
|
||||||
docker=# INSERT INTO cities VALUES ('San Francisco', '(-194.0, 53.0)');
|
$ docker=# INSERT INTO cities VALUES ('San Francisco', '(-194.0, 53.0)');
|
||||||
INSERT 0 1
|
INSERT 0 1
|
||||||
docker=# select * from cities;
|
$ docker=# select * from cities;
|
||||||
name | location
|
name | location
|
||||||
---------------+-----------
|
---------------+-----------
|
||||||
San Francisco | (-194,53)
|
San Francisco | (-194,53)
|
||||||
|
@ -143,7 +143,7 @@ prompt, you can create a table and populate it.
|
||||||
You can use the defined volumes to inspect the PostgreSQL log files and
|
You can use the defined volumes to inspect the PostgreSQL log files and
|
||||||
to backup your configuration and data:
|
to backup your configuration and data:
|
||||||
|
|
||||||
docker run -rm --volumes-from pg_test -t -i busybox sh
|
$ docker run -rm --volumes-from pg_test -t -i busybox sh
|
||||||
|
|
||||||
/ # ls
|
/ # ls
|
||||||
bin etc lib linuxrc mnt proc run sys usr
|
bin etc lib linuxrc mnt proc run sys usr
|
||||||
|
|
|
@ -29,7 +29,7 @@ image.
|
||||||
Next we build an image from our `Dockerfile`.
|
Next we build an image from our `Dockerfile`.
|
||||||
Replace `<your username>` with your own user name.
|
Replace `<your username>` with your own user name.
|
||||||
|
|
||||||
sudo docker build -t <your username>/redis .
|
$ sudo docker build -t <your username>/redis .
|
||||||
|
|
||||||
## Run the service
|
## Run the service
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ Importantly, we're not exposing any ports on our container. Instead
|
||||||
we're going to use a container link to provide access to our Redis
|
we're going to use a container link to provide access to our Redis
|
||||||
database.
|
database.
|
||||||
|
|
||||||
sudo docker run --name redis -d <your username>/redis
|
$ sudo docker run --name redis -d <your username>/redis
|
||||||
|
|
||||||
## Create your web application container
|
## Create your web application container
|
||||||
|
|
||||||
|
@ -52,19 +52,19 @@ created with an alias of `db`. This will create a secure tunnel to the
|
||||||
`redis` container and expose the Redis instance running inside that
|
`redis` container and expose the Redis instance running inside that
|
||||||
container to only this container.
|
container to only this container.
|
||||||
|
|
||||||
sudo docker run --link redis:db -i -t ubuntu:12.10 /bin/bash
|
$ sudo docker run --link redis:db -i -t ubuntu:12.10 /bin/bash
|
||||||
|
|
||||||
Once inside our freshly created container we need to install Redis to
|
Once inside our freshly created container we need to install Redis to
|
||||||
get the `redis-cli` binary to test our connection.
|
get the `redis-cli` binary to test our connection.
|
||||||
|
|
||||||
apt-get update
|
$ apt-get update
|
||||||
apt-get -y install redis-server
|
$ apt-get -y install redis-server
|
||||||
service redis-server stop
|
$ service redis-server stop
|
||||||
|
|
||||||
As we've used the `--link redis:db` option, Docker
|
As we've used the `--link redis:db` option, Docker
|
||||||
has created some environment variables in our web application container.
|
has created some environment variables in our web application container.
|
||||||
|
|
||||||
env | grep DB_
|
$ env | grep DB_
|
||||||
|
|
||||||
# Should return something similar to this with your values
|
# Should return something similar to this with your values
|
||||||
DB_NAME=/violet_wolf/db
|
DB_NAME=/violet_wolf/db
|
||||||
|
@ -79,13 +79,13 @@ with `DB`. The `DB` comes from the link alias specified when we launched
|
||||||
the container. Let's use the `DB_PORT_6379_TCP_ADDR` variable to connect to
|
the container. Let's use the `DB_PORT_6379_TCP_ADDR` variable to connect to
|
||||||
our Redis container.
|
our Redis container.
|
||||||
|
|
||||||
redis-cli -h $DB_PORT_6379_TCP_ADDR
|
$ redis-cli -h $DB_PORT_6379_TCP_ADDR
|
||||||
redis 172.17.0.33:6379>
|
$ redis 172.17.0.33:6379>
|
||||||
redis 172.17.0.33:6379> set docker awesome
|
$ redis 172.17.0.33:6379> set docker awesome
|
||||||
OK
|
OK
|
||||||
redis 172.17.0.33:6379> get docker
|
$ redis 172.17.0.33:6379> get docker
|
||||||
"awesome"
|
"awesome"
|
||||||
redis 172.17.0.33:6379> exit
|
$ redis 172.17.0.33:6379> exit
|
||||||
|
|
||||||
We could easily use this or other environment variables in our web
|
We could easily use this or other environment variables in our web
|
||||||
application to make a connection to our `redis`
|
application to make a connection to our `redis`
|
||||||
|
|
|
@ -19,7 +19,7 @@ Riak pre-installed.
|
||||||
|
|
||||||
Create an empty file called Dockerfile:
|
Create an empty file called Dockerfile:
|
||||||
|
|
||||||
touch Dockerfile
|
$ touch Dockerfile
|
||||||
|
|
||||||
Next, define the parent image you want to use to build your image on top
|
Next, define the parent image you want to use to build your image on top
|
||||||
of. We'll use [Ubuntu](https://index.docker.io/_/ubuntu/) (tag:
|
of. We'll use [Ubuntu](https://index.docker.io/_/ubuntu/) (tag:
|
||||||
|
@ -126,7 +126,7 @@ Populate it with the following program definitions:
|
||||||
|
|
||||||
Now you should be able to build a Docker image for Riak:
|
Now you should be able to build a Docker image for Riak:
|
||||||
|
|
||||||
docker build -t "<yourname>/riak" .
|
$ docker build -t "<yourname>/riak" .
|
||||||
|
|
||||||
## Next steps
|
## Next steps
|
||||||
|
|
||||||
|
|
|
@ -99,13 +99,13 @@ launches.
|
||||||
|
|
||||||
We can now build our new container.
|
We can now build our new container.
|
||||||
|
|
||||||
sudo docker build -t <yourname>/supervisord .
|
$ sudo docker build -t <yourname>/supervisord .
|
||||||
|
|
||||||
## Running our Supervisor container
|
## Running our Supervisor container
|
||||||
|
|
||||||
Once We've got a built image we can launch a container from it.
|
Once We've got a built image we can launch a container from it.
|
||||||
|
|
||||||
sudo docker run -p 22 -p 80 -t -i <yourname>/supervisord
|
$ sudo docker run -p 22 -p 80 -t -i <yourname>/supervisord
|
||||||
2013-11-25 18:53:22,312 CRIT Supervisor running as root (no user in config file)
|
2013-11-25 18:53:22,312 CRIT Supervisor running as root (no user in config file)
|
||||||
2013-11-25 18:53:22,312 WARN Included extra file "/etc/supervisor/conf.d/supervisord.conf" during parsing
|
2013-11-25 18:53:22,312 WARN Included extra file "/etc/supervisor/conf.d/supervisord.conf" during parsing
|
||||||
2013-11-25 18:53:22,342 INFO supervisord started with pid 1
|
2013-11-25 18:53:22,342 INFO supervisord started with pid 1
|
||||||
|
|
|
@ -60,8 +60,8 @@ have not done so before.
|
||||||
There is a systemd service unit created for docker. To start the docker
|
There is a systemd service unit created for docker. To start the docker
|
||||||
service:
|
service:
|
||||||
|
|
||||||
sudo systemctl start docker
|
$ sudo systemctl start docker
|
||||||
|
|
||||||
To start on system boot:
|
To start on system boot:
|
||||||
|
|
||||||
sudo systemctl enable docker
|
$ sudo systemctl enable docker
|
||||||
|
|
|
@ -46,8 +46,8 @@ Linux kernel (it even builds on OSX!).
|
||||||
|
|
||||||
## Get the docker binary:
|
## Get the docker binary:
|
||||||
|
|
||||||
wget https://get.docker.io/builds/Linux/x86_64/docker-latest -O docker
|
$ wget https://get.docker.io/builds/Linux/x86_64/docker-latest -O docker
|
||||||
chmod +x docker
|
$ chmod +x docker
|
||||||
|
|
||||||
> **Note**:
|
> **Note**:
|
||||||
> If you have trouble downloading the binary, you can also get the smaller
|
> If you have trouble downloading the binary, you can also get the smaller
|
||||||
|
@ -58,7 +58,7 @@ Linux kernel (it even builds on OSX!).
|
||||||
## Run the docker daemon
|
## Run the docker daemon
|
||||||
|
|
||||||
# start the docker in daemon mode from the directory you unpacked
|
# start the docker in daemon mode from the directory you unpacked
|
||||||
sudo ./docker -d &
|
$ sudo ./docker -d &
|
||||||
|
|
||||||
## Giving non-root access
|
## Giving non-root access
|
||||||
|
|
||||||
|
@ -87,16 +87,16 @@ all the client commands.
|
||||||
To upgrade your manual installation of Docker, first kill the docker
|
To upgrade your manual installation of Docker, first kill the docker
|
||||||
daemon:
|
daemon:
|
||||||
|
|
||||||
killall docker
|
$ killall docker
|
||||||
|
|
||||||
Then follow the regular installation steps.
|
Then follow the regular installation steps.
|
||||||
|
|
||||||
## Run your first container!
|
## Run your first container!
|
||||||
|
|
||||||
# check your docker version
|
# check your docker version
|
||||||
sudo ./docker version
|
$ sudo ./docker version
|
||||||
|
|
||||||
# run a container and open an interactive shell in the container
|
# run a container and open an interactive shell in the container
|
||||||
sudo ./docker run -i -t ubuntu /bin/bash
|
$ sudo ./docker run -i -t ubuntu /bin/bash
|
||||||
|
|
||||||
Continue with the [*Hello World*](/examples/hello_world/#hello-world) example.
|
Continue with the [*Hello World*](/examples/hello_world/#hello-world) example.
|
||||||
|
|
|
@ -39,24 +39,24 @@ do so via:
|
||||||
Download the `httpup` file to
|
Download the `httpup` file to
|
||||||
`/etc/ports/`:
|
`/etc/ports/`:
|
||||||
|
|
||||||
curl -q -o - http://crux.nu/portdb/?a=getup&q=prologic > /etc/ports/prologic.httpup
|
$ curl -q -o - http://crux.nu/portdb/?a=getup&q=prologic > /etc/ports/prologic.httpup
|
||||||
|
|
||||||
Add `prtdir /usr/ports/prologic` to
|
Add `prtdir /usr/ports/prologic` to
|
||||||
`/etc/prt-get.conf`:
|
`/etc/prt-get.conf`:
|
||||||
|
|
||||||
vim /etc/prt-get.conf
|
$ vim /etc/prt-get.conf
|
||||||
|
|
||||||
# or:
|
# or:
|
||||||
echo "prtdir /usr/ports/prologic" >> /etc/prt-get.conf
|
$ echo "prtdir /usr/ports/prologic" >> /etc/prt-get.conf
|
||||||
|
|
||||||
Update ports and prt-get cache:
|
Update ports and prt-get cache:
|
||||||
|
|
||||||
ports -u
|
$ ports -u
|
||||||
prt-get cache
|
$ prt-get cache
|
||||||
|
|
||||||
To install (*and its dependencies*):
|
To install (*and its dependencies*):
|
||||||
|
|
||||||
prt-get depinst docker
|
$ prt-get depinst docker
|
||||||
|
|
||||||
Use `docker-bin` for the upstream binary or
|
Use `docker-bin` for the upstream binary or
|
||||||
`docker-git` to build and install from the master
|
`docker-git` to build and install from the master
|
||||||
|
@ -70,20 +70,20 @@ and Docker Daemon to work properly.
|
||||||
|
|
||||||
Please read the `README.rst`:
|
Please read the `README.rst`:
|
||||||
|
|
||||||
prt-get readme docker
|
$ prt-get readme docker
|
||||||
|
|
||||||
There is a `test_kernel_config.sh` script in the
|
There is a `test_kernel_config.sh` script in the
|
||||||
above ports which you can use to test your Kernel configuration:
|
above ports which you can use to test your Kernel configuration:
|
||||||
|
|
||||||
cd /usr/ports/prologic/docker
|
$ cd /usr/ports/prologic/docker
|
||||||
./test_kernel_config.sh /usr/src/linux/.config
|
$ ./test_kernel_config.sh /usr/src/linux/.config
|
||||||
|
|
||||||
## Starting Docker
|
## Starting Docker
|
||||||
|
|
||||||
There is a rc script created for Docker. To start the Docker service:
|
There is a rc script created for Docker. To start the Docker service:
|
||||||
|
|
||||||
sudo su -
|
$ sudo su -
|
||||||
/etc/rc.d/docker start
|
$ /etc/rc.d/docker start
|
||||||
|
|
||||||
To start on system boot:
|
To start on system boot:
|
||||||
|
|
||||||
|
|
|
@ -30,35 +30,35 @@ report](https://bugzilla.redhat.com/show_bug.cgi?id=1043676) filed for
|
||||||
it. To proceed with `docker-io` installation on Fedora 19, please remove
|
it. To proceed with `docker-io` installation on Fedora 19, please remove
|
||||||
`docker` first.
|
`docker` first.
|
||||||
|
|
||||||
sudo yum -y remove docker
|
$ sudo yum -y remove docker
|
||||||
|
|
||||||
For Fedora 20 and later, the `wmdocker` package will
|
For Fedora 20 and later, the `wmdocker` package will
|
||||||
provide the same functionality as `docker` and will
|
provide the same functionality as `docker` and will
|
||||||
also not conflict with `docker-io`.
|
also not conflict with `docker-io`.
|
||||||
|
|
||||||
sudo yum -y install wmdocker
|
$ sudo yum -y install wmdocker
|
||||||
sudo yum -y remove docker
|
$ sudo yum -y remove docker
|
||||||
|
|
||||||
Install the `docker-io` package which will install
|
Install the `docker-io` package which will install
|
||||||
Docker on our host.
|
Docker on our host.
|
||||||
|
|
||||||
sudo yum -y install docker-io
|
$ sudo yum -y install docker-io
|
||||||
|
|
||||||
To update the `docker-io` package:
|
To update the `docker-io` package:
|
||||||
|
|
||||||
sudo yum -y update docker-io
|
$ sudo yum -y update docker-io
|
||||||
|
|
||||||
Now that it's installed, let's start the Docker daemon.
|
Now that it's installed, let's start the Docker daemon.
|
||||||
|
|
||||||
sudo systemctl start docker
|
$ sudo systemctl start docker
|
||||||
|
|
||||||
If we want Docker to start at boot, we should also:
|
If we want Docker to start at boot, we should also:
|
||||||
|
|
||||||
sudo systemctl enable docker
|
$ sudo systemctl enable docker
|
||||||
|
|
||||||
Now let's verify that Docker is working.
|
Now let's verify that Docker is working.
|
||||||
|
|
||||||
sudo docker run -i -t fedora /bin/bash
|
$ sudo docker run -i -t fedora /bin/bash
|
||||||
|
|
||||||
**Done!**, now continue with the [*Hello
|
**Done!**, now continue with the [*Hello
|
||||||
World*](/examples/hello_world/#hello-world) example.
|
World*](/examples/hello_world/#hello-world) example.
|
||||||
|
|
|
@ -49,8 +49,8 @@ is all that is needed.
|
||||||
There is a systemd service unit created for Docker. To start Docker as
|
There is a systemd service unit created for Docker. To start Docker as
|
||||||
service:
|
service:
|
||||||
|
|
||||||
sudo systemctl start lxc-docker
|
$ sudo systemctl start lxc-docker
|
||||||
|
|
||||||
To start on system boot:
|
To start on system boot:
|
||||||
|
|
||||||
sudo systemctl enable lxc-docker
|
$ sudo systemctl enable lxc-docker
|
||||||
|
|
|
@ -43,7 +43,7 @@ use flags to pull in the proper dependencies of the major storage
|
||||||
drivers, with the "device-mapper" use flag being enabled by default,
|
drivers, with the "device-mapper" use flag being enabled by default,
|
||||||
since that is the simplest installation path.
|
since that is the simplest installation path.
|
||||||
|
|
||||||
sudo emerge -av app-emulation/docker
|
$ sudo emerge -av app-emulation/docker
|
||||||
|
|
||||||
If any issues arise from this ebuild or the resulting binary, including
|
If any issues arise from this ebuild or the resulting binary, including
|
||||||
and especially missing kernel configuration flags and/or dependencies,
|
and especially missing kernel configuration flags and/or dependencies,
|
||||||
|
@ -61,18 +61,18 @@ and/or AUFS, depending on the storage driver you`ve decided to use).
|
||||||
|
|
||||||
To start the docker daemon:
|
To start the docker daemon:
|
||||||
|
|
||||||
sudo /etc/init.d/docker start
|
$ sudo /etc/init.d/docker start
|
||||||
|
|
||||||
To start on system boot:
|
To start on system boot:
|
||||||
|
|
||||||
sudo rc-update add docker default
|
$ sudo rc-update add docker default
|
||||||
|
|
||||||
### systemd
|
### systemd
|
||||||
|
|
||||||
To start the docker daemon:
|
To start the docker daemon:
|
||||||
|
|
||||||
sudo systemctl start docker.service
|
$ sudo systemctl start docker.service
|
||||||
|
|
||||||
To start on system boot:
|
To start on system boot:
|
||||||
|
|
||||||
sudo systemctl enable docker.service
|
$ sudo systemctl enable docker.service
|
||||||
|
|
|
@ -45,19 +45,19 @@ page_keywords: Docker, Docker documentation, installation, google, Google Comput
|
||||||
<!-- -->
|
<!-- -->
|
||||||
|
|
||||||
$ gcutil ssh docker-playground
|
$ gcutil ssh docker-playground
|
||||||
docker-playground:~$
|
$ docker-playground:~$
|
||||||
|
|
||||||
5. Install the latest Docker release and configure it to start when the
|
5. Install the latest Docker release and configure it to start when the
|
||||||
instance boots:
|
instance boots:
|
||||||
|
|
||||||
<!-- -->
|
<!-- -->
|
||||||
|
|
||||||
docker-playground:~$ curl get.docker.io | bash
|
$ docker-playground:~$ curl get.docker.io | bash
|
||||||
docker-playground:~$ sudo update-rc.d docker defaults
|
$ docker-playground:~$ sudo update-rc.d docker defaults
|
||||||
|
|
||||||
6. Start a new container:
|
6. Start a new container:
|
||||||
|
|
||||||
<!-- -->
|
<!-- -->
|
||||||
|
|
||||||
docker-playground:~$ sudo docker run busybox echo 'docker on GCE \o/'
|
$ docker-playground:~$ sudo docker run busybox echo 'docker on GCE \o/'
|
||||||
docker on GCE \o/
|
$ docker on GCE \o/
|
||||||
|
|
|
@ -40,7 +40,7 @@ image that is used for the job.
|
||||||
If you are using Homebrew on your machine, simply run the following
|
If you are using Homebrew on your machine, simply run the following
|
||||||
command to install `boot2docker`:
|
command to install `boot2docker`:
|
||||||
|
|
||||||
brew install boot2docker
|
$ brew install boot2docker
|
||||||
|
|
||||||
#### Manual installation
|
#### Manual installation
|
||||||
|
|
||||||
|
@ -49,13 +49,13 @@ Open up a new terminal window, if you have not already.
|
||||||
Run the following commands to get boot2docker:
|
Run the following commands to get boot2docker:
|
||||||
|
|
||||||
# Enter the installation directory
|
# Enter the installation directory
|
||||||
cd ~/bin
|
$ cd ~/bin
|
||||||
|
|
||||||
# Get the file
|
# Get the file
|
||||||
curl https://raw.github.com/boot2docker/boot2docker/master/boot2docker > boot2docker
|
$ curl https://raw.github.com/boot2docker/boot2docker/master/boot2docker > boot2docker
|
||||||
|
|
||||||
# Mark it executable
|
# Mark it executable
|
||||||
chmod +x boot2docker
|
$ chmod +x boot2docker
|
||||||
|
|
||||||
### Docker OS X Client
|
### Docker OS X Client
|
||||||
|
|
||||||
|
@ -67,25 +67,25 @@ The `docker` daemon is accessed using the
|
||||||
Run the following command to install the `docker`
|
Run the following command to install the `docker`
|
||||||
client:
|
client:
|
||||||
|
|
||||||
brew install docker
|
$ brew install docker
|
||||||
|
|
||||||
#### Manual installation
|
#### Manual installation
|
||||||
|
|
||||||
Run the following commands to get it downloaded and set up:
|
Run the following commands to get it downloaded and set up:
|
||||||
|
|
||||||
# Get the docker client file
|
# Get the docker client file
|
||||||
DIR=$(mktemp -d ${TMPDIR:-/tmp}/dockerdl.XXXXXXX) && \
|
$ DIR=$(mktemp -d ${TMPDIR:-/tmp}/dockerdl.XXXXXXX) && \
|
||||||
curl -f -o $DIR/ld.tgz https://get.docker.io/builds/Darwin/x86_64/docker-latest.tgz && \
|
$ curl -f -o $DIR/ld.tgz https://get.docker.io/builds/Darwin/x86_64/docker-latest.tgz && \
|
||||||
gunzip $DIR/ld.tgz && \
|
$ gunzip $DIR/ld.tgz && \
|
||||||
tar xvf $DIR/ld.tar -C $DIR/ && \
|
$ tar xvf $DIR/ld.tar -C $DIR/ && \
|
||||||
cp $DIR/usr/local/bin/docker ./docker
|
$ cp $DIR/usr/local/bin/docker ./docker
|
||||||
|
|
||||||
# Set the environment variable for the docker daemon
|
# Set the environment variable for the docker daemon
|
||||||
export DOCKER_HOST=tcp://127.0.0.1:4243
|
$ export DOCKER_HOST=tcp://127.0.0.1:4243
|
||||||
|
|
||||||
# Copy the executable file
|
# Copy the executable file
|
||||||
sudo mkdir -p /usr/local/bin
|
$ sudo mkdir -p /usr/local/bin
|
||||||
sudo cp docker /usr/local/bin/
|
$ sudo cp docker /usr/local/bin/
|
||||||
|
|
||||||
And that's it! Let's check out how to use it.
|
And that's it! Let's check out how to use it.
|
||||||
|
|
||||||
|
@ -97,13 +97,13 @@ Inside the `~/bin` directory, run the following
|
||||||
commands:
|
commands:
|
||||||
|
|
||||||
# Initiate the VM
|
# Initiate the VM
|
||||||
./boot2docker init
|
$ ./boot2docker init
|
||||||
|
|
||||||
# Run the VM (the docker daemon)
|
# Run the VM (the docker daemon)
|
||||||
./boot2docker up
|
$ ./boot2docker up
|
||||||
|
|
||||||
# To see all available commands:
|
# To see all available commands:
|
||||||
./boot2docker
|
$ ./boot2docker
|
||||||
|
|
||||||
# Usage ./boot2docker {init|start|up|pause|stop|restart|status|info|delete|ssh|download}
|
# Usage ./boot2docker {init|start|up|pause|stop|restart|status|info|delete|ssh|download}
|
||||||
|
|
||||||
|
@ -113,7 +113,7 @@ Once the VM with the `docker` daemon is up, you can
|
||||||
use the `docker` client just like any other
|
use the `docker` client just like any other
|
||||||
application.
|
application.
|
||||||
|
|
||||||
docker version
|
$ docker version
|
||||||
# Client version: 0.7.6
|
# Client version: 0.7.6
|
||||||
# Go version (client): go1.2
|
# Go version (client): go1.2
|
||||||
# Git commit (client): bc3b2ec
|
# Git commit (client): bc3b2ec
|
||||||
|
@ -137,7 +137,7 @@ interact with our containers as if they were running locally:
|
||||||
|
|
||||||
If you feel the need to connect to the VM, you can simply run:
|
If you feel the need to connect to the VM, you can simply run:
|
||||||
|
|
||||||
./boot2docker ssh
|
$ ./boot2docker ssh
|
||||||
|
|
||||||
# User: docker
|
# User: docker
|
||||||
# Pwd: tcuser
|
# Pwd: tcuser
|
||||||
|
@ -154,7 +154,7 @@ See the GitHub page for
|
||||||
|
|
||||||
### If SSH complains about keys:
|
### If SSH complains about keys:
|
||||||
|
|
||||||
ssh-keygen -R '[localhost]:2022'
|
$ ssh-keygen -R '[localhost]:2022'
|
||||||
|
|
||||||
### Upgrading to a newer release of boot2docker
|
### Upgrading to a newer release of boot2docker
|
||||||
|
|
||||||
|
@ -162,9 +162,9 @@ To upgrade an initialised VM, you can use the following 3 commands. Your
|
||||||
persistence disk will not be changed, so you won't lose your images and
|
persistence disk will not be changed, so you won't lose your images and
|
||||||
containers:
|
containers:
|
||||||
|
|
||||||
./boot2docker stop
|
$ ./boot2docker stop
|
||||||
./boot2docker download
|
$ ./boot2docker download
|
||||||
./boot2docker start
|
$ ./boot2docker start
|
||||||
|
|
||||||
### About the way Docker works on Mac OS X:
|
### About the way Docker works on Mac OS X:
|
||||||
|
|
||||||
|
|
|
@ -30,14 +30,14 @@ To proceed with Docker installation please add the right Virtualization
|
||||||
repository.
|
repository.
|
||||||
|
|
||||||
# openSUSE 12.3
|
# openSUSE 12.3
|
||||||
sudo zypper ar -f http://download.opensuse.org/repositories/Virtualization/openSUSE_12.3/ Virtualization
|
$ sudo zypper ar -f http://download.opensuse.org/repositories/Virtualization/openSUSE_12.3/ Virtualization
|
||||||
|
|
||||||
# openSUSE 13.1
|
# openSUSE 13.1
|
||||||
sudo zypper ar -f http://download.opensuse.org/repositories/Virtualization/openSUSE_13.1/ Virtualization
|
$ sudo zypper ar -f http://download.opensuse.org/repositories/Virtualization/openSUSE_13.1/ Virtualization
|
||||||
|
|
||||||
Install the Docker package.
|
Install the Docker package.
|
||||||
|
|
||||||
sudo zypper in docker
|
$ sudo zypper in docker
|
||||||
|
|
||||||
It's also possible to install Docker using openSUSE's1-click install.
|
It's also possible to install Docker using openSUSE's1-click install.
|
||||||
Just visit [this](http://software.opensuse.org/package/docker) page,
|
Just visit [this](http://software.opensuse.org/package/docker) page,
|
||||||
|
@ -47,17 +47,17 @@ the docker package.
|
||||||
|
|
||||||
Now that it's installed, let's start the Docker daemon.
|
Now that it's installed, let's start the Docker daemon.
|
||||||
|
|
||||||
sudo systemctl start docker
|
$ sudo systemctl start docker
|
||||||
|
|
||||||
If we want Docker to start at boot, we should also:
|
If we want Docker to start at boot, we should also:
|
||||||
|
|
||||||
sudo systemctl enable docker
|
$ sudo systemctl enable docker
|
||||||
|
|
||||||
The docker package creates a new group named docker. Users, other than
|
The docker package creates a new group named docker. Users, other than
|
||||||
root user, need to be part of this group in order to interact with the
|
root user, need to be part of this group in order to interact with the
|
||||||
Docker daemon.
|
Docker daemon.
|
||||||
|
|
||||||
sudo usermod -G docker <username>
|
$ sudo usermod -G docker <username>
|
||||||
|
|
||||||
**Done!**
|
**Done!**
|
||||||
Now continue with the [*Hello World*](
|
Now continue with the [*Hello World*](
|
||||||
|
|
|
@ -29,16 +29,16 @@ you will need to set the kernel manually.
|
||||||
**Do not attempt this on a production machine!**
|
**Do not attempt this on a production machine!**
|
||||||
|
|
||||||
# update apt
|
# update apt
|
||||||
apt-get update
|
$ apt-get update
|
||||||
|
|
||||||
# install the new kernel
|
# install the new kernel
|
||||||
apt-get install linux-generic-lts-raring
|
$ apt-get install linux-generic-lts-raring
|
||||||
|
|
||||||
Great, now you have the kernel installed in `/boot/`, next you need to
|
Great, now you have the kernel installed in `/boot/`, next you need to
|
||||||
make it boot next time.
|
make it boot next time.
|
||||||
|
|
||||||
# find the exact names
|
# find the exact names
|
||||||
find /boot/ -name '*3.8*'
|
$ find /boot/ -name '*3.8*'
|
||||||
|
|
||||||
# this should return some results
|
# this should return some results
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ the right files.
|
||||||
Take special care to double check the kernel and initrd entries.
|
Take special care to double check the kernel and initrd entries.
|
||||||
|
|
||||||
# now edit /boot/grub/menu.lst
|
# now edit /boot/grub/menu.lst
|
||||||
vi /boot/grub/menu.lst
|
$ vi /boot/grub/menu.lst
|
||||||
|
|
||||||
It will probably look something like this:
|
It will probably look something like this:
|
||||||
|
|
||||||
|
@ -78,7 +78,7 @@ Reboot the server (either via command line or console)
|
||||||
|
|
||||||
Verify the kernel was updated
|
Verify the kernel was updated
|
||||||
|
|
||||||
uname -a
|
$ uname -a
|
||||||
# Linux docker-12-04 3.8.0-19-generic #30~precise1-Ubuntu SMP Wed May 1 22:26:36 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
|
# Linux docker-12-04 3.8.0-19-generic #30~precise1-Ubuntu SMP Wed May 1 22:26:36 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
|
||||||
|
|
||||||
# nice! 3.8.
|
# nice! 3.8.
|
||||||
|
|
|
@ -49,23 +49,23 @@ To proceed with `docker-io` installation, please remove `docker` first.
|
||||||
Next, let's install the `docker-io` package which
|
Next, let's install the `docker-io` package which
|
||||||
will install Docker on our host.
|
will install Docker on our host.
|
||||||
|
|
||||||
sudo yum -y install docker-io
|
$ sudo yum -y install docker-io
|
||||||
|
|
||||||
To update the `docker-io` package
|
To update the `docker-io` package
|
||||||
|
|
||||||
sudo yum -y update docker-io
|
$ sudo yum -y update docker-io
|
||||||
|
|
||||||
Now that it's installed, let's start the Docker daemon.
|
Now that it's installed, let's start the Docker daemon.
|
||||||
|
|
||||||
sudo service docker start
|
$ sudo service docker start
|
||||||
|
|
||||||
If we want Docker to start at boot, we should also:
|
If we want Docker to start at boot, we should also:
|
||||||
|
|
||||||
sudo chkconfig docker on
|
$ sudo chkconfig docker on
|
||||||
|
|
||||||
Now let's verify that Docker is working.
|
Now let's verify that Docker is working.
|
||||||
|
|
||||||
sudo docker run -i -t fedora /bin/bash
|
$ sudo docker run -i -t fedora /bin/bash
|
||||||
|
|
||||||
**Done!**
|
**Done!**
|
||||||
Now continue with the [*Hello World*](/examples/hello_world/#hello-world) example.
|
Now continue with the [*Hello World*](/examples/hello_world/#hello-world) example.
|
||||||
|
|
|
@ -33,13 +33,13 @@ installs all its prerequisites from Ubuntu's repository.
|
||||||
|
|
||||||
To install the latest Ubuntu package (may not be the latest Docker release):
|
To install the latest Ubuntu package (may not be the latest Docker release):
|
||||||
|
|
||||||
sudo apt-get update
|
$ sudo apt-get update
|
||||||
sudo apt-get install docker.io
|
$ sudo apt-get install docker.io
|
||||||
sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
|
$ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
|
||||||
|
|
||||||
To verify that everything has worked as expected:
|
To verify that everything has worked as expected:
|
||||||
|
|
||||||
sudo docker run -i -t ubuntu /bin/bash
|
$ sudo docker run -i -t ubuntu /bin/bash
|
||||||
|
|
||||||
Which should download the `ubuntu` image, and then start `bash` in a container.
|
Which should download the `ubuntu` image, and then start `bash` in a container.
|
||||||
|
|
||||||
|
@ -61,11 +61,11 @@ VirtualBox guest additions. If you didn't install the headers for your
|
||||||
kernel. But it is safer to include them if you're not sure.
|
kernel. But it is safer to include them if you're not sure.
|
||||||
|
|
||||||
# install the backported kernel
|
# install the backported kernel
|
||||||
sudo apt-get update
|
$ sudo apt-get update
|
||||||
sudo apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring
|
$ sudo apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring
|
||||||
|
|
||||||
# reboot
|
# reboot
|
||||||
sudo reboot
|
$ sudo reboot
|
||||||
|
|
||||||
### Installation
|
### Installation
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ should exist. If it doesn't, you need to install the package
|
||||||
|
|
||||||
Then, add the Docker repository key to your local keychain.
|
Then, add the Docker repository key to your local keychain.
|
||||||
|
|
||||||
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
|
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
|
||||||
|
|
||||||
Add the Docker repository to your apt sources list, update and install
|
Add the Docker repository to your apt sources list, update and install
|
||||||
the `lxc-docker` package.
|
the `lxc-docker` package.
|
||||||
|
@ -98,21 +98,21 @@ the `lxc-docker` package.
|
||||||
*You may receive a warning that the package isn't trusted. Answer yes to
|
*You may receive a warning that the package isn't trusted. Answer yes to
|
||||||
continue installation.*
|
continue installation.*
|
||||||
|
|
||||||
sudo sh -c "echo deb https://get.docker.io/ubuntu docker main\
|
$ sudo sh -c "echo deb https://get.docker.io/ubuntu docker main\
|
||||||
> /etc/apt/sources.list.d/docker.list"
|
> /etc/apt/sources.list.d/docker.list"
|
||||||
sudo apt-get update
|
$ sudo apt-get update
|
||||||
sudo apt-get install lxc-docker
|
$ sudo apt-get install lxc-docker
|
||||||
|
|
||||||
> **Note**:
|
> **Note**:
|
||||||
>
|
>
|
||||||
> There is also a simple `curl` script available to help with this process.
|
> There is also a simple `curl` script available to help with this process.
|
||||||
>
|
>
|
||||||
> curl -s https://get.docker.io/ubuntu/ | sudo sh
|
> $ curl -s https://get.docker.io/ubuntu/ | sudo sh
|
||||||
|
|
||||||
Now verify that the installation has worked by downloading the
|
Now verify that the installation has worked by downloading the
|
||||||
`ubuntu` image and launching a container.
|
`ubuntu` image and launching a container.
|
||||||
|
|
||||||
sudo docker run -i -t ubuntu /bin/bash
|
$ sudo docker run -i -t ubuntu /bin/bash
|
||||||
|
|
||||||
Type `exit` to exit
|
Type `exit` to exit
|
||||||
|
|
||||||
|
@ -134,8 +134,8 @@ available as a driver and we recommend using it if you can.
|
||||||
|
|
||||||
To make sure AUFS is installed, run the following commands:
|
To make sure AUFS is installed, run the following commands:
|
||||||
|
|
||||||
sudo apt-get update
|
$ sudo apt-get update
|
||||||
sudo apt-get install linux-image-extra-`uname -r`
|
$ sudo apt-get install linux-image-extra-`uname -r`
|
||||||
|
|
||||||
### Installation
|
### Installation
|
||||||
|
|
||||||
|
@ -147,20 +147,20 @@ Docker is available as a Debian package, which makes installation easy.
|
||||||
|
|
||||||
First add the Docker repository key to your local keychain.
|
First add the Docker repository key to your local keychain.
|
||||||
|
|
||||||
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
|
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
|
||||||
|
|
||||||
Add the Docker repository to your apt sources list, update and install
|
Add the Docker repository to your apt sources list, update and install
|
||||||
the `lxc-docker` package.
|
the `lxc-docker` package.
|
||||||
|
|
||||||
sudo sh -c "echo deb http://get.docker.io/ubuntu docker main\
|
$ sudo sh -c "echo deb http://get.docker.io/ubuntu docker main\
|
||||||
> /etc/apt/sources.list.d/docker.list"
|
> /etc/apt/sources.list.d/docker.list"
|
||||||
sudo apt-get update
|
$ sudo apt-get update
|
||||||
sudo apt-get install lxc-docker
|
$ sudo apt-get install lxc-docker
|
||||||
|
|
||||||
Now verify that the installation has worked by downloading the
|
Now verify that the installation has worked by downloading the
|
||||||
`ubuntu` image and launching a container.
|
`ubuntu` image and launching a container.
|
||||||
|
|
||||||
sudo docker run -i -t ubuntu /bin/bash
|
$ sudo docker run -i -t ubuntu /bin/bash
|
||||||
|
|
||||||
Type `exit` to exit
|
Type `exit` to exit
|
||||||
|
|
||||||
|
@ -194,16 +194,16 @@ than `docker` should own the Unix socket with the
|
||||||
**Example:**
|
**Example:**
|
||||||
|
|
||||||
# Add the docker group if it doesn't already exist.
|
# Add the docker group if it doesn't already exist.
|
||||||
sudo groupadd docker
|
$ sudo groupadd docker
|
||||||
|
|
||||||
# Add the connected user "${USER}" to the docker group.
|
# Add the connected user "${USER}" to the docker group.
|
||||||
# Change the user name to match your preferred user.
|
# Change the user name to match your preferred user.
|
||||||
# You may have to logout and log back in again for
|
# You may have to logout and log back in again for
|
||||||
# this to take effect.
|
# this to take effect.
|
||||||
sudo gpasswd -a ${USER} docker
|
$ sudo gpasswd -a ${USER} docker
|
||||||
|
|
||||||
# Restart the Docker daemon.
|
# Restart the Docker daemon.
|
||||||
sudo service docker restart
|
$ sudo service docker restart
|
||||||
|
|
||||||
### Upgrade
|
### Upgrade
|
||||||
|
|
||||||
|
@ -211,28 +211,28 @@ To install the latest version of docker, use the standard
|
||||||
`apt-get` method:
|
`apt-get` method:
|
||||||
|
|
||||||
# update your sources list
|
# update your sources list
|
||||||
sudo apt-get update
|
$ sudo apt-get update
|
||||||
|
|
||||||
# install the latest
|
# install the latest
|
||||||
sudo apt-get install lxc-docker
|
$ sudo apt-get install lxc-docker
|
||||||
|
|
||||||
## Memory and Swap Accounting
|
## Memory and Swap Accounting
|
||||||
|
|
||||||
If you want to enable memory and swap accounting, you must add the
|
If you want to enable memory and swap accounting, you must add the
|
||||||
following command-line parameters to your kernel:
|
following command-line parameters to your kernel:
|
||||||
|
|
||||||
cgroup_enable=memory swapaccount=1
|
$ cgroup_enable=memory swapaccount=1
|
||||||
|
|
||||||
On systems using GRUB (which is the default for Ubuntu), you can add
|
On systems using GRUB (which is the default for Ubuntu), you can add
|
||||||
those parameters by editing `/etc/default/grub` and
|
those parameters by editing `/etc/default/grub` and
|
||||||
extending `GRUB_CMDLINE_LINUX`. Look for the
|
extending `GRUB_CMDLINE_LINUX`. Look for the
|
||||||
following line:
|
following line:
|
||||||
|
|
||||||
GRUB_CMDLINE_LINUX=""
|
$ GRUB_CMDLINE_LINUX=""
|
||||||
|
|
||||||
And replace it by the following one:
|
And replace it by the following one:
|
||||||
|
|
||||||
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
|
$ GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
|
||||||
|
|
||||||
Then run `sudo update-grub`, and reboot.
|
Then run `sudo update-grub`, and reboot.
|
||||||
|
|
||||||
|
@ -247,7 +247,7 @@ On Linux Mint, the `cgroup-lite` package is not
|
||||||
installed by default. Before Docker will work correctly, you will need
|
installed by default. Before Docker will work correctly, you will need
|
||||||
to install this via:
|
to install this via:
|
||||||
|
|
||||||
sudo apt-get update && sudo apt-get install cgroup-lite
|
$ sudo apt-get update && sudo apt-get install cgroup-lite
|
||||||
|
|
||||||
## Docker and UFW
|
## Docker and UFW
|
||||||
|
|
||||||
|
@ -255,22 +255,22 @@ Docker uses a bridge to manage container networking. By default, UFW
|
||||||
drops all forwarding traffic. As a result you will need to enable UFW
|
drops all forwarding traffic. As a result you will need to enable UFW
|
||||||
forwarding:
|
forwarding:
|
||||||
|
|
||||||
sudo nano /etc/default/ufw
|
$ sudo nano /etc/default/ufw
|
||||||
----
|
|
||||||
# Change:
|
# Change:
|
||||||
# DEFAULT_FORWARD_POLICY="DROP"
|
# DEFAULT_FORWARD_POLICY="DROP"
|
||||||
# to
|
# to
|
||||||
DEFAULT_FORWARD_POLICY="ACCEPT"
|
$ DEFAULT_FORWARD_POLICY="ACCEPT"
|
||||||
|
|
||||||
Then reload UFW:
|
Then reload UFW:
|
||||||
|
|
||||||
sudo ufw reload
|
$ sudo ufw reload
|
||||||
|
|
||||||
UFW's default set of rules denies all incoming traffic. If you want to
|
UFW's default set of rules denies all incoming traffic. If you want to
|
||||||
be able to reach your containers from another host then you should allow
|
be able to reach your containers from another host then you should allow
|
||||||
incoming connections on the Docker port (default 4243):
|
incoming connections on the Docker port (default 4243):
|
||||||
|
|
||||||
sudo ufw allow 4243/tcp
|
$ sudo ufw allow 4243/tcp
|
||||||
|
|
||||||
## Docker and local DNS server warnings
|
## Docker and local DNS server warnings
|
||||||
|
|
||||||
|
@ -290,16 +290,16 @@ nameserver and Docker will default to using an external nameserver.
|
||||||
This can be worked around by specifying a DNS server to be used by the
|
This can be worked around by specifying a DNS server to be used by the
|
||||||
Docker daemon for the containers:
|
Docker daemon for the containers:
|
||||||
|
|
||||||
sudo nano /etc/default/docker
|
$ sudo nano /etc/default/docker
|
||||||
---
|
---
|
||||||
# Add:
|
# Add:
|
||||||
DOCKER_OPTS="--dns 8.8.8.8"
|
$ docker_OPTS="--dns 8.8.8.8"
|
||||||
# 8.8.8.8 could be replaced with a local DNS server, such as 192.168.1.1
|
# 8.8.8.8 could be replaced with a local DNS server, such as 192.168.1.1
|
||||||
# multiple DNS servers can be specified: --dns 8.8.8.8 --dns 192.168.1.1
|
# multiple DNS servers can be specified: --dns 8.8.8.8 --dns 192.168.1.1
|
||||||
|
|
||||||
The Docker daemon has to be restarted:
|
The Docker daemon has to be restarted:
|
||||||
|
|
||||||
sudo restart docker
|
$ sudo restart docker
|
||||||
|
|
||||||
> **Warning**:
|
> **Warning**:
|
||||||
> If you're doing this on a laptop which connects to various networks,
|
> If you're doing this on a laptop which connects to various networks,
|
||||||
|
@ -308,7 +308,7 @@ The Docker daemon has to be restarted:
|
||||||
An alternative solution involves disabling dnsmasq in NetworkManager by
|
An alternative solution involves disabling dnsmasq in NetworkManager by
|
||||||
following these steps:
|
following these steps:
|
||||||
|
|
||||||
sudo nano /etc/NetworkManager/NetworkManager.conf
|
$ sudo nano /etc/NetworkManager/NetworkManager.conf
|
||||||
----
|
----
|
||||||
# Change:
|
# Change:
|
||||||
dns=dnsmasq
|
dns=dnsmasq
|
||||||
|
@ -317,8 +317,8 @@ following these steps:
|
||||||
|
|
||||||
NetworkManager and Docker need to be restarted afterwards:
|
NetworkManager and Docker need to be restarted afterwards:
|
||||||
|
|
||||||
sudo restart network-manager
|
$ sudo restart network-manager
|
||||||
sudo restart docker
|
$ sudo restart docker
|
||||||
|
|
||||||
> **Warning**: This might make DNS resolution slower on some networks.
|
> **Warning**: This might make DNS resolution slower on some networks.
|
||||||
|
|
||||||
|
@ -336,7 +336,7 @@ Substitute `http://mirror.yandex.ru/mirrors/docker/` for
|
||||||
`http://get.docker.io/ubuntu` in the instructions above.
|
`http://get.docker.io/ubuntu` in the instructions above.
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
sudo sh -c "echo deb http://mirror.yandex.ru/mirrors/docker/ docker main\
|
$ sudo sh -c "echo deb http://mirror.yandex.ru/mirrors/docker/ docker main\
|
||||||
> /etc/apt/sources.list.d/docker.list"
|
> /etc/apt/sources.list.d/docker.list"
|
||||||
sudo apt-get update
|
$ sudo apt-get update
|
||||||
sudo apt-get install lxc-docker
|
$ sudo apt-get install lxc-docker
|
||||||
|
|
|
@ -55,7 +55,7 @@ right away.
|
||||||
|
|
||||||
Let's try the “hello world” example. Run
|
Let's try the “hello world” example. Run
|
||||||
|
|
||||||
docker run busybox echo hello world
|
$ docker run busybox echo hello world
|
||||||
|
|
||||||
This will download the small busybox image and print hello world.
|
This will download the small busybox image and print hello world.
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,7 @@ The `docker` client usage consists of passing a chain of arguments:
|
||||||
|
|
||||||
# Usage: [sudo] docker [option] [command] [arguments] ..
|
# Usage: [sudo] docker [option] [command] [arguments] ..
|
||||||
# Example:
|
# Example:
|
||||||
docker run -i -t ubuntu /bin/bash
|
$ docker run -i -t ubuntu /bin/bash
|
||||||
|
|
||||||
### Our first Docker command
|
### Our first Docker command
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ version` command.
|
||||||
|
|
||||||
# Usage: [sudo] docker version
|
# Usage: [sudo] docker version
|
||||||
# Example:
|
# Example:
|
||||||
docker version
|
$ docker version
|
||||||
|
|
||||||
This command will not only provide you the version of Docker client you
|
This command will not only provide you the version of Docker client you
|
||||||
are using, but also the version of Go (the programming language powering
|
are using, but also the version of Go (the programming language powering
|
||||||
|
@ -97,7 +97,7 @@ binary:
|
||||||
|
|
||||||
# Usage: [sudo] docker
|
# Usage: [sudo] docker
|
||||||
# Example:
|
# Example:
|
||||||
docker
|
$ docker
|
||||||
|
|
||||||
You will get an output with all currently available commands.
|
You will get an output with all currently available commands.
|
||||||
|
|
||||||
|
@ -116,12 +116,12 @@ Try typing Docker followed with a `[command]` to see the instructions:
|
||||||
|
|
||||||
# Usage: [sudo] docker [command] [--help]
|
# Usage: [sudo] docker [command] [--help]
|
||||||
# Example:
|
# Example:
|
||||||
docker attach
|
$ docker attach
|
||||||
Help outputs . . .
|
Help outputs . . .
|
||||||
|
|
||||||
Or you can pass the `--help` flag to the `docker` binary.
|
Or you can pass the `--help` flag to the `docker` binary.
|
||||||
|
|
||||||
docker images --help
|
$ docker images --help
|
||||||
|
|
||||||
You will get an output with all available options:
|
You will get an output with all available options:
|
||||||
|
|
||||||
|
@ -156,12 +156,12 @@ image is constructed.
|
||||||
|
|
||||||
# Usage: [sudo] docker search [image name]
|
# Usage: [sudo] docker search [image name]
|
||||||
# Example:
|
# Example:
|
||||||
docker search nginx
|
$ docker search nginx
|
||||||
|
|
||||||
NAME DESCRIPTION STARS OFFICIAL TRUSTED
|
NAME DESCRIPTION STARS OFFICIAL TRUSTED
|
||||||
dockerfile/nginx Trusted Nginx (http://nginx.org/) Build 6 [OK]
|
$ dockerfile/nginx Trusted Nginx (http://nginx.org/) Build 6 [OK]
|
||||||
paintedfox/nginx-php5 A docker image for running Nginx with PHP5. 3 [OK]
|
paintedfox/nginx-php5 A docker image for running Nginx with PHP5. 3 [OK]
|
||||||
dockerfiles/django-uwsgi-nginx Dockerfile and configuration files to buil... 2 [OK]
|
$ dockerfiles/django-uwsgi-nginx dockerfile and configuration files to buil... 2 [OK]
|
||||||
. . .
|
. . .
|
||||||
|
|
||||||
> **Note:** To learn more about trusted builds, check out [this](
|
> **Note:** To learn more about trusted builds, check out [this](
|
||||||
|
@ -174,7 +174,7 @@ Downloading a Docker image is called *pulling*. To do this we hence use the
|
||||||
|
|
||||||
# Usage: [sudo] docker pull [image name]
|
# Usage: [sudo] docker pull [image name]
|
||||||
# Example:
|
# Example:
|
||||||
docker pull dockerfile/nginx
|
$ docker pull dockerfile/nginx
|
||||||
|
|
||||||
Pulling repository dockerfile/nginx
|
Pulling repository dockerfile/nginx
|
||||||
0ade68db1d05: Pulling dependent layers
|
0ade68db1d05: Pulling dependent layers
|
||||||
|
@ -193,12 +193,12 @@ In order to get a full list of available images, you can use the
|
||||||
|
|
||||||
# Usage: [sudo] docker images
|
# Usage: [sudo] docker images
|
||||||
# Example:
|
# Example:
|
||||||
docker images
|
$ docker images
|
||||||
|
|
||||||
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
|
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
|
||||||
myUserName/nginx latest a0d6c70867d2 41 seconds ago 578.8 MB
|
myUserName/nginx latest a0d6c70867d2 41 seconds ago 578.8 MB
|
||||||
nginx latest 173c2dd28ab2 3 minutes ago 578.8 MB
|
nginx latest 173c2dd28ab2 3 minutes ago 578.8 MB
|
||||||
dockerfile/nginx latest 0ade68db1d05 3 weeks ago 578.8 MB
|
$ dockerfile/nginx latest 0ade68db1d05 3 weeks ago 578.8 MB
|
||||||
|
|
||||||
## Working with containers
|
## Working with containers
|
||||||
|
|
||||||
|
@ -215,7 +215,7 @@ The easiest way to create a new container is to *run* one from an image.
|
||||||
|
|
||||||
# Usage: [sudo] docker run [arguments] ..
|
# Usage: [sudo] docker run [arguments] ..
|
||||||
# Example:
|
# Example:
|
||||||
docker run -d --name nginx_web nginx /usr/sbin/nginx
|
$ docker run -d --name nginx_web nginx /usr/sbin/nginx
|
||||||
|
|
||||||
This will create a new container from an image called `nginx` which will
|
This will create a new container from an image called `nginx` which will
|
||||||
launch the command `/usr/sbin/nginx` when the container is run. We've
|
launch the command `/usr/sbin/nginx` when the container is run. We've
|
||||||
|
@ -242,10 +242,10 @@ both running and stopped.
|
||||||
|
|
||||||
# Usage: [sudo] docker ps [-a]
|
# Usage: [sudo] docker ps [-a]
|
||||||
# Example:
|
# Example:
|
||||||
docker ps
|
$ docker ps
|
||||||
|
|
||||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||||
842a50a13032 dockerfile/nginx:latest nginx 35 minutes ago Up 30 minutes 0.0.0.0:80->80/tcp nginx_web
|
842a50a13032 $ dockerfile/nginx:latest nginx 35 minutes ago Up 30 minutes 0.0.0.0:80->80/tcp nginx_web
|
||||||
|
|
||||||
### Stopping a container
|
### Stopping a container
|
||||||
|
|
||||||
|
@ -254,7 +254,7 @@ end the active process.
|
||||||
|
|
||||||
# Usage: [sudo] docker stop [container ID]
|
# Usage: [sudo] docker stop [container ID]
|
||||||
# Example:
|
# Example:
|
||||||
docker stop nginx_web
|
$ docker stop nginx_web
|
||||||
nginx_web
|
nginx_web
|
||||||
|
|
||||||
If the `docker stop` command succeeds it will return the name of
|
If the `docker stop` command succeeds it will return the name of
|
||||||
|
@ -266,7 +266,7 @@ Stopped containers can be started again.
|
||||||
|
|
||||||
# Usage: [sudo] docker start [container ID]
|
# Usage: [sudo] docker start [container ID]
|
||||||
# Example:
|
# Example:
|
||||||
docker start nginx_web
|
$ docker start nginx_web
|
||||||
nginx_web
|
nginx_web
|
||||||
|
|
||||||
If the `docker start` command succeeds it will return the name of the
|
If the `docker start` command succeeds it will return the name of the
|
||||||
|
@ -358,7 +358,7 @@ Docker uses the `Dockerfile` to build images. The build process is initiated by
|
||||||
# Use the Dockerfile at the current location
|
# Use the Dockerfile at the current location
|
||||||
# Usage: [sudo] docker build .
|
# Usage: [sudo] docker build .
|
||||||
# Example:
|
# Example:
|
||||||
docker build -t="my_nginx_image" .
|
$ docker build -t="my_nginx_image" .
|
||||||
|
|
||||||
Uploading context 25.09 kB
|
Uploading context 25.09 kB
|
||||||
Uploading context
|
Uploading context
|
||||||
|
@ -385,7 +385,7 @@ image, here `my_nginx_image`.
|
||||||
|
|
||||||
We can see our new image using the `docker images` command.
|
We can see our new image using the `docker images` command.
|
||||||
|
|
||||||
docker images
|
$ docker images
|
||||||
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
|
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
|
||||||
my_nginx_img latest 626e92c5fab1 57 seconds ago 337.6 MB
|
my_nginx_img latest 626e92c5fab1 57 seconds ago 337.6 MB
|
||||||
|
|
||||||
|
|
|
@ -1127,4 +1127,4 @@ stdout and stderr on the same socket. This might change in the future.
|
||||||
To enable cross origin requests to the remote api add the flag
|
To enable cross origin requests to the remote api add the flag
|
||||||
"–api-enable-cors" when running docker in daemon mode.
|
"–api-enable-cors" when running docker in daemon mode.
|
||||||
|
|
||||||
docker -d -H="192.168.1.9:4243" --api-enable-cors
|
$ docker -d -H="192.168.1.9:4243" --api-enable-cors
|
||||||
|
|
|
@ -1134,4 +1134,4 @@ stdout and stderr on the same socket. This might change in the future.
|
||||||
To enable cross origin requests to the remote api add the flag
|
To enable cross origin requests to the remote api add the flag
|
||||||
"–api-enable-cors" when running docker in daemon mode.
|
"–api-enable-cors" when running docker in daemon mode.
|
||||||
|
|
||||||
docker -d -H="192.168.1.9:4243" --api-enable-cors
|
$ docker -d -H="192.168.1.9:4243" --api-enable-cors
|
||||||
|
|
|
@ -1236,4 +1236,4 @@ stdout and stderr on the same socket. This might change in the future.
|
||||||
To enable cross origin requests to the remote api add the flag
|
To enable cross origin requests to the remote api add the flag
|
||||||
"–api-enable-cors" when running docker in daemon mode.
|
"–api-enable-cors" when running docker in daemon mode.
|
||||||
|
|
||||||
docker -d -H="192.168.1.9:4243" --api-enable-cors
|
$ docker -d -H="192.168.1.9:4243" --api-enable-cors
|
||||||
|
|
|
@ -1230,4 +1230,4 @@ stdout and stderr on the same socket. This might change in the future.
|
||||||
To enable cross origin requests to the remote api add the flag
|
To enable cross origin requests to the remote api add the flag
|
||||||
"–api-enable-cors" when running docker in daemon mode.
|
"–api-enable-cors" when running docker in daemon mode.
|
||||||
|
|
||||||
docker -d -H="192.168.1.9:4243" --api-enable-cors
|
$ docker -d -H="192.168.1.9:4243" --api-enable-cors
|
||||||
|
|
|
@ -1276,4 +1276,4 @@ stdout and stderr on the same socket. This might change in the future.
|
||||||
To enable cross origin requests to the remote api add the flag
|
To enable cross origin requests to the remote api add the flag
|
||||||
"–api-enable-cors" when running docker in daemon mode.
|
"–api-enable-cors" when running docker in daemon mode.
|
||||||
|
|
||||||
docker -d -H="192.168.1.9:4243" --api-enable-cors
|
$ docker -d -H="192.168.1.9:4243" --api-enable-cors
|
||||||
|
|
|
@ -1297,4 +1297,4 @@ stdout and stderr on the same socket. This might change in the future.
|
||||||
To enable cross origin requests to the remote api add the flag
|
To enable cross origin requests to the remote api add the flag
|
||||||
"–api-enable-cors" when running docker in daemon mode.
|
"–api-enable-cors" when running docker in daemon mode.
|
||||||
|
|
||||||
docker -d -H="192.168.1.9:4243" --api-enable-cors
|
$ docker -d -H="192.168.1.9:4243" --api-enable-cors
|
||||||
|
|
|
@ -1301,4 +1301,4 @@ stdout and stderr on the same socket. This might change in the future.
|
||||||
To enable cross origin requests to the remote api add the flag
|
To enable cross origin requests to the remote api add the flag
|
||||||
"–api-enable-cors" when running docker in daemon mode.
|
"–api-enable-cors" when running docker in daemon mode.
|
||||||
|
|
||||||
docker -d -H="192.168.1.9:4243" --api-enable-cors
|
$ docker -d -H="192.168.1.9:4243" --api-enable-cors
|
||||||
|
|
|
@ -1313,4 +1313,4 @@ stdout and stderr on the same socket. This might change in the future.
|
||||||
To enable cross origin requests to the remote api add the flag
|
To enable cross origin requests to the remote api add the flag
|
||||||
"–api-enable-cors" when running docker in daemon mode.
|
"–api-enable-cors" when running docker in daemon mode.
|
||||||
|
|
||||||
docker -d -H="192.168.1.9:4243" --api-enable-cors
|
$ docker -d -H="192.168.1.9:4243" --api-enable-cors
|
||||||
|
|
|
@ -111,7 +111,7 @@ supports:
|
||||||
|
|
||||||
It's possible to run:
|
It's possible to run:
|
||||||
|
|
||||||
docker pull https://<registry>/repositories/samalba/busybox
|
$ docker pull https://<registry>/repositories/samalba/busybox
|
||||||
|
|
||||||
In this case, Docker bypasses the Index. However the security is not
|
In this case, Docker bypasses the Index. However the security is not
|
||||||
guaranteed (in case Registry A is corrupted) because there won't be any
|
guaranteed (in case Registry A is corrupted) because there won't be any
|
||||||
|
|
|
@ -18,7 +18,7 @@ This file will describe the steps to assemble the image.
|
||||||
Then call `docker build` with the path of you source repository as argument
|
Then call `docker build` with the path of you source repository as argument
|
||||||
(for example, `.`):
|
(for example, `.`):
|
||||||
|
|
||||||
sudo docker build .
|
$ sudo docker build .
|
||||||
|
|
||||||
The path to the source repository defines where to find the *context* of
|
The path to the source repository defines where to find the *context* of
|
||||||
the build. The build is run by the Docker daemon, not by the CLI, so the
|
the build. The build is run by the Docker daemon, not by the CLI, so the
|
||||||
|
@ -28,7 +28,7 @@ whole context must be transferred to the daemon. The Docker CLI reports
|
||||||
You can specify a repository and tag at which to save the new image if
|
You can specify a repository and tag at which to save the new image if
|
||||||
the build succeeds:
|
the build succeeds:
|
||||||
|
|
||||||
sudo docker build -t shykes/myapp .
|
$ sudo docker build -t shykes/myapp .
|
||||||
|
|
||||||
The Docker daemon will run your steps one-by-one, committing the result
|
The Docker daemon will run your steps one-by-one, committing the result
|
||||||
to a new image if necessary, before finally outputting the ID of your
|
to a new image if necessary, before finally outputting the ID of your
|
||||||
|
|
|
@ -35,11 +35,11 @@ will set the value to the opposite of the default value.
|
||||||
|
|
||||||
Options like `-a=[]` indicate they can be specified multiple times:
|
Options like `-a=[]` indicate they can be specified multiple times:
|
||||||
|
|
||||||
docker run -a stdin -a stdout -a stderr -i -t ubuntu /bin/bash
|
$ docker run -a stdin -a stdout -a stderr -i -t ubuntu /bin/bash
|
||||||
|
|
||||||
Sometimes this can use a more complex value string, as for `-v`:
|
Sometimes this can use a more complex value string, as for `-v`:
|
||||||
|
|
||||||
docker run -v /host:/container example/mysql
|
$ docker run -v /host:/container example/mysql
|
||||||
|
|
||||||
### Strings and Integers
|
### Strings and Integers
|
||||||
|
|
||||||
|
@ -100,10 +100,10 @@ To use lxc as the execution driver, use `docker -d -e lxc`.
|
||||||
The docker client will also honor the `DOCKER_HOST` environment variable to set
|
The docker client will also honor the `DOCKER_HOST` environment variable to set
|
||||||
the `-H` flag for the client.
|
the `-H` flag for the client.
|
||||||
|
|
||||||
docker -H tcp://0.0.0.0:4243 ps
|
$ docker -H tcp://0.0.0.0:4243 ps
|
||||||
# or
|
# or
|
||||||
export DOCKER_HOST="tcp://0.0.0.0:4243"
|
$ export DOCKER_HOST="tcp://0.0.0.0:4243"
|
||||||
docker ps
|
$ docker ps
|
||||||
# both are equal
|
# both are equal
|
||||||
|
|
||||||
To run the daemon with [systemd socket activation](
|
To run the daemon with [systemd socket activation](
|
||||||
|
@ -448,7 +448,7 @@ by default.
|
||||||
<none> <none> 77af4d6b9913 19 hours ago 1.089 GB
|
<none> <none> 77af4d6b9913 19 hours ago 1.089 GB
|
||||||
committest latest b6fa739cedf5 19 hours ago 1.089 GB
|
committest latest b6fa739cedf5 19 hours ago 1.089 GB
|
||||||
<none> <none> 78a85c484f71 19 hours ago 1.089 GB
|
<none> <none> 78a85c484f71 19 hours ago 1.089 GB
|
||||||
docker latest 30557a29d5ab 20 hours ago 1.089 GB
|
$ docker latest 30557a29d5ab 20 hours ago 1.089 GB
|
||||||
<none> <none> 0124422dd9f9 20 hours ago 1.089 GB
|
<none> <none> 0124422dd9f9 20 hours ago 1.089 GB
|
||||||
<none> <none> 18ad6fad3402 22 hours ago 1.082 GB
|
<none> <none> 18ad6fad3402 22 hours ago 1.082 GB
|
||||||
<none> <none> f9f1e26352f0 23 hours ago 1.089 GB
|
<none> <none> f9f1e26352f0 23 hours ago 1.089 GB
|
||||||
|
@ -462,7 +462,7 @@ by default.
|
||||||
<none> <none> 77af4d6b9913e693e8d0b4b294fa62ade6054e6b2f1ffb617ac955dd63fb0182 19 hours ago 1.089 GB
|
<none> <none> 77af4d6b9913e693e8d0b4b294fa62ade6054e6b2f1ffb617ac955dd63fb0182 19 hours ago 1.089 GB
|
||||||
committest latest b6fa739cedf5ea12a620a439402b6004d057da800f91c7524b5086a5e4749c9f 19 hours ago 1.089 GB
|
committest latest b6fa739cedf5ea12a620a439402b6004d057da800f91c7524b5086a5e4749c9f 19 hours ago 1.089 GB
|
||||||
<none> <none> 78a85c484f71509adeaace20e72e941f6bdd2b25b4c75da8693efd9f61a37921 19 hours ago 1.089 GB
|
<none> <none> 78a85c484f71509adeaace20e72e941f6bdd2b25b4c75da8693efd9f61a37921 19 hours ago 1.089 GB
|
||||||
docker latest 30557a29d5abc51e5f1d5b472e79b7e296f595abcf19fe6b9199dbbc809c6ff4 20 hours ago 1.089 GB
|
$ docker latest 30557a29d5abc51e5f1d5b472e79b7e296f595abcf19fe6b9199dbbc809c6ff4 20 hours ago 1.089 GB
|
||||||
<none> <none> 0124422dd9f9cf7ef15c0617cda3931ee68346455441d66ab8bdc5b05e9fdce5 20 hours ago 1.089 GB
|
<none> <none> 0124422dd9f9cf7ef15c0617cda3931ee68346455441d66ab8bdc5b05e9fdce5 20 hours ago 1.089 GB
|
||||||
<none> <none> 18ad6fad340262ac2a636efd98a6d1f0ea775ae3d45240d3418466495a19a81b 22 hours ago 1.082 GB
|
<none> <none> 18ad6fad340262ac2a636efd98a6d1f0ea775ae3d45240d3418466495a19a81b 22 hours ago 1.082 GB
|
||||||
<none> <none> f9f1e26352f0a3ba6a0ff68167559f64f3e21ff7ada60366e2d44a04befd1d3a 23 hours ago 1.089 GB
|
<none> <none> f9f1e26352f0a3ba6a0ff68167559f64f3e21ff7ada60366e2d44a04befd1d3a 23 hours ago 1.089 GB
|
||||||
|
@ -640,7 +640,7 @@ If you want to login to a private registry you can
|
||||||
specify this by adding the server name.
|
specify this by adding the server name.
|
||||||
|
|
||||||
example:
|
example:
|
||||||
docker login localhost:8080
|
$ docker login localhost:8080
|
||||||
|
|
||||||
## logs
|
## logs
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ running containers, and so here we try to give more in-depth guidance.
|
||||||
As you`ve seen in the [*Examples*](/examples/#example-list), the
|
As you`ve seen in the [*Examples*](/examples/#example-list), the
|
||||||
basic run command takes this form:
|
basic run command takes this form:
|
||||||
|
|
||||||
docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]
|
$ docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]
|
||||||
|
|
||||||
To learn how to interpret the types of `[OPTIONS]`,
|
To learn how to interpret the types of `[OPTIONS]`,
|
||||||
see [*Option types*](/commandline/cli/#cli-options).
|
see [*Option types*](/commandline/cli/#cli-options).
|
||||||
|
@ -99,7 +99,7 @@ https://github.com/dotcloud/docker/blob/
|
||||||
of the three standard streams (`stdin`, `stdout`, `stderr`) you'd like to connect
|
of the three standard streams (`stdin`, `stdout`, `stderr`) you'd like to connect
|
||||||
instead, as in:
|
instead, as in:
|
||||||
|
|
||||||
docker run -a stdin -a stdout -i -t ubuntu /bin/bash
|
$ docker run -a stdin -a stdout -i -t ubuntu /bin/bash
|
||||||
|
|
||||||
For interactive processes (like a shell) you will typically want a tty as well as
|
For interactive processes (like a shell) you will typically want a tty as well as
|
||||||
persistent standard input (`stdin`), so you'll use `-i -t` together in most
|
persistent standard input (`stdin`), so you'll use `-i -t` together in most
|
||||||
|
@ -233,7 +233,7 @@ Dockerfile instruction and how the operator can override that setting.
|
||||||
Recall the optional `COMMAND` in the Docker
|
Recall the optional `COMMAND` in the Docker
|
||||||
commandline:
|
commandline:
|
||||||
|
|
||||||
docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]
|
$ docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]
|
||||||
|
|
||||||
This command is optional because the person who created the `IMAGE` may have
|
This command is optional because the person who created the `IMAGE` may have
|
||||||
already provided a default `COMMAND` using the Dockerfile `CMD`. As the
|
already provided a default `COMMAND` using the Dockerfile `CMD`. As the
|
||||||
|
@ -259,12 +259,12 @@ runtime by using a string to specify the new `ENTRYPOINT`. Here is an
|
||||||
example of how to run a shell in a container that has been set up to
|
example of how to run a shell in a container that has been set up to
|
||||||
automatically run something else (like `/usr/bin/redis-server`):
|
automatically run something else (like `/usr/bin/redis-server`):
|
||||||
|
|
||||||
docker run -i -t --entrypoint /bin/bash example/redis
|
$ docker run -i -t --entrypoint /bin/bash example/redis
|
||||||
|
|
||||||
or two examples of how to pass more parameters to that ENTRYPOINT:
|
or two examples of how to pass more parameters to that ENTRYPOINT:
|
||||||
|
|
||||||
docker run -i -t --entrypoint /bin/bash example/redis -c ls -l
|
$ docker run -i -t --entrypoint /bin/bash example/redis -c ls -l
|
||||||
docker run -i -t --entrypoint /usr/bin/redis-cli example/redis --help
|
$ docker run -i -t --entrypoint /usr/bin/redis-cli example/redis --help
|
||||||
|
|
||||||
## EXPOSE (Incoming Ports)
|
## EXPOSE (Incoming Ports)
|
||||||
|
|
||||||
|
@ -335,7 +335,7 @@ container running Redis:
|
||||||
# The redis-name container exposed port 6379
|
# The redis-name container exposed port 6379
|
||||||
$ docker ps
|
$ docker ps
|
||||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||||
4241164edf6f dockerfiles/redis:latest /redis-stable/src/re 5 seconds ago Up 4 seconds 6379/tcp redis-name
|
4241164edf6f $ dockerfiles/redis:latest /redis-stable/src/re 5 seconds ago Up 4 seconds 6379/tcp redis-name
|
||||||
|
|
||||||
# Note that there are no public ports exposed since we didn᾿t use -p or -P
|
# Note that there are no public ports exposed since we didn᾿t use -p or -P
|
||||||
$ docker port 4241164edf6f 6379
|
$ docker port 4241164edf6f 6379
|
||||||
|
|
|
@ -10,7 +10,7 @@ This guide assumes you have a working installation of Docker. To check
|
||||||
your Docker install, run the following command:
|
your Docker install, run the following command:
|
||||||
|
|
||||||
# Check that you have a working install
|
# Check that you have a working install
|
||||||
docker info
|
$ docker info
|
||||||
|
|
||||||
If you get `docker: command not found` or something
|
If you get `docker: command not found` or something
|
||||||
like `/var/lib/docker/repositories: permission denied`
|
like `/var/lib/docker/repositories: permission denied`
|
||||||
|
@ -23,7 +23,7 @@ for installation instructions.
|
||||||
## Download a pre-built image
|
## Download a pre-built image
|
||||||
|
|
||||||
# Download an ubuntu image
|
# Download an ubuntu image
|
||||||
sudo docker pull ubuntu
|
$ sudo docker pull ubuntu
|
||||||
|
|
||||||
This will find the `ubuntu` image by name on
|
This will find the `ubuntu` image by name on
|
||||||
[*Docker.io*](../workingwithrepository/#find-public-images-on-dockerio) and
|
[*Docker.io*](../workingwithrepository/#find-public-images-on-dockerio) and
|
||||||
|
@ -46,7 +46,7 @@ cache.
|
||||||
# To detach the tty without exiting the shell,
|
# To detach the tty without exiting the shell,
|
||||||
# use the escape sequence Ctrl-p + Ctrl-q
|
# use the escape sequence Ctrl-p + Ctrl-q
|
||||||
# note: This will continue to exist in a stopped state once exited (see "docker ps -a")
|
# note: This will continue to exist in a stopped state once exited (see "docker ps -a")
|
||||||
sudo docker run -i -t ubuntu /bin/bash
|
$ sudo docker run -i -t ubuntu /bin/bash
|
||||||
|
|
||||||
## Bind Docker to another host/port or a Unix socket
|
## Bind Docker to another host/port or a Unix socket
|
||||||
|
|
||||||
|
@ -87,70 +87,70 @@ when no `-H` was passed in.
|
||||||
`host[:port]` or `:port`
|
`host[:port]` or `:port`
|
||||||
|
|
||||||
# Run docker in daemon mode
|
# Run docker in daemon mode
|
||||||
sudo <path to>/docker -H 0.0.0.0:5555 -d &
|
$ sudo <path to>/docker -H 0.0.0.0:5555 -d &
|
||||||
# Download an ubuntu image
|
# Download an ubuntu image
|
||||||
sudo docker -H :5555 pull ubuntu
|
$ sudo docker -H :5555 pull ubuntu
|
||||||
|
|
||||||
You can use multiple `-H`, for example, if you want
|
You can use multiple `-H`, for example, if you want
|
||||||
to listen on both TCP and a Unix socket
|
to listen on both TCP and a Unix socket
|
||||||
|
|
||||||
# Run docker in daemon mode
|
# Run docker in daemon mode
|
||||||
sudo <path to>/docker -H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock -d &
|
$ sudo <path to>/docker -H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock -d &
|
||||||
# Download an ubuntu image, use default Unix socket
|
# Download an ubuntu image, use default Unix socket
|
||||||
sudo docker pull ubuntu
|
$ sudo docker pull ubuntu
|
||||||
# OR use the TCP port
|
# OR use the TCP port
|
||||||
sudo docker -H tcp://127.0.0.1:4243 pull ubuntu
|
$ sudo docker -H tcp://127.0.0.1:4243 pull ubuntu
|
||||||
|
|
||||||
## Starting a long-running worker process
|
## Starting a long-running worker process
|
||||||
|
|
||||||
# Start a very useful long-running process
|
# Start a very useful long-running process
|
||||||
JOB=$(sudo docker run -d ubuntu /bin/sh -c "while true; do echo Hello world; sleep 1; done")
|
$ JOB=$(sudo docker run -d ubuntu /bin/sh -c "while true; do echo Hello world; sleep 1; done")
|
||||||
|
|
||||||
# Collect the output of the job so far
|
# Collect the output of the job so far
|
||||||
sudo docker logs $JOB
|
$ sudo docker logs $JOB
|
||||||
|
|
||||||
# Kill the job
|
# Kill the job
|
||||||
sudo docker kill $JOB
|
$ sudo docker kill $JOB
|
||||||
|
|
||||||
## Listing containers
|
## Listing containers
|
||||||
|
|
||||||
sudo docker ps # Lists only running containers
|
$ sudo docker ps # Lists only running containers
|
||||||
sudo docker ps -a # Lists all containers
|
$ sudo docker ps -a # Lists all containers
|
||||||
|
|
||||||
## Controlling containers
|
## Controlling containers
|
||||||
|
|
||||||
# Start a new container
|
# Start a new container
|
||||||
JOB=$(sudo docker run -d ubuntu /bin/sh -c "while true; do echo Hello world; sleep 1; done")
|
$ JOB=$(sudo docker run -d ubuntu /bin/sh -c "while true; do echo Hello world; sleep 1; done")
|
||||||
|
|
||||||
# Stop the container
|
# Stop the container
|
||||||
docker stop $JOB
|
$ docker stop $JOB
|
||||||
|
|
||||||
# Start the container
|
# Start the container
|
||||||
docker start $JOB
|
$ docker start $JOB
|
||||||
|
|
||||||
# Restart the container
|
# Restart the container
|
||||||
docker restart $JOB
|
$ docker restart $JOB
|
||||||
|
|
||||||
# SIGKILL a container
|
# SIGKILL a container
|
||||||
docker kill $JOB
|
$ docker kill $JOB
|
||||||
|
|
||||||
# Remove a container
|
# Remove a container
|
||||||
docker stop $JOB # Container must be stopped to remove it
|
$ docker stop $JOB # Container must be stopped to remove it
|
||||||
docker rm $JOB
|
$ docker rm $JOB
|
||||||
|
|
||||||
## Bind a service on a TCP port
|
## Bind a service on a TCP port
|
||||||
|
|
||||||
# Bind port 4444 of this container, and tell netcat to listen on it
|
# Bind port 4444 of this container, and tell netcat to listen on it
|
||||||
JOB=$(sudo docker run -d -p 4444 ubuntu:12.10 /bin/nc -l 4444)
|
$ JOB=$(sudo docker run -d -p 4444 ubuntu:12.10 /bin/nc -l 4444)
|
||||||
|
|
||||||
# Which public port is NATed to my container?
|
# Which public port is NATed to my container?
|
||||||
PORT=$(sudo docker port $JOB 4444 | awk -F: '{ print $2 }')
|
$ PORT=$(sudo docker port $JOB 4444 | awk -F: '{ print $2 }')
|
||||||
|
|
||||||
# Connect to the public port
|
# Connect to the public port
|
||||||
echo hello world | nc 127.0.0.1 $PORT
|
$ echo hello world | nc 127.0.0.1 $PORT
|
||||||
|
|
||||||
# Verify that the network connection worked
|
# Verify that the network connection worked
|
||||||
echo "Daemon received: $(sudo docker logs $JOB)"
|
$ echo "Daemon received: $(sudo docker logs $JOB)"
|
||||||
|
|
||||||
## Committing (saving) a container state
|
## Committing (saving) a container state
|
||||||
|
|
||||||
|
@ -163,10 +163,10 @@ will be stored (as a diff). See which images you already have using the
|
||||||
`docker images` command.
|
`docker images` command.
|
||||||
|
|
||||||
# Commit your container to a new named image
|
# Commit your container to a new named image
|
||||||
sudo docker commit <container_id> <some_name>
|
$ sudo docker commit <container_id> <some_name>
|
||||||
|
|
||||||
# List your containers
|
# List your containers
|
||||||
sudo docker images
|
$ sudo docker images
|
||||||
|
|
||||||
You now have a image state from which you can create new instances.
|
You now have a image state from which you can create new instances.
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ The next step is to pull a Docker image. For this, we have a resource:
|
||||||
|
|
||||||
This is equivalent to running:
|
This is equivalent to running:
|
||||||
|
|
||||||
docker pull samalba/docker-registry
|
$ docker pull samalba/docker-registry
|
||||||
|
|
||||||
There are attributes available to control how long the cookbook will
|
There are attributes available to control how long the cookbook will
|
||||||
allow for downloading (5 minute default).
|
allow for downloading (5 minute default).
|
||||||
|
@ -68,7 +68,7 @@ managed by Docker.
|
||||||
|
|
||||||
This is equivalent to running the following command, but under upstart:
|
This is equivalent to running the following command, but under upstart:
|
||||||
|
|
||||||
docker run --detach=true --publish='5000:5000' --env='SETTINGS_FLAVOR=local' --volume='/mnt/docker:/docker-storage' samalba/docker-registry
|
$ docker run --detach=true --publish='5000:5000' --env='SETTINGS_FLAVOR=local' --volume='/mnt/docker:/docker-storage' samalba/docker-registry
|
||||||
|
|
||||||
The resources will accept a single string or an array of values for any
|
The resources will accept a single string or an array of values for any
|
||||||
docker flags that allow multiple values.
|
docker flags that allow multiple values.
|
||||||
|
|
|
@ -84,7 +84,7 @@ In this scenario:
|
||||||
inet addr:192.168.227.1 Bcast:192.168.227.255 Mask:255.255.255.0
|
inet addr:192.168.227.1 Bcast:192.168.227.255 Mask:255.255.255.0
|
||||||
|
|
||||||
# Run a container
|
# Run a container
|
||||||
$ docker run -i -t base /bin/bash
|
docker run -i -t base /bin/bash
|
||||||
|
|
||||||
# Container IP in the 192.168.227/24 range
|
# Container IP in the 192.168.227/24 range
|
||||||
root@261c272cd7d5:/# ifconfig eth0
|
root@261c272cd7d5:/# ifconfig eth0
|
||||||
|
|
|
@ -11,7 +11,7 @@ port. When this service runs inside a container, one can connect to the
|
||||||
port after finding the IP address of the container as follows:
|
port after finding the IP address of the container as follows:
|
||||||
|
|
||||||
# Find IP address of container with ID <container_id>
|
# Find IP address of container with ID <container_id>
|
||||||
docker inspect <container_id> | grep IPAddress | cut -d '"' -f 4
|
$ docker inspect <container_id> | grep IPAddress | cut -d '"' -f 4
|
||||||
|
|
||||||
However, this IP address is local to the host system and the container
|
However, this IP address is local to the host system and the container
|
||||||
port is not reachable by the outside world. Furthermore, even if the
|
port is not reachable by the outside world. Furthermore, even if the
|
||||||
|
@ -40,7 +40,7 @@ To bind a port of the container to a specific interface of the host
|
||||||
system, use the `-p` parameter of the `docker run` command:
|
system, use the `-p` parameter of the `docker run` command:
|
||||||
|
|
||||||
# General syntax
|
# General syntax
|
||||||
docker run -p [([<host_interface>:[host_port]])|(<host_port>):]<container_port>[/udp] <image> <cmd>
|
$ docker run -p [([<host_interface>:[host_port]])|(<host_port>):]<container_port>[/udp] <image> <cmd>
|
||||||
|
|
||||||
When no host interface is provided, the port is bound to all available
|
When no host interface is provided, the port is bound to all available
|
||||||
interfaces of the host machine (aka INADDR_ANY, or 0.0.0.0). When no
|
interfaces of the host machine (aka INADDR_ANY, or 0.0.0.0). When no
|
||||||
|
@ -48,32 +48,32 @@ host port is provided, one is dynamically allocated. The possible
|
||||||
combinations of options for TCP port are the following:
|
combinations of options for TCP port are the following:
|
||||||
|
|
||||||
# Bind TCP port 8080 of the container to TCP port 80 on 127.0.0.1 of the host machine.
|
# Bind TCP port 8080 of the container to TCP port 80 on 127.0.0.1 of the host machine.
|
||||||
docker run -p 127.0.0.1:80:8080 <image> <cmd>
|
$ docker run -p 127.0.0.1:80:8080 <image> <cmd>
|
||||||
|
|
||||||
# Bind TCP port 8080 of the container to a dynamically allocated TCP port on 127.0.0.1 of the host machine.
|
# Bind TCP port 8080 of the container to a dynamically allocated TCP port on 127.0.0.1 of the host machine.
|
||||||
docker run -p 127.0.0.1::8080 <image> <cmd>
|
$ docker run -p 127.0.0.1::8080 <image> <cmd>
|
||||||
|
|
||||||
# Bind TCP port 8080 of the container to TCP port 80 on all available interfaces of the host machine.
|
# Bind TCP port 8080 of the container to TCP port 80 on all available interfaces of the host machine.
|
||||||
docker run -p 80:8080 <image> <cmd>
|
$ docker run -p 80:8080 <image> <cmd>
|
||||||
|
|
||||||
# Bind TCP port 8080 of the container to a dynamically allocated TCP port on all available interfaces of the host machine.
|
# Bind TCP port 8080 of the container to a dynamically allocated TCP port on all available interfaces of the host machine.
|
||||||
docker run -p 8080 <image> <cmd>
|
$ docker run -p 8080 <image> <cmd>
|
||||||
|
|
||||||
UDP ports can also be bound by adding a trailing `/udp`. All the
|
UDP ports can also be bound by adding a trailing `/udp`. All the
|
||||||
combinations described for TCP work. Here is only one example:
|
combinations described for TCP work. Here is only one example:
|
||||||
|
|
||||||
# Bind UDP port 5353 of the container to UDP port 53 on 127.0.0.1 of the host machine.
|
# Bind UDP port 5353 of the container to UDP port 53 on 127.0.0.1 of the host machine.
|
||||||
docker run -p 127.0.0.1:53:5353/udp <image> <cmd>
|
$ docker run -p 127.0.0.1:53:5353/udp <image> <cmd>
|
||||||
|
|
||||||
The command `docker port` lists the interface and port on the host machine
|
The command `docker port` lists the interface and port on the host machine
|
||||||
bound to a given container port. It is useful when using dynamically allocated
|
bound to a given container port. It is useful when using dynamically allocated
|
||||||
ports:
|
ports:
|
||||||
|
|
||||||
# Bind to a dynamically allocated port
|
# Bind to a dynamically allocated port
|
||||||
docker run -p 127.0.0.1::8080 --name dyn-bound <image> <cmd>
|
$ docker run -p 127.0.0.1::8080 --name dyn-bound <image> <cmd>
|
||||||
|
|
||||||
# Lookup the actual port
|
# Lookup the actual port
|
||||||
docker port dyn-bound 8080
|
$ docker port dyn-bound 8080
|
||||||
127.0.0.1:49160
|
127.0.0.1:49160
|
||||||
|
|
||||||
## Linking a container
|
## Linking a container
|
||||||
|
@ -99,24 +99,24 @@ exposure is done either through the `--expose` parameter to the `docker run`
|
||||||
command, or the `EXPOSE` build command in a Dockerfile:
|
command, or the `EXPOSE` build command in a Dockerfile:
|
||||||
|
|
||||||
# Expose port 80
|
# Expose port 80
|
||||||
docker run --expose 80 --name server <image> <cmd>
|
$ docker run --expose 80 --name server <image> <cmd>
|
||||||
|
|
||||||
The `client` then links to the `server`:
|
The `client` then links to the `server`:
|
||||||
|
|
||||||
# Link
|
# Link
|
||||||
docker run --name client --link server:linked-server <image> <cmd>
|
$ docker run --name client --link server:linked-server <image> <cmd>
|
||||||
|
|
||||||
`client` locally refers to `server` as `linked-server`. The following
|
`client` locally refers to `server` as `linked-server`. The following
|
||||||
environment variables, among others, are available on `client`:
|
environment variables, among others, are available on `client`:
|
||||||
|
|
||||||
# The default protocol, ip, and port of the service running in the container
|
# The default protocol, ip, and port of the service running in the container
|
||||||
LINKED-SERVER_PORT=tcp://172.17.0.8:80
|
$ LINKED-SERVER_PORT=tcp://172.17.0.8:80
|
||||||
|
|
||||||
# A specific protocol, ip, and port of various services
|
# A specific protocol, ip, and port of various services
|
||||||
LINKED-SERVER_PORT_80_TCP=tcp://172.17.0.8:80
|
$ LINKED-SERVER_PORT_80_TCP=tcp://172.17.0.8:80
|
||||||
LINKED-SERVER_PORT_80_TCP_PROTO=tcp
|
$ LINKED-SERVER_PORT_80_TCP_PROTO=tcp
|
||||||
LINKED-SERVER_PORT_80_TCP_ADDR=172.17.0.8
|
$ LINKED-SERVER_PORT_80_TCP_ADDR=172.17.0.8
|
||||||
LINKED-SERVER_PORT_80_TCP_PORT=80
|
$ LINKED-SERVER_PORT_80_TCP_PORT=80
|
||||||
|
|
||||||
This tells `client` that a service is running on port 80 of `server` and that
|
This tells `client` that a service is running on port 80 of `server` and that
|
||||||
`server` is accessible at the IP address 172.17.0.8
|
`server` is accessible at the IP address 172.17.0.8
|
||||||
|
|
|
@ -23,7 +23,7 @@ The module is available on the [Puppet
|
||||||
Forge](https://forge.puppetlabs.com/garethr/docker/) and can be
|
Forge](https://forge.puppetlabs.com/garethr/docker/) and can be
|
||||||
installed using the built-in module tool.
|
installed using the built-in module tool.
|
||||||
|
|
||||||
puppet module install garethr/docker
|
$ puppet module install garethr/docker
|
||||||
|
|
||||||
It can also be found on
|
It can also be found on
|
||||||
[GitHub](https://github.com/garethr/garethr-docker) if you would
|
[GitHub](https://github.com/garethr/garethr-docker) if you would
|
||||||
|
@ -47,7 +47,7 @@ defined type which can be used like so:
|
||||||
|
|
||||||
This is equivalent to running:
|
This is equivalent to running:
|
||||||
|
|
||||||
docker pull ubuntu
|
$ docker pull ubuntu
|
||||||
|
|
||||||
Note that it will only be downloaded if an image of that name does not
|
Note that it will only be downloaded if an image of that name does not
|
||||||
already exist. This is downloading a large binary so on first run can
|
already exist. This is downloading a large binary so on first run can
|
||||||
|
@ -71,7 +71,7 @@ managed by Docker.
|
||||||
|
|
||||||
This is equivalent to running the following command, but under upstart:
|
This is equivalent to running the following command, but under upstart:
|
||||||
|
|
||||||
docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
|
$ docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
|
||||||
|
|
||||||
Run also contains a number of optional parameters:
|
Run also contains a number of optional parameters:
|
||||||
|
|
||||||
|
|
|
@ -50,8 +50,8 @@ not.
|
||||||
Or, you can use the VOLUME instruction in a Dockerfile to add one or
|
Or, you can use the VOLUME instruction in a Dockerfile to add one or
|
||||||
more new volumes to any container created from that image:
|
more new volumes to any container created from that image:
|
||||||
|
|
||||||
# BUILD-USING: docker build -t data .
|
# BUILD-USING: $ docker build -t data .
|
||||||
# RUN-USING: docker run -name DATA data
|
# RUN-USING: $ docker run -name DATA data
|
||||||
FROM busybox
|
FROM busybox
|
||||||
VOLUME ["/var/volume1", "/var/volume2"]
|
VOLUME ["/var/volume1", "/var/volume2"]
|
||||||
CMD ["/bin/true"]
|
CMD ["/bin/true"]
|
||||||
|
@ -108,7 +108,7 @@ For example:
|
||||||
# Usage:
|
# Usage:
|
||||||
# sudo docker run [OPTIONS] -v /(dir. on host):/(dir. in container):(Read-Write or Read-Only) [ARG..]
|
# sudo docker run [OPTIONS] -v /(dir. on host):/(dir. in container):(Read-Write or Read-Only) [ARG..]
|
||||||
# Example:
|
# Example:
|
||||||
sudo docker run -i -t -v /var/log:/logs_from_host:ro ubuntu bash
|
$ sudo docker run -i -t -v /var/log:/logs_from_host:ro ubuntu bash
|
||||||
|
|
||||||
The command above mounts the host directory `/var/log` into the container
|
The command above mounts the host directory `/var/log` into the container
|
||||||
with *read only* permissions as `/logs_from_host`.
|
with *read only* permissions as `/logs_from_host`.
|
||||||
|
|
|
@ -109,7 +109,7 @@ share one of your own images, then you must register a unique user name
|
||||||
first. You can create your username and login on
|
first. You can create your username and login on
|
||||||
[Docker.io](https://index.docker.io/account/signup/), or by running
|
[Docker.io](https://index.docker.io/account/signup/), or by running
|
||||||
|
|
||||||
sudo docker login
|
$ sudo docker login
|
||||||
|
|
||||||
This will prompt you for a username, which will become a public
|
This will prompt you for a username, which will become a public
|
||||||
namespace for your public repositories.
|
namespace for your public repositories.
|
||||||
|
@ -199,10 +199,10 @@ identify a host), like this:
|
||||||
# Tag to create a repository with the full registry location.
|
# Tag to create a repository with the full registry location.
|
||||||
# The location (e.g. localhost.localdomain:5000) becomes
|
# The location (e.g. localhost.localdomain:5000) becomes
|
||||||
# a permanent part of the repository name
|
# a permanent part of the repository name
|
||||||
sudo docker tag 0u812deadbeef localhost.localdomain:5000/repo_name
|
$ sudo docker tag 0u812deadbeef localhost.localdomain:5000/repo_name
|
||||||
|
|
||||||
# Push the new repository to its home location on localhost
|
# Push the new repository to its home location on localhost
|
||||||
sudo docker push localhost.localdomain:5000/repo_name
|
$ sudo docker push localhost.localdomain:5000/repo_name
|
||||||
|
|
||||||
Once a repository has your registry's host name as part of the tag, you
|
Once a repository has your registry's host name as part of the tag, you
|
||||||
can push and pull it like any other repository, but it will **not** be
|
can push and pull it like any other repository, but it will **not** be
|
||||||
|
|
Loading…
Add table
Reference in a new issue