IBM MQ Client running under Windows Docker - docker

I'm looking for a solution to run IBM MQ Client under a Windows Docker container. I know that Docker Hub only provides Linux implementations of MQ, however, I do not need full MQ Server capability. Instead, I'm hoping there's a means to install the MQ Client and simply connect to a Channel and Queues defined on another (non-Docker) system. To approach this, I've done the following:
Spun up a Windows Docker container running under a command prompt (For proof of concept)
Copied in and expanded MQ Client 9.0.0.8-IBM-MQC-Win64.zip
Silently installed MQ Client (e.g. msiexec /i "c:\temp\Windows\MSI\IBM MQ.msi" /l*v c:\temp\install.log /q TRANSFORMS="1033.mst" AGREETOLICENSE="yes" ADDLOCAL="Client").
Note: The installation was successful and without error
Established required environment variables(MQServer, etc.) and updated paths (classpath, lib, include, etc).
Pinged the MQ server system to verify connectivity.
I attempted to put a message on a working, verified queue using, amqsputc.exe MYDOCKER.DS.Q. The immediate return code is MQCONNX ended with reason code 2195. Unfortunately, 2195 is pretty generic and there are no other logs available to review.
I understand the differences between running MQ under a VM versus a container, however since I only need Client access, I was hoping MQ Client was lightweight enough to be usable.
If MQ Client is not a viable direction, is there an MQ solution which might be doable via a Cloud connection? My legacy application is Windows-based and relies on MQ for job messaging.

Instead of installing the Full client install using msiexec, I would recommend that you use the IBM MQ Redistributable client install. This is packaged as a simple zip file for windows which you can extract into any location you choose.
You can find more information about the Redistributable client on the Knowledge Center page Redistributable IBM MQ clients.
You can download the IBM MQ Redistributable clients using the links below:
IBM MQ 9.1 Redistributable client.
IBM MQ 9.2 Redistributable client.
Note: IBM MQ 8.0 is out of support as of April 30th 2020 and IBM MQ 9.0 is going out of support on September 30th 2021.
The IBM Knowledge center page
Limitations and other considerations for redistributable clients gives these requirements:
Windows C runtime libraries
You might have these libraries on your machine already, but if you do not, you need to download and install the following Microsoft C/C++ runtime libraries:
Microsoft Visual C++ Redistributable 2008
Microsoft Visual C++ Redistributable 2012
The download links for the redistributable downloads for each of these libraries can be found at The latest supported Visual C++ downloads.

A possible alternative (and lighter) approach: Write a Go app using the IBM mq-golang package and deploy that in your Windows docker container.
https://github.com/ibm-messaging/mq-golang

Related

Error publishing Docker image to Azure container registry

I am trying to publish my first Docker image (built from a simple .Net core console app) to my Azure container registry. The process started and ran for about two minues before errored out. Here is the error:
The log mentioned contains the same imformation.
It looks like the error is related to some Nuget package:
But the problem is that I don't have this "C:\Program Files\dotnet\sdk\5.0.408" folder on my machine:
and I don't have a reference to that package in my project:
What am I missing? and what should do to fix it? I am totaly new to Docker so any inputs will be highly appreciated.
UPDATE
Here is my firewall settings - it doesn't have any Docker related items in it! Could that be the problem? If so, how do I fix it?
• I would advise you to please check the installation of the latest version of the ‘Docker Desktop for Windows’ software that is supported by ‘ASP .Net Core Web App’ long term release version. It should be compatible to the created ‘.Net Core Web App’ version such that when you are trying to publish your web app image from the Visual Studio App to the Azure container registry, the ‘Docker Desktop for Windows’ will be able to sync push the image to the linked ACR.
• Would also suggest you to please check whether the Linux kernel package for x64 machines is updated or not. If not, would suggest you to please download the WSL2 Linux Kernel update package, install it and restart the ‘Docker Desktop for Windows’ software on your system. This will ensure that the Linux kernel set for the Web app in Visual studio is accordingly setup in ‘Docker Desktop for Windows’ application.
• Finally, please check the local Windows firewall for the inbound allow rules for the ‘Docker Desktop for Windows’ software whether its backend is allowed to run and connect to the Azure Container Registry or not as below: -
Also, ensure that the ‘Azure.Container.ContainerRegistry’ library is installed in your environment through the Visual Studio extension gallery as it is required for developing a .Net Web app code. Please ensure that ‘Microsoft Authentication’ libraries are also installed correctly in your Visual Studio repository for successful connections. I followed the below documentation link for publishing Docker image to Azure Container Registry and I was able to successfully connect to the ACR as shown below: -
https://learn.microsoft.com/en-us/visualstudio/containers/hosting-web-apps-in-docker?view=vs-2022
Thus, would suggest you follow the given link.

Can I run Visual Studio and .Net Framework in a docker container on Mac?

I have a Visual Studio Code app (Angular/.Net Core Web Api app) for work and I can develop, debug and run it on my personal Mac when I VPN into my companies network.
I also have a desktop work PC on my companies site and a remote work server that I can RDP into to do all my work, but I prefer my personal Mac!
I now need to create a .Net Web Api app (NON .Net Core) that my .Net Core app needs to call over http (for WCF web services that won't run on .Net Core), so I created a Visual Studio .Net Framework web Api app on one of my Win PC work machines and I can run both projects side by side (Visual Studio Code and Visual Studio) on my PC but not my Mac.
Is there any way to get the .Net Framework app working on my Mac? ex. in a Docker container or maybe even just running the app in a container, so that my .Net Core app can call it?
Another idea I have but not sure if possible -
When I run the .Net Core app on my Mac I'm VPN'd into my companies network. If I run the .Net Web app on my work desktop or the remote server would I be able to connect to it from my Mac?
Visual Studio Code is a JavaScript application, which is what makes it nice a portable (and also kind of slow). The Visual Studio Framework is a different animal; one that is very territorial. Compiled applications that target the .NET framework will absolutely not run on MacOS, or Linux, or Solaris or..... anything not Windows. .NET core is portable to MacOS though.
As per this post (Can you install and run apps built on the .NET framework on a Mac?) there is the option of using Mono to recompile the code and run it on the Mac. Unfortunately, it does not support the full .NET Framework, and likely requires some non-trivial modifications to the code to make it work. If you go this route, you're either going to be limited to the areas of the Framework that are supported by Mono, or you'll have to maintain 2 different versions of the same code base. Neither option sounds very good to me.
As far as running in Docker, that will not work. Docker is fundamentally tied to the host operating system due to the use of kernel namespaces to provide isolation for processes and other system resources. It does not provide the same kernel API that the .NET Framework would require.
If you are absolutely determined to keep the development work on the Mac, the best option is probably to use a thick virtual machine that runs a full copy of Windows. This has the obvious downsides of being much more expensive (both in terms of the system resources it will need, and the software licensing costs), and you end up using Windows anyway (so you might as well just RDP to a real Windows machine). Probably not the answer you were hoping for (and I would love for someone to list some options that I've missed), but I think you're going to end up doing some work in Windows.
You can't run .NET Framework , because this working with layer architecture from operative system, when running, so many libraries is on migration and now running in .NET core via nuget recomendation is use oficial net core image from microsoft or run you docker over a microsoft server system.

Ucma 4.0 / 5.0 on NanoServer or Windows Server Core?

I want to use ucma API on windows container.But I want to know, can I host the API on nano server or windows server core?
I searched ucma documents but I didn't find any information about containers.
According to requirements, it seems to work only with Windows Server 2016 and Windows server 2012.
So I was able to get a UCMA application to start/register and even accept a call running on a server core container, but it took some doing. The runtime needs to be installed in the container image, which needed to be done manually. You also need to provision the app using the container host's details, and get the cert into the container.
The place where it all breaks down though is with media-if your app needs to play/record prompts for calls, you can't do it from server core. Container or not, the OS is missing the runtime for WMA, and from what I've found, it can't be installed.
For what it's worth, the SFB team doesn't even support UCMA on server core, let alone core on a container, so you're dealing with a couple of layers of "not supported" stuff.
UCMA applications will work fine on Windows Server Core as long as your application doesn't have any UI.
Nano Server I'm not sure.
As far as I know, Nano Server only runs 64-bit applications. UCMA application can run in 64 fine but what I don't know is what .net framework is supported on nano server. If it supports the full .net framework, it may work.
I don't think you will know unless you try it yourself and see if it works or not.

Can Docker containers run in Windows IoT Core

Is there a way to run a Docker container in Windows IoT Core? I have seen it can be used in Azure, Windows Server and desktop W10 but there is no evidence about Windows IoT Core and I am not sure if some of the already existing installations of docker-engine is compatible with IoT Core or it is just not possible.
Last Friday, Azure IoT Edge v2 launched in Public Preview yesterday with out-of-box support for native Windows containers! There is even a how-to for deploying on Windows IoT Core with a compatible x64-based board*.
First party modules like Azure Functions, Azure Stream Analytics, Modbus and a cool developer experience in VS Code for authoring custom modules all work great with Windows containers on both Windows 10 and IoT Core.
*Note: Windows containers require x64-based processor support, they won’t work on ARM32-based devices like Raspberry Pi.
As of IoT Core version 16299, released on 17 October, this feature is in preview.
https://developer.microsoft.com/en-us/windows/iot/docs/whatsnew
You can run Nano Server Core containers on 64-bit Windows 10 IoT core. It is likely to be amd64 only at this point.
The short answer is, no. This is because Windows 10 IoT Core is an OS that supports a set of features that overlap with Windows 10 desktop, but there is no version of Docker that runs on that currently. Off the top of my head, there would be a few concerns with creating such a version. First, the implementation of Docker would have to be runnable (use features that the OS supports), and second, the features utilized in the container would need to be virtualized by Docker in form that are supported in Windows 10 IoT Core. Third, the hardware running Windows 10 IoT Core (and Docker and its container) would have to support all these functions. Maybe some do and some don't. The problem might be whether or not the hardware such as a Raspberry Pi or Minnowboard supports virtualization in a way that this would be a practical scenario.

Java client for Plasticscm?

Where can you download the Plastic SCM java client? It does not appear to be in the binary archives.
The archives at https://www.plasticscm.com/download/ do not have the client.
Yes, the java client is available for HP-UX, Solaris and other Unix flavors where Mono is not natively present. For almost all Linux distros, Mac and even BSD's you can use Mono + Plastic and get native performance. Remember we also launched a native GUI for Linux (GTK based) and Mac (Cocoa based).
Please contact support at codicesoftware dot com in order to request the Java client :)

Resources