|
Thanks, useful information!
Seems my suspicion of the (free) Docker Registry is confirmed, on Slant someone commented:
Quote: Biggest CON there is that it cannot control deleting of images properly
Bottom line is this makes docker registry suck when your harddisk fills up at the wrong time and you cannot push out your builds! Of course this has nothing to do with the "Enterprise Grade Private Docker Registry which seems fine and reasonably priced too.
|
|
|
|
|
As far as I can see, even the free version CAN delete images properly, but you have to do a garbage collection (analogous to emptying your thrash bin in Windows) to actually free up the space.
Another detail: When you use the REST API "by hand", deletion requires a SHA that I haven't yet discovered how to read from the registry itself. (Maybe I am expected to locally calculate the SHA of the image manifest - I believe that is what it really is!) So I have to pull the image to the Docker engine, which can provide the SHA I need through "images --digests". I guess I will find a way where I don't have to pull a huge image across the network only because I want to delete it!
|
|
|
|
|
Maybe you can use the .NET Client for Docker Remote API, GitHub - Microsoft/Docker.DotNet: .NET (C#) Client Library for Docker API[^]
DockerClient client = new DockerClientConfiguration(new Uri("your.url")).CreateClient();
IList<ContainerListResponse> containers = await client.Containers.ListContainersAsync(
new ContainersListParameters()
{
Limit = 100,
});
foreach (var container in containers)
{
Console.WriteLine(container.Image);
Console.WriteLine(container.ID);
Console.WriteLine(container.ImageID);
Console.WriteLine(container.Names[0]);
Console.WriteLine();
}
|
|
|
|
|
Thanks - I wasn't aware of this library, and I will sure make use of it to build a simple Windows GUI. It is very useful to me.
However... It is the answer to another question. This interfaces to the Docker Engine - the "virtual machine" (I do not use this term to start another war, just to explain where we are at!) on which the containers are executed. The Engine comes with a command line interface, both in Windows and Linux distributions. Linux die-hards never want anything else, and can't understand that Windows people find it cumbersome. This library is great for building a more visual interface for those who want something else.
When you use the CLI (or a GUI based on this interface) to start a container from an image not currently available, the Docker engine will pull it from a remote database, a "registry". Unless you have set up your own, you (by default) use the "Docker Hub" registry, at docker.io. Your only involvement in the image retrieval is naming the image you want to run; you do not see the registry as such. You may also explicilty pull an image from a registry, or push an image you have build, yet you need to know just the full image name.
If you want to inspect the registry itself - the Docker Hub, one you have set up yourself or some other registry you have access to - you do not talk to the Docker Engine, but to the remote registry, at another location, and speaking a quite different language. Well, both are REST based, but I was really surprised to see how different two REST APIs can be, in particular considering that they both come out of the Docker community!
The biggest difference is in the description of the protocol; REST does limit your freedom somewhat. But even at the REST level, the choices made are so divergent that to make common UI for the Engine and the registry is like making two separate programs under a single surface. I can't easily see how I can make higher abstractions (/classes) suitable for both protocols. Of course it is "possible", but far from "elegant"; a lot of it will be of no interest to "the other" part.
Maybe I will try to make a "merged" GUI anyway. But we have a number of Linux die-hards here that will become rather grumpy when they are offered a nice GUI only if they jump out of their nice cosy Linux whirlpool and dirty their hands on using a Windows tool. I guess they will stick to their CLI interface to the Engine, and if they need to inspect the registry, they will use curl and type the REST URLs by hand.
|
|
|
|
|
I am not interested... but +5 for a nice answer
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
Rating helpful answers is nice, but saying thanks can be even nicer.
|
|
|
|
|
|
The only way to win is not to play.
|
|
|
|
|
Quote: In the end, it's not the years in your life that count. It's the life in your years.
|
|
|
|
|
Is a cool dog a trend setter?
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
I rish it were that simple...
Socialism is the Axe Body Spray of political ideologies: It never does what it claims to do, but people too young to know better keep buying it anyway. (Glenn Reynolds)
|
|
|
|
|
Yup, especially if they are beagle eyed pilots and fly the Terrier jet.
"the debugger doesn't tell me anything because this code compiles just fine" - random QA comment
"Facebook is where you tell lies to your friends. Twitter is where you tell the truth to strangers." - chriselst
"I don't drink any more... then again, I don't drink any less." - Mike Mullikins uncle
|
|
|
|
|
Fidon't know about that - collie what you may, but trends are a lot of bull, anyway - and you shnauzer that without my bringing it up.
Ravings en masse^ |
---|
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein | "If you are searching for perfection in others, then you seek disappointment. If you are seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010 |
|
|
|
|
|
|
Rajesh R Subramanian wrote: Bite me. So, you unleash your inner desires! Only in your dreams, or if you know a willing young lady, collar.
Ravings en masse^ |
---|
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein | "If you are searching for perfection in others, then you seek disappointment. If you are seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010 |
|
|
|
|
|
Wouldn't a trend setter be a pointer? And if it didn't pan out, would it be null?
Freedom is the freedom to say that two plus two make four. If that is granted, all else follows.
-- 6079 Smith W.
|
|
|
|
|
That's enough Griff. No more bulldog please!
"If we don't change direction, we'll end up where we're going"
|
|
|
|
|
Possibly, but wouldn't a hot dog be more likely to start a frank discussion?
|
|
|
|
|
Oh burger! I didn't think of that!
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
That's really the wurst thing to post.
Ravings en masse^ |
---|
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein | "If you are searching for perfection in others, then you seek disappointment. If you are seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010 |
|
|
|
|
|
Hey, they can't all be wieners...
|
|
|
|
|
I do a lot of development, migrating, porting, etc., in different environments, different systems, different languages, different versions,....get the idea? I have specialized over the years in doing weird stuff.
I just finished chasing a bug in some vintage commercial software that was written to accommodate big-endian and little-endian integers depending on the platform.
It turned out be that it applied big-endian logic in one place where little-endian was required.
The why's and wherefore's of doing this are not important. What is important is the line of thought I reached upon conclusion, i.e., What I want to see in software.
1) I want to be able to declare my variables of a type and then have the necessary conversions take place automatically.
E.g., I want to declare a "X" as a 2-byte integer and "S" as an ASCII (or utf8, utf16, whatever...) character string and be able simply specify 'S = X AS "format" --not "S =X.toString("fmt");", "S = itoa(i);" or whatever language conversion functions are appropriate.
I know what I have going in, I know what I want coming out--make it easy to get from A to B!!
2) I want my data declarations to be consistent across all platforms/languages/environments/...!
Before some reader gets all hot and bothered about using C typedefs, etc., in declarations, I know this can be done.
What I want is consistency--i.e., a "short" to be a 2 byte integer, a "long" to be a 4 byte integer,....get the drift. Part of problem I was chasing had to do with the software expecting a C int to be 32 bits, but some 64 bit environments define an int as 64 bits
3) I want my utilities and commands to operate the same way, with the same results, across all platforms.
If I do a "myutil -x" command on Linux, I want to see EXACTLY the same output and results across cygwin, Windows 10 Ubuntu, Debian, etc.
4) I want clear, simple, understandable, comprehensible programming constructs.
I am tired of chasing errors such as where somebody fat-fingered "=" when "==" was meant or where a brace was misplaced or omitted. I want to be able to look at a piece of code and understand what the author intended easily and clearly.
5) I want clear, complete commercial documentation.
I have seen thousands of circular definitions such as:
returntype FunctionXYZ(int p1, int p2); Returns XYZ of p1 and p2.
BIG WHOOPING DEAL! I'm not an idiot--I can plainly see that from the function call. I often need to know HOW it uses p1 and p2 to arrive at XYZ. (Of course, by now, some readers will be questioning the part about "idiot", but that's OK).
Somebody once said there's a beautiful language inside C++ just waiting to get out. I agree. But, C++ has gotten overly complex, overly confusing. (I ask you to consider why there are development environments such as wxWidgets, QTCreator, boost and std::... )
My desire is to "eschew obfuscation."
So, if someone plans on responding defensively or criticizing--Don't.
I am looking for ideas, things that people would want or would like to see done differently so that we can be more effective, more productive and more competent.
What's your thoughts?
|
|
|
|
|
According to Microsoft, VB6 should meet all your needs!
- I would love to change the world, but they won’t give me the source code.
|
|
|
|
|
VB6 is one of the few languages I have not messed with. I'll check it out. Thanks.
|
|
|
|
|
Don't. You are clean, stay that way.
"It is easy to decipher extraterrestrial signals after deciphering Javascript and VB6 themselves.", ISanti[ ^]
|
|
|
|
|
He's playing with you: VB6 died for new projects in 2002 or so when .NET was released.
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|