Get Advice Icon

Need advice about which tool to choose?Ask the StackShare community!

Docker
Docker

28.1K
22.3K
+ 1
3.8K
Xcode
Xcode

5.4K
3.5K
+ 1
210
Add tool

Docker vs Xcode: What are the differences?

Docker: Enterprise Container Platform for High-Velocity Innovation. The Docker Platform is the industry-leading container platform for continuous, high-velocity innovation, enabling organizations to seamlessly build and share any application — from legacy to what comes next — and securely run them anywhere; Xcode: The complete toolset for building great apps. The Xcode IDE is at the center of the Apple development experience. Tightly integrated with the Cocoa and Cocoa Touch frameworks, Xcode is an incredibly productive environment for building amazing apps for Mac, iPhone, and iPad.

Docker belongs to "Virtual Machine Platforms & Containers" category of the tech stack, while Xcode can be primarily classified under "Integrated Development Environment".

Some of the features offered by Docker are:

  • Integrated developer tools
  • open, portable images
  • shareable, reusable apps

On the other hand, Xcode provides the following key features:

  • Source Editor
  • Assistant Editor
  • Asset Catalog

"Rapid integration and build up" is the primary reason why developers consider Docker over the competitors, whereas "IOS Development" was stated as the key factor in picking Xcode.

Docker is an open source tool with 53.8K GitHub stars and 15.5K GitHub forks. Here's a link to Docker's open source repository on GitHub.

Lyft, StackShare, and Shopify are some of the popular companies that use Docker, whereas Xcode is used by Instacart, Lyft, and PedidosYa. Docker has a broader approval, being mentioned in 3471 company stacks & 3322 developers stacks; compared to Xcode, which is listed in 1039 company stacks and 585 developer stacks.

- No public GitHub repository available -

What is Docker?

The Docker Platform is the industry-leading container platform for continuous, high-velocity innovation, enabling organizations to seamlessly build and share any application — from legacy to what comes next — and securely run them anywhere

What is Xcode?

The Xcode IDE is at the center of the Apple development experience. Tightly integrated with the Cocoa and Cocoa Touch frameworks, Xcode is an incredibly productive environment for building amazing apps for Mac, iPhone, and iPad.
Get Advice Icon

Need advice about which tool to choose?Ask the StackShare community!

Why do developers choose Docker?
Why do developers choose Xcode?

Sign up to add, upvote and see more prosMake informed product decisions

What companies use Docker?
What companies use Xcode?

Sign up to get full access to all the companiesMake informed product decisions

What tools integrate with Docker?
What tools integrate with Xcode?

Sign up to get full access to all the tool integrationsMake informed product decisions

What are some alternatives to Docker and Xcode?
LXC
LXC is a userspace interface for the Linux kernel containment features. Through a powerful API and simple tools, it lets Linux users easily create and manage system or application containers.
rkt
Rocket is a cli for running App Containers. The goal of rocket is to be composable, secure, and fast.
Kubernetes
Kubernetes is an open source orchestration system for Docker containers. It handles scheduling onto nodes in a compute cluster and actively manages workloads to ensure that their state matches the users declared intentions.
Cloud Foundry
Cloud Foundry is an open platform as a service (PaaS) that provides a choice of clouds, developer frameworks, and application services. Cloud Foundry makes it faster and easier to build, test, deploy, and scale applications.
Vagrant
Vagrant provides the framework and configuration format to create and manage complete portable development environments. These development environments can live on your computer or in the cloud, and are portable between Windows, Mac OS X, and Linux.
See all alternatives
Decisions about Docker and Xcode
Sezgi Uluçam
Sezgi Uluçam
Sr. Software Engineer at StackShare · | 7 upvotes · 91.2K views
Expo
Expo
Xcode
Xcode
React Native
React Native
Android Studio
Android Studio
Android SDK
Android SDK

I've recently switched to using Expo for initializing and developing my React Native apps. Compared to React Native CLI, it's so much easier to get set up and going. Setting up and maintaining Android Studio, Android SDK, and virtual devices used to be such a headache. Thanks to Expo, I can now test my apps directly on my Android phone, just by installing the Expo app. I still use Xcode Simulator for iOS testing, since I don't have an iPhone, but that's easy anyway. The big win for me with Expo is ease of Android testing.

The Expo SDK also provides convenient features like Facebook login, MapView, push notifications, and many others. https://docs.expo.io/versions/v31.0.0/sdk/

See more
Tymoteusz Paul
Tymoteusz Paul
Devops guy at X20X Development LTD · | 15 upvotes · 345K views
Vagrant
Vagrant
VirtualBox
VirtualBox
Ansible
Ansible
Elasticsearch
Elasticsearch
Kibana
Kibana
Logstash
Logstash
TeamCity
TeamCity
Jenkins
Jenkins
Slack
Slack
Apache Maven
Apache Maven
Vault
Vault
Git
Git
Docker
Docker
CircleCI
CircleCI
LXC
LXC
Amazon EC2
Amazon EC2

Often enough I have to explain my way of going about setting up a CI/CD pipeline with multiple deployment platforms. Since I am a bit tired of yapping the same every single time, I've decided to write it up and share with the world this way, and send people to read it instead ;). I will explain it on "live-example" of how the Rome got built, basing that current methodology exists only of readme.md and wishes of good luck (as it usually is ;)).

It always starts with an app, whatever it may be and reading the readmes available while Vagrant and VirtualBox is installing and updating. Following that is the first hurdle to go over - convert all the instruction/scripts into Ansible playbook(s), and only stopping when doing a clear vagrant up or vagrant reload we will have a fully working environment. As our Vagrant environment is now functional, it's time to break it! This is the moment to look for how things can be done better (too rigid/too lose versioning? Sloppy environment setup?) and replace them with the right way to do stuff, one that won't bite us in the backside. This is the point, and the best opportunity, to upcycle the existing way of doing dev environment to produce a proper, production-grade product.

I should probably digress here for a moment and explain why. I firmly believe that the way you deploy production is the same way you should deploy develop, shy of few debugging-friendly setting. This way you avoid the discrepancy between how production work vs how development works, which almost always causes major pains in the back of the neck, and with use of proper tools should mean no more work for the developers. That's why we start with Vagrant as developer boxes should be as easy as vagrant up, but the meat of our product lies in Ansible which will do meat of the work and can be applied to almost anything: AWS, bare metal, docker, LXC, in open net, behind vpn - you name it.

We must also give proper consideration to monitoring and logging hoovering at this point. My generic answer here is to grab Elasticsearch, Kibana, and Logstash. While for different use cases there may be better solutions, this one is well battle-tested, performs reasonably and is very easy to scale both vertically (within some limits) and horizontally. Logstash rules are easy to write and are well supported in maintenance through Ansible, which as I've mentioned earlier, are at the very core of things, and creating triggers/reports and alerts based on Elastic and Kibana is generally a breeze, including some quite complex aggregations.

If we are happy with the state of the Ansible it's time to move on and put all those roles and playbooks to work. Namely, we need something to manage our CI/CD pipelines. For me, the choice is obvious: TeamCity. It's modern, robust and unlike most of the light-weight alternatives, it's transparent. What I mean by that is that it doesn't tell you how to do things, doesn't limit your ways to deploy, or test, or package for that matter. Instead, it provides a developer-friendly and rich playground for your pipelines. You can do most the same with Jenkins, but it has a quite dated look and feel to it, while also missing some key functionality t