Tag: containers

  • Docker Challenges

    I’ve been trying to get time to play with Docker more. I had it setup on my old laptop and was experimenting with different ways of working with containers and databases before I switched. Since then I’ve been slightly hamstrung as I’ve been a VMWare person for some time. I have demos and various machines setup, so I haven’t gotten this working on my desktop.

    On the new laptop, I decided to get this moving on my last trip. I installed the Docker msi, rebooted, and …

    Nothing. I saw a service, but none of the “docker …” commands would work. I’d get errors and when I tried to run Docker for Windows, nothing happened. No app, nothing in the task bar, just a big fat nada. I’d get an error about Virtualbox, and despite some bcedit and other commands, I couldn’t get this to work.

    This has been a  low priority, despite the fact that I’d like to do a database container presentation and Redgate is doing some work here. On a recent trip, I had some time to play, so I sat down and started debugging. I went back and found the Windows 10 Quick Start on Microsoft’s site and went from there.

    A few things on this. First, I uninstalled the old Docker for Windows and rebooted the machine. I made sure virtualization was enabled in BIOS and then went through the Docker instructions. I downloaded the new Community Edition .exe for 64 bit Windows and installed it. Another restart and I was amazed to see the Docker icon in the status bar. I made progress.

    I tried a “docker run hello-world”, but got an error. Before I could start swearing, I got the Docker popup that I needed to log into the Docker Cloud. That necessitated creating a DockerID (way0utwest, of course), which was fun since I couldn’t minimize the Docker popup and I was afraid to close it. Once I registered and confirmed my email, I could run the Hello World container.

    Docker is interesting and I’ll do some more work and writing about it, especially the basics. If you’ve never tried a container, it’s one of those technologies to put on your list.

  • Power BI Desktop on the Mac

    Power Bi is one of the neatest tools that Microsoft has built for data professionals. It allows anyone to build fantastic interactive visualizations that can help tell a story and help someone make decisions. There have been some amazing demo visualizations from Microsoft customers. I’ve seen a predictive maintenance visualization for airplanes, one for diabetes trends and a fun basketball visual. There are also a fantastic set of custom visual controls, quite a few of which are described in Devin Knights blog series.

    If you don’t know anything about Power BI, there are lots of resources, including some amazing tips from the Guy in a Cube. Adam Saxton has an amazing channel and puts together some impressive videos with Patrick LeBlanc. They might be one of the best sources for learning to work with the tools. You might want to spend some time playing with Power BI as I can almost guarantee that you’ll build better reports with this tool than you would otherwise. You’ll impress your customers, clients, and boss with your design work.

    Plenty of people have Mac laptops, especially business people, and for quite some time they’ve had to deal with a lack of native tooling. Certainly there are lots of software ports, and no shortage of web software, but there are always places where a lack of a native solution is problematic. I don’t know that we’ll get lots of software ported to a new OS, but there is a better solution. Containerization can help smooth the way.

    A few years back I met the Kenji Obata, founder of Turbo.net. He was doing some interesting work with containers, and I was fascinated by their work. Since then, they’ve grown and refined their technology, and now they have Power BI for Mac available. As soon as I saw their walk-through video, I wanted to share the experience. It’s pretty amazing, and if I were still running OSX, I’d be looking to use some of the Microsoft tools I want on the native desktop.

    This isn’t really native, but the experience feels native. The use of containerization technology might be debatable for databases, but for client applications, it’s amazing. The way that Turbo.net packages up applications is incredible. I like Turbo, and if you need to use Microsoft client applications on a Mac, you might give them a try. It’s not free, but it’s way better than virtualization and has some really cool features as well. I’m sure lots of non-technical people, especially management, that might build reports would love the experience of running Power Bi Desktop on their Mac.

    They even have SSMS available as a turbo container for the Mac, if you’re interested.

    Steve Jones

    The Voice of the DBA Podcast

    Listen to the MP3 Audio ( 4.6MB) podcast or subscribe to the feed at iTunes and Libsyn.

  • Containing the Work

    Containment is becoming more prevalent in the computer world. We have containers coming to Windows Server 2016 (or earlier versions with WinDocks), a concept that’s been embraced in the Linux world for some time. If you haven’t looked at containers, they are a great way to isolate and stabilize your application environment. They can also be great for dev/test environments. You might do a little reading to understand how they can be used.

    While containers might be good for SQL Server (or maybe not), we’ve had other types of containment in SQL Server. We got partially contained databases in SQL Server 2012, with little change since then. That is susprising to me since I expected that all Azure SQL Databases would be contained, and we would want more functionality inside of them. However, those have opened up slightly and I’m not sure where containment is going.

    Personally I’d like to see jobs contained inside of a database. The vast majority of processes I’ve written over the years for application or system work on a database pertained only to that database. I’d like to see things like backups, maintenance, etc. contained as jobs inside a database, that travel with the database as I detach/attach it, backup/restore, and more. That might eliminate some of the issue with clusters and AGs if most jobs moved with a database.

    That got me thinking. What else would we want to contain? The thing that comes to mind is a distributor. I’d like to have a distributor somehow contained with all the information about replication processes contained inside of this database (including the jobs). The database would need a way to register with the instance so the publisher and subscribers could find it, but wouldn’t that make replication administration easier?

    How about the SSIS Catalog and ETL information. Having more information here as a contained database might make managing ETL operations easier, especially if we need to move the load to another instance.

    I’m sure there are other ways in which having information, metadata, and job functions contained inside of a database would be helpful, and easier on the administration of the system, whether by humans or automated systems.

    Steve Jones

    The Voice of the DBA Podcast

    Listen to the MP3 Audio ( 3.8MB) podcast or subscribe to the feed at iTunes and Libsyn.

  • Containers and Databases

    There’s this push to use ever thinner and lighter weight computing techniques. We moved from mainframes to servers to blades to VMs, and now many developers are looking at containers more and more. What started as a Linux idea popularized by Docker has come to Windows, with container support in Windows Server 2016. Just recently SQL Server 2016 Developer edition was announced as a container, which makes deploying a SQL Server easy, with no install.

    Is this a good idea, though? Containers certainly make sense for many applications. Got a flaky Java app that crashes? Put it in a container, avoid dependencies on the OS, and if there’s an issue, restart it quickly. Got a service that needs to scale? Put it in a container and run multiple instances. Messaging, endpoint services, middle and front end apps, all of these can make fantastic use of containers.

    Containers fit in quite a few spaces, but do they make sense for databases? I’m not sure. After all, one of the advantages of containers is that they are stateless. Drop one, restart another. That’s not something we want to do with databases, as we need the data to persist. Containers also help when the application is unstable and may need restarting, but SQL Server, along with most database platforms, is very stable to run.

    Where do containers make sense? I think for development and test environments, containers have value. These are places where we may need to stop and recreate an environment quickly. Certainly  a container with a small amount of data, say a curated set of test data, is a great way to try or test code, then destroy the container, modify something, and repeat. A DevOps process, repeatable with containers.

    In production, however, I’m not sure that there is much of a place. Perhaps Express makes sense on laptops, where we can avoid the install of a SQL Server, but certainly the data needs to persist outside of the container. We’ve seen how to do this with WinDocks, and I’m sure some vendors will deploy containers in this way once they are available on laptop OSes. However, on servers? I don’t see the place where a SQL Server container makes sense, but please, let me know if you have a place for a containerized database.

    Steve Jones

    The Voice of the DBA Podcast

    Listen to the MP3 Audio ( 3.8MB) podcast or subscribe to the feed at iTunes and Libsyn.