miercuri, 25 noiembrie 2015

Create and run a Docker image from Dockerfile on Windows via Command Prompt

! INSTEAD OF anghelleonard USE YOUR NAME

As you may know from the previous post (Create a new Docker machine on Windows via Command Prompt), I've created a Docker machine named my-machine.

1. Now, I want to create an image on my-machine. For this, I need to write a Dockerfile using the Docker commands (see Docker Reference). My image will be pretty simple, and it will consist in a Docker image for running OmniFaces Showcase WAR under WildFly 8.2.0 Final. So, I need the following commands; this is the content of my Dockerfile:

FROM jboss/wildfly:8.2.0.Final

MAINTAINER Anghel Leonard

CMD ["/opt/jboss/wildfly/bin/", "-c", "standalone-full.xml", "-b", ""]

RUN curl -L -o /opt/jboss/wildfly/standalone/deployments/Showcase.war


Putting this in words, sound like this: give me the WildFly 8.2.0 Final server in standalone mode, and deploy and expose on port 8080 the OmniFaces Showcase WAR.

2. The my-machine is not running, so I need to start it and get the environment commands:

Command: docker-machine start my-machine
Command: docker-machine env --shell cmd my-machine
Command: FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd my-machine') DO %i   

3. Before I build this image, I checked to see if I have any images or containers running. This is just a check, not a mandatory step:

- list of available images
Command: docker images

- list of available running containers
Command: docker ps

- list of recently containers activity
Command: docker ps -a

Since this is a new machine, I have no images or containers (running/history):

3. In order to obtain the image from the above Dockerfile, I need to build that file. So, I navigated to the Dockerfile location and execute the below command (my image name will be anghelleonard/omnifaceswildfly). This step will take some time depending on your Interner connection since the image is built by downloading the WildFly and OmniFaces Showcase from the Internet. Well, at further uses, these resources will be taken by default from cache.

Command: docker build -t anghelleonard/omnifaceswildfly .

4. Now, I want to see if the image was created. As you can see in the below figure, I have two images, one is jboss/wildfly (run only the WildFly container) and the other one is anghelleonard/omnifaceswildfly:

Command: docker images

5. Further, I can run and test my image, anghelleonard/omnifaceswildfly. For this, I will need the below command (notice in figure below that WildFly has started and the OmniFaces Showcase application was deployed successfullly):

Command: docker run -t -p 8080:8080 anghelleonard/omnifaceswildfly

6. Open your browser and type in browser address bar: You should see the WildFly welcome page from below:

Now, add /Showcase to this URL: You should see the OmniFaces Showcase running as below:

Note The is the Docker host (this may differ in your test). You can easily pick up this IP via the below command. You can easily gain the Command Prompt control by pressing the CTRL+C. Don't worry, this will not stop WildFly!

Command: env | greep DOCKER

7. You can check to see the currently running containers (you can easily identify our container):

Command: docker ps

8. If you check carefully the above image, you can notice that our container is named, dreamy_leavitt (this may differ in your case since Docker has randomly generated it).  This is a Docker convention for naming containers when we don't indicate explicitly a name. This name can be useful for many furher operations, like stopping the container:

Command: docker stop dreamy_leavitt

You can easily check that the container has stopped by trying to refresh the or by running again the docker ps command (as you can see from the below image, there is no container running):

However, you can still check the containers running history via, docker ps -a command.

9. For now, we finish this Docker lesson by stopping the machine. In the next post, you will see how I've pushed this image on DockerHub.

Command: docker-machine stop my-machine

Note: In order to see all the options for docker-machine command try:

Command: docker-machine --help

Niciun comentariu:

Trimiteți un comentariu