This talk is for Domino admins and developers who would like to leverage containerization and want to get started navigating this jungle of technologies. Docker, Podman, Kubernetes, OpenShift, and more - we're going to explain when to use which platform and how to automate your deployments. The speakers will be:
Thomas Hampel, Director, HCL Product Management
Daniel Nashed, HCL Lifetime Ambassador
2. AGENDA
• Welcome – Howard Greenberg and Graham Acres
• Thomas Hampel, Director, HCL Product Management
• Daniel Nashed, HCL Lifetime Ambassador
• Q and A - All
3. ASKING QUESTIONS
• First Question – Will this be recorded?
• Yes, view on YouTube!!!
• https://www.youtube.com/user/OpenNTF
• Use the Questions Pane in GoToWebinar
• We will get to your questions at the end of
the webinar
• The speakers will respond to your questions
verbally
• (not in the Questions pane)
• Please keep all questions related to the
topics that our speakers are discussing!!!
• Unrelated Question => post at:
• http://openntf.slack.com/
4. THANKS TO THE OPENNTF SPONSORS
• HCL made a significant contribution to help our
organization
• Funds these webinars!
• Contests like Hackathons
• Running the organization
• Prominic donates all IT related services
• Cloud Hosting for OpenNTF
• Infrastructure management for HCL Domino and Atlassian
Servers
• System Administration for day-to-day operation
5. THIS IS OUR COMMUNITY
• Join us and get involved!
• We are all volunteers
• No effort is too small
• If your idea is bigger than you can do on your own, we
can connect you to a team to work on it
• Test or help or modify an existing project
• Write guides or documentation
• Add reviews on projects / stars on Snippets
6. NEXT WEBINAR
• February OpenNTF Webinar: Introduction to
Ansible for Newbies
• For Domino admins and developers who would
like to learn Ansible basics.
• Christoph Stoettener, HCL Ambassador
• Thursday, February 18, 2021 at 11:00 AM (New
York time)
• www.openntf.org/webinars
45. If your idea does not
already exist, create a
new idea and format
your idea like:
“As a <insert role>, I
would like to be able to
<insert action> in order
to <insert need>.”
• Where we gather and
prioritize your ideas
• Where we want you to
add, vote, comment on
and share as many ideas
as you like.
Create as many ideas
as you’d like, but
remember to keep
each idea, separate.
Do not create idea
that consist of more
than one request for
enhancement.
https://domino.ideas.aha.io/
1 2 3
Search the forum to
see if your idea already
exists.
Vote for any ideas and
add any additional
comments that you
may have related to
that idea.
And, please follow these three steps:
Questions & Keep the Ideas Coming – Domino Ideas Portal
50. What's going on with Docker?
Docker was innovator but now other projects took the lead
Also Kubernetes (K8s) stops supporting Docker
The brand new Docker CE 20.10 & Docker Desktop 3.0 can't keep up with other projects
Podman
Has interesting new integration “Podman Play” allowing
to bridge configurations for K8s YML configurations
Can be used as a almost 1:1 replacement for Docker functionality
Podman is fully supported by our GitHub project – the command line is very similar
But: Whatever software we use – it is all about IMAGES and CONTAINERS
51. Install Docker Community Edition 20.10
Works better on CentOS 8 – Installs without hacks, Firewall fixed & easier to install
New Docker installation script – works automatically
curl -fsSL https://get.docker.com -o get-docker.sh
chmod 755 get-docker.sh
./get-docker.sh
Enable (auto start) and start the Docker Service
systemctl enable --now docker
Check configuration
docker version Installing Podman would be a single command:
yum install -y podman
53. 1. Get the Domino Docker Scripts from GitHub
Install git software
yum install -y git
Create a new directory for your git projects and switch to it
mkdir -p /local/github
cd /local/github
Clone ("download") the repository locally
git clone https://github.com/IBM/domino-docker
cd domino-docker
git checkout develop
54. 2. Download or map Domino Software
The Open Source Docker Script requires software either locally or download location
We can't provide software or a complete image – But we can make it easy for you
Two different modes
Local Directory
Standard Directory “software” → hosted from a temporary NGINX container
Example: /local/github/domino-docker/software
Download from a remote host
Edit DOWNLOAD_FROM in the build.sh
Example: DOWNLOAD_FROM=http://centos-mirror.nashcom.loc/software
55. 3. Docker Image “build” Process
A central script “build.sh” is used to invoke the build
Currently implemented images
./build.sh domino
./build.sh traveler (builds an image based on the “domino” image)
./build.sh volt (builds an image based on the “domino” image)
By default the latest version is used
You could choose a specific version by explicitly specifying the version and options..
./build.sh domino 12.0.0beta1 dockerfile_centos8 latest12 -nolinuxupd
Software.txt contains up to date download names and SHA256 hashes
56. Build & Run HCL Volt
HCL Volt is based on Domino
So let's build an add-on image on top of an existing Domino V12 Beta 1 image...
CentOS → Domino → Volt
Demo: ./build.sh volt dockerfile_domino12 -nolinuxupd
It's more than just a standard image...
We added automatic Domino & Volt configuration and basic certificate generation
Volt databases, HTTPS configuration, DomCfg, Session based authentication …
57. 4. Run a Domino Domino Server via Docker CLI
Command-Line to create a container from an image
docker run -it -p 80:80 -p 1352:1352
--hostname=myhost --name mycontainer
--cap-add=SYS_PTRACE
--env-file env_domino
-v notesdata:/local/notesdata domino-docker:V1101FP2_10202020prod
Details
--cap-add-SYSPTRACE → important for NSD / gdb
--env-file → passes environment variables to the container
-p → publishes external ports (internally sets firewall rules automatically!)
-v → Maps volumes to the container
58. 4. Run via Docker Compose
Docker Compoes uses a YAML files to define one or multiple containers in one service
They can join the same Docker “network”
Sametime Meetings Premium is using docker-compose to bring up multiple containers as one “service”
Helm is used for K8s – Allows to scale adding more pods on demand
Many other projects use docker-compose.yml files to describe their services
Sametime 8.5 Premium uses docker-compose to define and manage all containers
In the end it's still managing the same containers we already know in a different way
See examples in the Git repository
59. Brand new – Domino Container Start Script
This will replace the management script in our Domino Docker Git project
Part of Nash!Com start script, integrated into the Domino Docker project
Already included in the Domino Docker Project
Similar options you know from the Domino on Linux start script
“One stop shopping” for all your operations
Includes Podman systemd integration
Custom image build support!
Let's have a look …
62. CentOS Stream – What's going on?
There is a lot of confusion
It's not new information!
An it isn't as critical as many discuss it
There is no such thing as Enterprise level free beer
You always have to pay a price or take a “risk”
But CentOS Stream will still be a stable and free enterprise Linux
It will be the version becoming the next RHEL dot release
Quote from: Matthew Miller
Distinguished Engineer at Red Hat / Fedora Project Leader
63. Stream
Bleeding edge
Free & based on
stable RHEL
Enterprise Release
Stable / Commercial
Ahead of REHL becomes
the next RHEL dot release
Enterprise Release
Stable / Commercial
→
Bleeding edge
→
→
→
65. Git
A tool you should know today!
Many software developers and companies use Git to manage their source code
GitHub is a platform where you find most of the software projects
We can't avoid them even they are owned by Microsoft
Most important commands for using our Git project
“git clone” – to clone a project
“git checkout develop” – to switch to the develop branch of the project
“git pull” – to update your local repo
66. {JSON} – A standard you can't avoid
https://www.json.org
Most configuration files today are in JSON
It replaces XML in many cases.
If you never looked into JSON you have start now!
The most popular parser on Linux:
JQ – https://stedolan.github.io/jq/
Very powerful and included in the Linux distributions
67. YAML – Another standard you can't avoid
https://yaml.org/
YAML / YML is often used in the container world to describe a configuration
For example used in docker-compose and K8s configuration
Very reduced & simplified format
What homepage says:
“YAML: YAML Ain't Markup Language”
“What It Is: YAML is a human friendly data serialization standard for all programming languages.”
Tool for Linux: https://mikefarah.gitbook.io/yq/
68. XML –> JSON → YAML
Source: https://developer.ibm.com/technologies/containers/tutorials/yaml-basics-and-usage-in-kubernetes/
Great video with all you need to start: https://www.youtube.com/watch?v=1uFVr15xDGg
70. Working with Docker
Important commands
docker images → lists all locally available images
docker ps → shows all running containers
docker ps -a → also shows stopped containers
docker run → creates container from image and starts it
docker start/stop → starts/stops existing containers
docker inspect → shows detailed information for a container
docker volume ls → lists existing volumes
docker volume rm → removes a volume
docker exec → executes a command inside a container
71. Docker Volumes
By default all data is stored in the container
For applications with local storage requirements, this
does not work well
Therefore Docker supports “volumes” which are mapped
in to the container
The data from the local directory will be copied to
the volume at first run when the volume is empty
The default implementation is a local disk
You can either create a volume manually, mount
existing directories or let Docker create it
https://docs.docker.com/storage/volumes/
72. Docker Volumes
Multiple options
You can specify an existing volume in your run statement
docker run --rm -it -v /local/data1:/local/data centos:latest bash
Or let Docker create a local volume
docker run --rm -it -v test-data1:/local/data centos:latest bash
Default location: /var/lib/docker/volumes
Or for example use a NFS mount on a NAS
docker volume create --driver local --opt type=nfs --opt o=addr=192.168.96.41,rw
--opt device=:/data/docker_vol --name nfsvol
docker run --rm -it -v nfsvol:/local centos:latest bash
73. Docker Volume Commands
docker volume ls
Lists all volumes
docker volume inspect my-vol
Shows details about one volume
docker volume create my-vol
Creates local volume
docker volume rm my-vol
Removes volume!
docker system df
Checks for used/free space
docker system prune
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache
74. QUESTIONS?
Use the GoToWebinar Questions Pane
Please keep all questions related to the
topics that our speakers are discussing!!!
Unrelated Question => post at:
http://openntf.slack.com/