As a developer I prefer graphical tools since I often cannot remember all the different commands for various CLIs (command line interfaces). In cases where I have to use CLIs I write down my own little cheatsheets with the commands I use most often. Below is a minimal set of commands to create Docker images and containers running a Java Liberty application and deploy them to IBM Bluemix.
For more information check out the official Docker CLI documentation and the IBM Containers CLI documentation. To interact with Bluemix I use below the IBM Container plugin for Cloud Foundry which you need to install in addition to Docker and the Cloud Foundry CLI.
Docker
List all images:
docker images
Remove image:
docker rmi _image_tag_
List all containers:
docker ps -a
Remove container:
docker stop _container_name_
docker rm _container_name_
Build image:
docker build -t _image_tag_ .
Run container:
docker run –name _container_name_ -p 80:80 -p 443:443 -d -t _image_tag_
Launch application:
boot2docker ip
browser: http:// _your_ip_
IBM Containers
Login:
cf login
cf ic login
List all images:
cf ic images
Remove image:
cf ic rmi registry.ng.bluemix.net/_your_namespace_/_image_tag_
List all containers:
cf ic ps -a
Remove container:
cf ic stop _container_name_
cf ic rm _container_name_
Push image:
docker tag _image_tag_ registry.ng.bluemix.net/_your_namespace_/_image_tag_
docker push registry.ng.bluemix.net/_your_namespace_/_image_tag_
Run container:
cf ic run –name container_name -p 80:80 -p 443:443 -d -t registry.ng.bluemix.net/_your_namespace_/_image_tag_
Manage IP addresses:
cf ic ip request
cf ic ip list -a
cf ic ip bind _your_ip_ _container_name_
Launch application:
browser: http:// _your_ip_
Sample Liberty Application
I’ve implemented a simple hello world Liberty application. In order to deploy it to Bluemix you can use the commands above. Here is the Dockerfile which copies the server configuration and the web application.
I’ve configured Liberty to use the ports 80 and 443, but you can also leave the defaults and change the port mappings in the commands above.