WilliamLam.com

  • About
    • About
    • Privacy
  • VMware Cloud Foundation
  • VKS
  • Homelab
    • Resources
    • Nested Virtualization
  • VMware Nostalgia
  • Apple
You are here: Home / Apple / How to update AppCatalyst's default PhotonOS VM template w/Docker 1.9?

How to update AppCatalyst's default PhotonOS VM template w/Docker 1.9?

12.19.2015 by William Lam // 9 Comments

For those of you using VMware's free AppCatalyst Hypervisor, you may have noticed that there is currently not a way to update to the latest Docker 1.9 Engine/Client using Photon's package manager, Tiny Dandified YUM (tndf). Although you can manually install Docker 1.9 on any deployed PhotonOS VMs from AppCatalyst, the only issue with that is that all VMs based off of the default PhotonOS template will still be running version 1.8, which means you would need to apply to do this on ever new VM creation.

Not ideal at the moment, but there is a simple fix which is to update the default PhotonOS template with Docker 1.9. We can easily this simply by leveraging AppCatalyst itself to update itself 😉 or rather its default PhotonOS VMDK. Below are the manual steps if you wish to walk through this yourself, but if you rather just run a simple script that will compeltely automate the entire process, just jump straight to the bottom of this article 🙂

Step 1 - Create a new temp PhotonOS VM (in my example, I'm calling it PHOTON-DOCKER-1.9) which we will use to install Docker 1.9. You can do so by running the following command:

/opt/vmware/appcatalyst/bin/appcatalyst vm create PHOTON-DOCKER-1.9

update-docker-client-to-19-in-appcatalyst-photonos-template-1
Step 2 - Power on the temp PhotonOS VM that you just created by running the following command:

/opt/vmware/appcatalyst/bin/appcatalyst vmpower on PHOTON-DOCKER-1.9

update-docker-client-to-19-in-appcatalyst-photonos-template-2
Step 3 - Retrieve the IP Address of the temp PhotonOS by running the following command (this could take up to a minute or so to display):

/opt/vmware/appcatalyst/bin/appcatalyst guest getip PHOTON-DOCKER-1.9

update-docker-client-to-19-in-appcatalyst-photonos-template-3
Step 4 - We can now SSH to the temp PhotonOS by using the IP Address from the previous step. You will need to specify the private key to login to the PhotonOS by running the following command:

ssh -i /opt/vmware/appcatalyst/etc/appcatalyst_insecure_key photon@[IP-ADDRESS]

update-docker-client-to-19-in-appcatalyst-photonos-template-4
Step 5 - Now we will download and install Docker 1.9 but before doing so we also need to grab the "tar" utility as it does not seem to be part of the default PhotonOS. Here is a one-liner that will automatically install the tar utility and then perform the download and install of Docker (Thanks to Massimo Re'Ferre for his original install steps, just polishing up his awesomeness). Copy and paste the snippet below which you will run that inside of the PhotonOS:

sudo tdnf -y install tar;curl -O https://get.docker.com/builds/Linux/x86_64/docker-1.9.1.tgz;tar -zxvf docker-1.9.1.tgz;sudo systemctl stop docker;sudo cp usr/local/bin/docker /usr/bin/docker;sudo systemctl start docker;rm -rf usr/;rm -f docker-1.9.1.tgz;exit

update-docker-client-to-19-in-appcatalyst-photonos-template-5
Step 6 - Now that we have our PhotonOS updated with Docker 1.9, we just need to shut it down and replace the VMDK with AppCatalyst's default PhotonOS VMDK. Run the following command to find the name of your temp PhotonOS VMDK.

find "${HOME}/Documents/AppCatalyst/PHOTON-DOCKER-1.9" -name '*.vmdk'

Once you have the VMDK name, you should backup the original AppCatalyst's PhotonOS VMDK by running the following command:

sudo mv /opt/vmware/appcatalyst/photonvm/photon-disk1-cl1.vmdk /opt/vmware/appcatalyst/photonvm/photon-disk1-cl1.vmdk.bak

Next, we will copy our temp PhotonOS VMDK to AppCatalyst's default PhotonOS directory and replace its original VMDK by running the following command:

sudo cp ${HOME}/Documents/AppCatalyst/PHOTON-DOCKER-1.9/photon-disk1-cl2.vmdk /opt/vmware/appcatalyst/photonvm/photon-disk1-cl1.vmdk

Finally, we need to make sure the new VMDK has the correct permissions by running the following command:

sudo chmod 644 /opt/vmware/appcatalyst/photonvm/photon-disk1-cl1.vmdk

Step 7 - At this point, you can verify that your changes were successful by creating a new PhotonOS VM and once logged into the VM, you can run "docker version" to verify that you are now running Docker 1.9 as shown in the screenshot below.

update-docker-client-to-19-in-appcatalyst-photonos-template-6
For those those of you who do not wish to go through the manual steps, here is a quick script called update_docker_client_in_appcatalyst.sh which automates this entire process describe in the instructions above. Here is a quick screenshot of a sample execution of the script. I am hoping the Photon team will be updating the tdnf online repo so that you can simple run yum -y update docker in the future.

update-docker-client-to-19-in-appcatalyst-photonos-template-7

More from my site

  • How to configure shared folders in VMware AppCatalyst?
  • Quickly getting started with VMware AppCatalyst & AppCatalyst Vagrant Plugin
  • Configuring Github Actions self-hosted runners on PhotonOS 
  • Project USB to SDDC - Part 3
  • Project USB to SDDC - Part 2

Categories // Apple, Automation, Cloud Native, Docker Tags // appcatalyst, Docker, Photon, tdnf

Comments

  1. *protectedPteer says

    12/29/2015 at 1:20 pm

    On appcatalyst vmpower on PHOTON-DOCKER-1.9 I got the following errors:
    2015-12-29T22:26:05.705+02:00| vmx| W115: Cannot determine message file path for locale "en".
    2015-12-29T22:26:05.707+02:00| vmx| I125: DictionaryLoad: Cannot open file "/Library/Preferences/VMware AppCatalyst/config": No such file or directory.
    2015-12-29T22:26:05.708+02:00| vmx| I125: Msg_Reset:
    2015-12-29T22:26:05.708+02:00| vmx| I125: [msg.dictionary.load.openFailed] Cannot open file "/Library/Preferences/VMware AppCatalyst/config": No such file or directory.
    2015-12-29T22:26:05.708+02:00| vmx| I125: ----------------------------------------
    2015-12-29T22:26:05.708+02:00| vmx| I125: ConfigDB: Failed to load /Library/Preferences/VMware AppCatalyst/config
    2015-12-29T22:26:05.708+02:00| vmx| I125: DictionaryLoad: Cannot open file "/dev/null/Non-existing DEFAULT_LIBDIRECTORY/config": Not a directory.
    2015-12-29T22:26:05.708+02:00| vmx| I125: Msg_Reset:
    2015-12-29T22:26:05.708+02:00| vmx| I125: [msg.dictionary.load.openFailed] Cannot open file "/dev/null/Non-existing DEFAULT_LIBDIRECTORY/config": Not a directory.
    2015-12-29T22:26:05.708+02:00| vmx| I125: ----------------------------------------
    2015-12-29T22:26:05.708+02:00| vmx| I125: ConfigDB: Failed to load /dev/null/Non-existing DEFAULT_LIBDIRECTORY/config

    Can you send me a sample configuration file?

    Reply
    • William Lam says

      01/02/2016 at 6:55 am

      These aren't actual errors, but rather warnings. I get the same as well and are related to the AppCatalyst config files which would override any existing defaults. This file does not exist by default. If you can successfully power on the VM, which in this case is nothing more than creating a cloned VM from the default template, you'll be good.

      Reply
      • *protectedPeter says

        01/03/2016 at 12:39 am

        Thanks for your answer! Yes I can clone the Photon VM, but I can't SSH to it with this command, ssh -i /opt/vmware/appcatalyst/etc/appcatalyst_insecure_key photon@[IP-ADDRESS]. It is asking for password, the appcatalyst_insecure_key photon is in the right path. Do you know, where can I find an AppCatalyst sample configuration file?

        Reply
        • William Lam says

          01/03/2016 at 7:14 am

          Not being able to login has nothing to do with AppCatalyst configuration file. The default installation should allow you to clone from the default Photon VM and login using the SSH key that's included. If you're not able to do this, then I would double check your install and perhaps permissions on the SSH keys themselves. This should just work before even moving forward with any of the instructions outlined.

          Reply
          • *protectedPeter says

            01/03/2016 at 8:22 am

            Yes, you are right, it was permission problem, now is working.
            Thanks for your support!

        • *protectedEzzeldin says

          02/29/2016 at 3:05 am

          hi Peter, how did you fix it? i am facing the same password issue:(

          Reply
          • *protectedPeter says

            02/29/2016 at 3:18 am

            It was problem with permissions on the SSH keys.
            /opt/vmware/appcatalyst/etc/appcatalyst_insecure_key

  2. *protectedcarolyn says

    01/02/2016 at 8:13 am

    What a great and informative post. Thanks for posting

    Reply
  3. *protectedAndrew says

    03/27/2016 at 1:29 pm

    Just a few notes from TP2 and using Docker 1.10.x and 1.11.x

    - Docker 1.11.x has 4 binaries now instead of 1, I haven't tried this yet, but be aware you need to consider the additional binaries

    - With Docker 1.10.0 and newer releases requires that you change the "docker.service"
    Change "ExecStart=/bin/docker -d -s overlay"
    To "ExecStart=/bin/docker daemon -s overlay"
    Reload systemctl-daemon with "systemctl daemon-reload"
    Then you can start your docker daemon without errors.

    Also with TP2, the sudo command is not available, at least not in the minimal install, I logged in as root to complete the tasks.

    Reply

Leave a Reply to PteerCancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Search

Thank Author

Author

William is Distinguished Platform Engineering Architect in the VMware Cloud Foundation (VCF) Division at Broadcom. His primary focus is helping customers and partners build, run and operate a modern Private Cloud using the VMware Cloud Foundation (VCF) platform.

Connect

  • Bluesky
  • Email
  • GitHub
  • LinkedIn
  • Mastodon
  • Reddit
  • RSS
  • Twitter
  • Vimeo

Recent

  • Programmatically accessing the Broadcom Compatibility Guide (BCG) 05/06/2025
  • Quick Tip - Validating Broadcom Download Token  05/01/2025
  • Supported chipsets for the USB Network Native Driver for ESXi Fling 04/23/2025
  • vCenter Identity Federation with Authelia 04/16/2025
  • vCenter Server Identity Federation with Kanidm 04/10/2025

Advertisment

Privacy & Cookies: This site uses cookies. By continuing to use this website, you agree to their use.
To find out more, including how to control cookies, see here: Cookie Policy

Copyright WilliamLam.com © 2025

 

Loading Comments...