{'fraction_non_alphanumeric': 0.03380045731362206, 'fraction_numerical': 0.017477530506440877, 'mean_word_length': 4.983744242752642, 'pattern_counts': {'":': 0, '<': 6, '<?xml version=': 0, '>': 6, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 14, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Challenges in Docker Development: A Large-scale Study Using Stack Overflow

Docker technology has been increasingly used among software developers in a multitude of projects. This growing interest is due to the fact that Docker technology supports a convenient process for creating and building containers, promoting close cooperation between developer and operations teams, and enabling continuous software delivery. As a fast-growing technology, it is important to identify the Docker-related topics that are most popular as well as existing challenges and difficulties that developers face. This paper presents a large-scale empirical study identifying practitioners' perspectives on Docker technology by mining posts from the Stack Overflow (SoF) community. Method: A dataset of 113,922 Docker-related posts was created based on a set of relevant tags and contents. The dataset was cleaned and prepared. Topic modelling was conducted using Latent Dirichlet Allocation (LDA), allowing the identification of dominant topics in the domain. Our results show that most developers use SoF to ask about a broad spectrum of Docker topics including framework development, application deployment, continuous integration, web-server configuration and many more. We determined that 30 topics that developers discuss can be grouped into 13 main categories. Most of the posts belong to categories of application development, configuration, and networking. On the other hand, we find that the posts on monitoring status, transferring data, and authenticating users are more popular among developers compared to the other topics. Specifically, developers face challenges in web browser issues, networking error and memory management. Besides, there is a lack of experts in this domain. Our research findings will guide future work on the development of new tools and techniques, helping the community to focus efforts and understand existing trade-offs on Docker topics.


INTRODUCTION
Each year, Stack Overflow (SoF) conducts a survey covering everything from the developers favourite technologies to their job preferences. Docker has been ranked first in "Most Wanted Platform", second in "Most Loved Platform" and third in "Platform In Use" in the annual survey 1 with the a participation of almost 90,000 developers around the world in 2019. In fact, Docker was added for the first time in the survey of 2019, looking for developers' preference in container technologies. This survey result is a clear indication of developers' massive interest in Docker technology. In addition, the Software Engineering (SE) community has experienced significant change towards new practices for continuous delivery of high-quality software products. This new paradigm is often described as Development and Operations (DevOps) aiming to shorten the software development life-cycle through close collaboration between developer and operation teams [15]. Among the various practices, the use of containers combined with the microservice-style architecture have shown great promises to the DevOps automation process [22], enabling the repacking of platforms, systems and applications into reusable building blockseasily created by the development teams and shipped to operations for rapid deployment. The Docker technology has led the way on containerization solutions, allowing software developers to integrate and deploy processes to conveniently package their solutions and send them to the operations team [6].
The rapid uptake of Docker technologies by industry has also generated a thriving community of software developers. Among the most renowned communities, Stack Overflow (SoF) became a hub to thousands of developers looking for information, asking questions and solving issues of their daily working routines. An immense amount of knowledge is created within these communities, including question and answers on Docker technology, on configuration, troubleshooting, and various experiences. In the past, various works have turned to this vast repository of knowledge, using data mining techniques to understand the software developers' perspectives on various matters, such as DevOps [43], Machine Learning (ML) [5,11], Big Data [8], and software security [42].
However, the mass adoption of container technologies, such as Docker, creates new challenges for software developers as it requires knowledge on various domains like networking, operating system, cloud computing and software engineering [27]. In order to help Docker developers, it is important to understand the topics that are most popular or that present difficulties in getting appropriate solutions. In turn, this will help to address their challenges. Without such understanding it is harder for practitioners to decide where to focus their efforts. In fact, this not only helps practitioners but also researchers and educators, providing significant contribution to the broader community.
In this paper, we present an empirical study exploring the practitioners' perspectives on Docker technology by mining posts from the SoF community. SoF provides a rich source of data in which views and perspectives are discussed regardless of any specific organizational context. This allows us to investigate trends and provide an overview of the current practices in regards to Docker technology. The number of Docker-related questions and users in SoF has expanded over the last seven years (specifically after 2015) 2 . This demonstrates that not only the number of developers is increasing but also software developers encounter different challenges in Docker related tasks. To the best of our knowledge, there has not been any prior work focusing on Docker by mining question and answer (Q&A) websites, such as the SoF. This study fills this gap in the literature with a large-scale investigation of posted questions, identifying dominant topics and challenges reported by practitioners. This is done through an empirical study using Natural Language Processing (NLP) techniques for topic modelling, as well as an in-depth analysis and discussion of our findings. This study departs from the following set of research questions: RQ1 Docker Topics -What Docker topics do developers ask question about? -The aim of this research question is to showcase the topics and categories covered by Docker-related questions. This research question can provide a deeper insight into Dockerrelated posts. RQ2 Topic Characteristics -What are the characteristics in terms of popularity and difficulty of the identified topics? -After identification of topics and categories, investigation has been performed to identify the most difficult and popular topics and also if they have any correlation. This research question could help to understand trends and challenges of Docker-related topics. RQ3 Docker Expertise -Do we have enough experts to address Docker related questions? -The target is to investigate whether a lack of active experts is one of the factors behind the difficulty in getting answers to Docker-related questions.
Among the main findings, this study identifies 30 Docker-related topics that are being discussed by software developers. These topics were further organised into 13 categories. More than half of the posts (56.9%) fall into four categories of (a) application development, 2 The distribution of posts per year has been provided in reproduction package [1] (b) configuration, (c) networking, and (d) basic concepts. It is more challenging for developers to solve their issues for the topics on web browsers, networking errors and memory management. Also, there is a substantial lack of Docker experts in the SoF community when compared to other areas such as web development. The rest of the paper is organized as follows. The data collection and preparation processes are described in Section 2. Experimental results and discussions are presented and discussed in Section 3 and Section 4. Section 5 discusses threats to validity. Related works are presented in Section 6. Finally, the paper is concluded with future direction in Section 7.

METHODOLOGY
In the first step of analysis, we gathered the SoF dataset which is publicly available in SOTorrent [10]. The dataset includes a large set S of question and answer posts with a set of data for each post. Among others, the data for a post includes its identifier, its type (question or answer), title, body, tags, creation date, view count, score, favorite count and the identifier of the accepted answer for the post if the post is a question. An answer to a question is accepted if the contributor who posted the question marks it as accepted. Besides, a question can have at least one and at most five tags. Google's BigQuery [19] platform has been used to extract 46, 947, 633 questions and answers posted over a time span of over 11 years from August 2008 to December 2019 by 4, 533, 602 developer participants of SoF. Among these posts 18, 597, 996 (39.61%) are questions and 28, 248, 207 (60.16%) are answers of which 9, 731, 117 (20.72%) are marked as accepted answers with an acceptance rate of 34.45%.

Building a Docker-related dataset
As a first step towards answering research questions, the sub-set of SoF questions that discuss the developers Docker-related questions are identified.
2.1.1 Tag-based filtering. In this step of analysis, a set of Dockerrelated tags T was developed to determine and extract Docker questions from SoF. First, we start with a tag set T 0 that includes initial Docker tags. In our study, T 0 consists of tag ′ docker ′ . Second, we extracted questions P from our dataset S whose tags match a tag in T 0 . Third, a set of candidate tags T 1 was constructed by extracting tags of questions in P. Finally, we refined T by keeping tags that are significantly relevant to Docker and excludeding others. We used two heuristics α and β from previous work [4], [8] and [42] to measure the significance and relevance of each tag t in the Docker tag set T . (Relevance) β = Number o f questions with taд t in P Number o f questions in P We observed a tag t to be relevant to Docker if its α and β values are higher than or equal to certain thresholds. Our experiments used an extensive range of thresholds for α = {0.1, 0.2, 0.3} and β = {0.005, 0.01, 0.015}. Here, we manually inspected each tag for each configuration of α and β to justify its relevance to the Docker and discarded other tags which are not useful to identify Docker tags. For instance, consider the tag kubernetes which occurred frequently with the Docker tags, however, it was not added since it is not exclusively used with Docker. The complete list of our candidate tags with different configurations can be found in our reproduction package at [1]. From our experiments, we demonstrated that for α = 0.1 and β = 0.01, it provides a significantly relevant set of Docker tags. With these threshold values, the set T of our Docker tags becomes docker, docker-compose, dockerfile, docker-swarm, dockermachine, docker-registry, boot2docker.
We extract all posts with at least one of such tags to develop the Docker Post t aд . Yang et al. [42] and Mehdi and Raffi [4] used similar strategy to generate their set of security and concurrency tags. In addition, our threshold values are also consistent with thresholds presented in prior works [42] and [4].
2.1.2 Content-based filtering. There might be cases in which a Docker post does not have any of these seven tags. One such example is the post with question id 26787241 on SoF 3 , discussing Docker container linking issues which does not have any tags related to Docker. Since there is a lack of standard procedures to assign tags to SoF posts [12] and there are still Docker posts with no Docker tags, we motivated to examine the content of posts besides tags as well. For content-based filtering, we followed the approach of Le et al. [23]. Firstly, we developed a list of keywords 4 related to Docker inspired by the approach followed by Pletea et al. [29]. Then, we performed subword matching for the keywords whose length is greater than three-character to reduce false-positive as described in [29]. Afterward, we determined the ratio of Docker words (kw r at io ) and count of Docker keywords that appear in total (kw count ). We used these two parameters (kw r at io ) and (kw count ) to increase the coverage of Docker discussion so that it can reduce outlier in the discussion. For example, post with id 56408913 on SoF has the word 'docker', however, the discussion focuses mainly the installation of yourls. We have obtained thresholds of x = 0.051 and y = 4 for kw r at io and kw count , respectively, from unclosed Docker posts Post t aд . Since a closed post may pose a possibility of being duplicated and irrelevant to discussion 5 , unclosed posts have been considered for ensuring Docker relevancy. Content-based filtering approach selects SoF posts whose kw r at io ≥ x and kw count ≥ y to develop Post cont ent of Docker posts which discuss about 'docker ' but does not have Docker in tag-set. To reduce the noise, only accepted answers are taken into consideration by following earlier approaches [4], [8] and [33]. Finally, the data set D contains 113,922 SoF questions and answers of which 81,290 (71.4%) are questions and 32,632 (28.6%) are accepted answers.

Data Preparation
After building Docker-related dataset, we filtered out the irrelevant information before applying the topic modeling techniques as raw posts contain too much noise for learning a model [12]. In this preparation step, title, question and answers of a post are considered.

2.2.1
Preprocessing of Docker Posts. In this step, we removed code snippets marked with <code></code>, HTML tags, such as paragraph <p></p>, urls <a></a>, stop words such as 'a', 'how', 'can' by using NLTK stopwords corpus [26] for preprocessing the set of Docker posts D to minimize the noise by following previous approach [42], [12] and [8]. Afterwards, bigram models were developed by using Gensim [18] since bigram models enhance the quality of text processing as reported by Tan et al. [37]. In addition, we leveraged Porter stemmer [30] to reduce words to their stemmed root representations, for instance, âĂĲprogrammingâĂİ, and âĂĲpro-grammerâĂİ both get stemmed to word âĂĲprogramâĂİ).

2.2.2
Identifying Docker Topics and Categories. Latent Dirichlet Allocation (LDA) modeling technique [13] was adopted for this paper. LDA has been widely used in Software Engineering studies [12], [4]. LDA groups posts of our dataset into a set of topics based on word co-occurrences and frequencies. LDA assigns to each post a series of probabilities that indicate the chances of a post being related to a topic. The topic with the maximum probability for a particular post (i.e., the post that contains more keywords of a particular topic) is considered to be the dominant topic for a post.
In our study, we use the MALLET 6 implementation of LDA, which was adopted in previous approaches [4], [8].
The main concern of implementing LDA is to determine the optimal number of topic K, if K is too large, LDA might produce excessively fine-grained topics which are hard to analyze. On the other hand, LDA might yield overlapping topics when K is too small. In this respect, we performed a broad range of experiments by varying K from 5 to 50, in steps of 5, iteration value of 100, 500 and 1000 and note down the coherence score at each run. The coherence score measures the understandability of the LDA topics using various measures and has been shown to be highly correlated human comprehensibility [32]. Hence, the first two authors run the LDA with different K values and then stored each run's corresponding coherence score. We considered that K values within the 30 to 40 range have very similar coherence scores (i.e. the variation is very small, and coherence score is 0.6 which is regarded as a good coherence score [34]). The first two authors tested randomly selected sample of 30 posts from each topic for K values of 30 to 40 to assure that we chose the best K value. Based on this experiment, we found that a K value of 30 with 1000 iteration value provides sufficiently granular set of topics for our Docker-related dataset D. Besides, we set the hyper-parameter of LDA α = 50/K and β = 0.01 which are inline with the values used by earlier works [8], [4], [42]. In general, MALLET only generates a list of 10-word sets as topics but it cannot infer the actual meaningful topic names. To label topics, we used open card sort method [16] by following previous work [42], [8]. There is no predefined set of topic names in open card sort method. In this process, we inspected top 10 words from each topic by following guideline of Agrawal et al. [3] and read through most relevant 15 posts (based upon higher probability value for a post to belong a particular topic) for that topic to identify a topic name that best explains words and posts of that topic. Moreover, we also examined 15 randomly selected posts from each topic to check whether chosen topic name suits the posts. Similarly, we used open card sort method to cluster the similar topics into a higher level category. Table 1 and Figure 1 demonstrate 30 topic names, their topic words and categorization.

RESULTS AND DISCUSSIONS
In this section, we present the analysis of Docker posts and topics to answer our research questions.

RQ1. Docker Topics -What Docker topics do developers ask question about?
Motivation Docker development requires knowledge from a broad range of software engineering fields [27]. For instance, Docker developers need some knowledge in cloud computing, software engineering, operating system and distributed networking, which are often unnecessary in other conventional software development tasks. Therefore, difficulties faced by Docker developers are likely to vary from the traditional software development challenges. Since developers use Questions and Answers (Q&A) websites to interact with both problems and solutions, the purpose of this RQ is to look into the SoF's posts to identify the most prevalent Docker topics and the issues that the Docker community encounters more frequently. In addition, defining the commonly discussed Docker topics is the preliminary step to highlight the topics that are gaining more popularity and/or are difficult to address. Moreover, Docker has drawn huge attention from developers, expressing their keen interest to build application using Docker platform 7 . Hence, we devise this research question to know more about their discussion topics. Approach Docker topics asked by developers on SoF are determined using LDA topic inference and topic labelling as described in Section 2.2.2. Results Table 1 shows the topics, topic words and categories relating to Docker. Moreover, Figure 1 demonstrates the percentage of number of topics as well as the categorization of these topics. From Figure 1, it is clear that developers ask most questions about Basic Concepts. Specifically, developers ask more about Framework Management, Data Transfer, Docker Network, Commanding and Scripting, Basic Concepts, Environment Modification, File Management, Docker Desktop, Repository and Continuous Integration where all of these topics have a higher percentage value than the average value for topics (3.3%). All of these 30 topics are clustered together into 13 main categories. In following, we will explain each of the categories along with their constituent topics, sample posts from SoF for better explanation of categories and their relevancy with previous works. 7 Survey Results: https://insights.stackoverflow.com/survey/2019#work ) among all the topics which indicates developers' concern regarding the development of applications using Docker technology. This concern is further strengthened by [36] that discussing about developers' perspective on using Dockers for various applications. One of the reasons behind developers' high interest in Application Development could be Docker's dominant representation in market share, which is almost 83% as reported by [25]. In this category, posts are related to development of Docker applications using frameworks, how these frameworks are managed and strategies for implementing specific frameworks. For example, developers ask about how to use Docker to develop a web application (id: 48788271, title: how to add docker support for the web application developed by using .netcore and angular5? ), troubleshooting on building image (id: 48762638, title: "Error while building docker container with .net core" ) and execution of application using Docker (id: 37263261, title: docker web application image needs keep running).  3.1.2 Networking. Networking category is the second largest category (approximately 13%) in our Docker-related posts. Developers' attention towards Networking category is quite understandable since networking plays an important role in life-cycle of Docker containers which allows to bridge among Docker networks [44]. Developers ask questions like interaction between containers (id: 53357236, title: "how can I communicate between containers?"), (id: 57750256, title: "how to connect two socket.io point in different containers" ), attach containers with Docker (id: 41768157, title: "how to link container in docker?") and setup network (id: 58076849, title: "how to use networking when building docker-compose?"). Finding 5: Developers ask more questions about Docker Network and Container Linking in Networking category.

Configuration.
Configuration is about configuring constituent parts of Docker applications which include Web Server Configuration, Logging, Web Framework Configuration, Commanding and Scripting topic. Commanding and Scripting topics form the largest share (nearly 43%) in this category, followed by Web Server Configuration (25%), Logging (18%) and Web Framework  "how can i create a database on mysql docker service", id: 58936513, title: "How can I use an environmental variable to create a dump with PostgreSQL? I found a solution but I don't know why it doesn't work the other way") accessibility (id: 54218824, title: "how to access mysql docker container in spring boot docker container"), and connection (id: 55824545 ,"how to connect remote docker container mysql server").
Although the performance of PostGreSQL is better than MySQL in the Docker environment [40], our study reveals that developers ask slightly more questions on MySQL. One possible explanation could be the general understanding of applying MySQL in simple web-based project where main focus is primarily on data transaction [39]. "Access files inside docker container over php"), memory management (id: 44533319, title: "How to assign more memory to docker container"), monitoring status (id: 28759673, title: "Get status of an ongoing docker image pull").

Docker Desktop.
Docker Desktop helps developers to code and containerize their applications. It also enables easy coordination among core components of Docker such as the Docker Engine for various platforms, e.g., Windows and Mac operating systems. Docker Desktop has been released in September, 2018 8 . Developers ask about various questions on different platforms such as Windows (id: 48376928, title: "On Windows Setup, how can I get docker image from local machine"), Mac operating system issues (id: 40007657, title: "OS X -how to give permissions to jenkins user to run docker command"), and Ubuntu (id: 33990483, title: "Docker, how to add a folder in OS Ubuntu in Container").

3.1.9
Repository. Repository refers to the storage of Docker images where developers can upload or download images for using in their development areas. Docker Hub 9 is the largest storage for image repositories. It contains more than 100,000 container images provided by various software vendors, open source community and projects. Repositories contain the entire ecosystem to run a target software including its configuration details, operating system related utilities, packages and libraries [41]. Developers ask questions about uploading image to a repository (id: 31453639, title: "Docker api: push an image to docker hub private repository"), and providing a tag to an image (id: 37134929, title: "how to tag image in docker registry").

3.1.10
Integration. Integration means aggregation of several subcomponents of a software system into one system. Integration using Docker has become crucial in continuous software engineering process. Mansooreh et al. presented that developers are incorporating Docker in their continuous integration process [43]. Some examples of posts in this category include, integration using specific tool (id: 34306354, title: "Integrating Docker with jenkins for continuous integration"), and simulating integration tests (id: 57472797, title: "Testcontainers -Run container with different database in integration test")

3.1.11
Orchestration. Orchestration simplifies the management of container clusters and their life-cycle. Docker supports various orchestration tools such as Mesos [20], Docker Swarm 10 , and Kubernetes 11 . Kubernetes is used extensively in comparison with other tools as indicated by [28] due to its compatibility with any operating system, auto-scaling feature for large deployments and better resource management facilities. Developers in this category have queries about using Kubernetes in Docker (id: 39995335, title: "access docker container in kubernetes"), and initialization of Kubernetes in Docker (id: 32955684, title: "How to pass a parameter to docker with kubernetes"). Finding 9: Developers ask more question about Kubernetes than Docker Swarm in Orchestration tool.

3.1.12
Deployment. Docker has been designed for easy creation, deployment, and execution of desired applications with the help of containers [17]. As containers can be configured with all the required packages (and dependencies) needed to run an application, deployment can be performed as a package. Some examples of posts in this category are the deployment in cloud platforms (id: 39083768, title: "AWS Docker deployment"), and deployment using native commands (id: 48421169, title: "how to deploy specific docker container just by docker run?") 3.1.13 User Authentication. User authentication refers to a set of posts that discuss about allowing a user or entity to verify its identity or credentials in order to access Docker resources and functionalities. Generally, it requires authorization to create or edit container resources, network configuration, deploy or develop image and integrate application instances. Developers ask questions in regards to approval issues while using a web-server (id: 47593357, title: "Facing authentication and Permissions issue when building nginx container"), and the process of identification of users in Docker (id: 56511320, title: "Docker new user on host, how to let docker know?").

RQ2. Topic Characteristics âĂŞ-What are the characteristics in terms of popularity and difficulty of the identified topics?
Motivation This RQ focuses on the popularity and difficulty of question for each topic in a more fine-grained manner. Identifying popular and difficult topics allows us to organise the existing knowledge base and draw concrete insights. That is, we are able to identify topics that are trending in the Docker community as well as the adoption of specific technologies. Also, difficult topics suggest that more attention might be needed to improve frameworks and tools of which developers are facing most challenges during their use or configuration. We also examine if there is any significant statistical correlation between popular and difficult topics in order to characterise Docker-related posts.
Approach We use the average number of views, favorite count and score of a question to measure the popularity of topics. Similarly, the percentage of questions of a topic that has no accepted answers and average median time needed for questions of a topic to receive accepted answers have been used to determine the difficulty of a topic. These 5 metrics are all well-known in the literature and were also used in [42], [8], [4], [33]. The average number of views (View) of the question indicates the interest of the community. If a question received a large number of views (from both registered and unregistered users as Q&A sites like SoF have more unregistered users who visit the site frequently [24]), then the question can be inferred as a popular question among developers. Besides, the average number of favorites (Favorite) of a question measures the issues and solutions that developers found helpful and that are likely to be recurring questions during Docker development process. The average score (Score) of a question can be interpreted as usefulness to its users, where a user can up-vote a post and these votes are summed up to define the score. Moreover, the author of a question can mark an answer as an accepted answer if the answer has the merit to satisfy and solve the original question. In that respect, we measure percentage of questions that have no accepted answers for each topic. The topics which received fewer accepted answers can be interpreted as difficult topics for the developers. We also calculate the median time (in minutes) to receive an accepted answer for a question. The longer the time to receive an accepted answer can be explained as a more difficult question [4,5,8,11]. In addition, we use Kendall correlation [2] to identify and verify correlation between popular and difficult topics. We choose Kendall correlation since it is less sensitivity to outliers, thus producing more robust results [31].
Results Table 2 and 3 show popular and difficult Docker topics. Table 2 has been sorted based on the average view (View), and the topics in Table 3 are ordered based on percentage of accepted answers that they received. Monitor Status, Data Transfer and User Authentication are popular topics. For the Monitor Status topic, which has most average view and score, users tend to ask how to access Dockerfile of an image, how to save all Docker images and copy to another machine, and how to get status of a running Docker pull process. Monitor Status and Data Transfer topics also have a fast response time in terms of accepted answer, i.e., 79 and 105 minutes, respectively. The average median time to get an accepted answer is 306.8 minutes which can be interpreted as its usefulness and efficacy to the developers. On the other hand, Web Browser, Networking Error and Memory Management are the most difficult topics based on their percentage of non-accepted answers. In particular, Networking Error topic has the longest time to receive an accepted answer. In addition, it has the lowest score from users, which can be inferred as a challenging topic. In the Web Browser topic, developers generally ask about how to use a web driver when using docker (id: 36773167, title: âĂĲHow do you set up selenium grid using docker on windows?âĂİ ) or why a web driver does not work in a particular platform (id: 49289050, title: âĂĲRSelenium using Docker and Firefox, Browser Not Opening on MacâĂİ ).  As mentioned, Monitor Status and Data Transfer are among the most popular topics, even though their difficulty level is at bottom. Nonetheless, Web Browser and Networking Error issues rank top in difficulty but lower in popularity metrics. This evidence could suggest that there might be a correlation between popularity and difficulty metrics. To perform the correlation analysis, we measure six correlations between each of our three popularity and difficulty metrics. For each correlation, we identify the p-value and co-efficient by using Kendall correlation which is shown in Table 4. In Table 4, the result is presented in x/y format, where x denotes co-efficient and y denotes p-value. We found a statistically significant correlation with 95% confidence level between the popularity and difficulty metrics, since all correlations have p-value are less than 0.05. In other words, difficult topics are less popular among developers, and vice-versa.
Finding 12: There is a statistically significant negative correlation between popular and difficult Docker topics. Motivation The average percentage of no accepted answers for Docker-related posts is rather large, i.e., almost 60% as shown in Table 3. Asaduzzaman et al. reported that the absence of adequate experts in SoF may trigger such events [7]. Therefore, we investigate whether the lack of experts is one of the factors behind the difficulty in getting answers to Docker questions. By experts, we mean the users who provide significant contributions, effective and helpful answers to the SoF community [38]. Approach To answer this research question, we followed the approach by Yijun et al. [38]. In this approach, the user answers and profile performance are derived from SoF dataset and then combine together to form an ExpertiseValue for each SoF user. We choose this method as it considers various user attributes (for example, user reputation, quality of the answered question, profile view count of a user) and platform related information (like taдs). We compare Docker domain with a Baseline Sample extracted from SoF. This sample has been generated by randomly selected over 100, 000 posts (sample size near to our Docker-related dataset). This sample size covers a broad range of taдs like programming (java, C#), services (excel, gmail), databases (oracle, sql), mobile development (android, ios). In addition, Web Development is considered due to its popularity in SoF as reported in [12]. Besides, we considered the Machine Learning domain as well. To answer RQ3, we select taдs derived  from our tag-based filtering and same number of users from sample size along with our Docker domain (more than 12,000 users 12 ).
Results The comparison of experts in Docker and other domains is presented in Figure 2. Due to skewed distribution of ExpertiseValue, a logarithmic transformation on the ExpertiseValue have been applied for better visualization of the distributions. We can observe that docker experts are represented mostly at the left side of the graph which represents the presence of novice users with lower ExpertiseValue i.e, users with less score in ExpertiseValue. Besides, the right side of the graph illustrates the expert users with higher ExpertiseValue. The users from the Baseline Sample, Machine Learning and Web Development are mostly represented here. In addition, a higher peak is observed for all other domain than Docker users. The higher peak indicates that the number of Docker experts is indeed smaller than in the Baseline Sample. Therefore, it is evident that the Docker domain indeed has a much lower number of experts than the Baseline Sample.

IMPLICATIONS
The findings of our study can benefit software developers, researchers and educators, both in terms of providing an overview of the Docker-related discussion as well as informing and supporting decision-making processes. The identified topics and categories are presented in Table 1. These topics and categories usually involve a combination of domains like distributed networking, operating system and software engineering, as observed by previous researchers in [27]. Thus, it can be implied that Docker development also requires substantial knowledge on various domains as stated above.
In addition, we identify the trends of Docker topics to better understand ongoing practices. Table 5 shows the increasing, decreasing and static trends of Docker topics. This is done using Mann-Kendall test [21]. We chose Man-Kendall test as it is not affected by the length of time-series [21]. Note that, to determine if each topic is increasing or decreasing over time, to a statistically significant degree, we use the standard 95% confidence level. Moreover, we used relative measure where the total number of posts for a specific topic is compared to the total number of posts for the entire Docker dataset for each month. 17 topics (nearly 57%) have showed increasing trends. Interestingly, difficult topics such as Web Browser, Networking Error and Logging show increasing trends which represents the developers' growing interest in such topics, and researchers can focus their efforts in these topics. We also found that 4 topics have static (neither decreasing or increasing to a significant degree) trends and 9 topics (30% of topics) have decreasing trends. Topics with decreasing trends are not outdated rather they represent a matured state.
In addition, Figure 3 shows the trade-off that Docker topics have in regards to their popularity and difficulty. Based on Figure 3, developers can choose to focus on topics that match their current skill levels. For instance, novice developers may benefit from learning about topics that have already been heavily discussed in the SoF community and issues that have already been solved, such as Monitor Status and Data Transfer which also show decreasing trends. On the other hand, experienced developers might want to become more knowledgeable by tackling topics that have an increasing difficulty level, while still popular, such as Docker Network. Managers can also use such results for assigning tasks that match their teams' skill level, e.g., avoiding giving a junior developer a very difficult and perhaps unsolved task such as Web Browser (this topic discuss about testing applications in different web browsers). Docker developers might benefit from understanding the long-standing issues in the SoF community, so as to improve frameworks and tools that facilitate the developers' job when using and configuring Docker-related technology. Likewise, academic researchers may want to delve into such problematic topics in order to have a deeper understanding of topics that are challenging to developers. Educators that teach subjects related to Docker can also leverage from such trade-off analysis and evidence of deficiency of experts as shown in Figure 2. For instance, by selecting appropriate topics that should be part of a course program, as well as considering an appropriate time-frame for exercises and assignments according to the difficulty/popularity/trend of the chosen topic.

THREATS TO VALIDITY
We acknowledge that this study has limitations. The threats to its validity are herein discussed. First, this study relies on questions and answers from the SoF posts as a proxy to software developers' interests, difficulties and discussions with respect to Docker. Although SoF is provides a rich repository of knowledge for empirical investigations in software engineering, additional studies still need to be conducted in order to corroborate or generalise findings. Second, identifying the Docker-related posts in the entire SoF corpus of posts can be also a limiting factor. That is because only using tags is not enough to completely identify the set of Dockerrelated posts (i.e., some posts are not tagged or miss the 'docker' tag).
To minimise this threat we not only used techniques for reliable tag-based filtering but also performed content-based filtering. Such techniques have already been used in previous work [4,23,33,42] enabling us to develop our Docker tags and solid experiments with a broad range of tag relevance and significance thresholds α and β. Also, for parsing and topic modelling we used various techniques for data pre-processing and cleaning (e.g., remove stopwords, stemming and lemmatisation), as well as used established methods to derive topics using MALLET 13 for LDA.
Third, although topic modelling has been proven useful for analysing large volumes of textual data, the process of manual labeling (i.e., naming the topic 10-word sets) is subject to biases of human judgement. To minimize this threat, we followed two strategies: (a) two researchers performed the labelling and disagreements were discussed and resolved; (b) we also manually reviewed 15 posts highly related to each topic for helping during the labelling definition.
Fourth, determining the optimal value of K during the topic modelling process is also a potential threat. This threat was minimised by following a common approach [34] of experimentation of a broad range of values for K and observation of the perplexity and coherence metrics. Lastly, measuring popularity and difficulty of topics can also be a threat, so we also adopted known heuristics already used in previous works for calculating these metrics [4,8].

RELATED WORK
As aforementioned, many papers have investigated the software developers' perspectives by mining software repositories (eg, Github) and Q&A websites (eg, Sof). Some studies which leverage SoF data on different domains such as Machine Learning [5,11], Mobile [33], Security [23,42], Big data [8], Web development [9] and Concurrency [4]. Melo et al. used Docker to reproduce codes derived from SoF posts. Xu et al. discussed the opportunity of mining configuration related data from image repositories like Docker Hub.
However, existing literature does not address the Docker technology specifically. Existing research that addresses somewhat related topics are the works on DevOps [43] and on Dockerfiles [14].
The work of [43] focuses on the broad area of continuous software engineering, mining the SoF dataset and performing topic modelling and a qualitative analysis of existing posts. In this work, authors identified 32 topics of discussions, among which "Error messages in Continuous Integration/Deployment" and "Continuous Integration concepts" are the most dominant. However, this work was intentionally designed to be technology agnostic, and authors have explicitly removed tags such as 'Jenkins' and 'Docker' during the dataset creation. Therefore, our work is more specific, targeting one of the most widely used technologies in the DevOps community, i.e., Docker containers.
The work of [14] is focused on the quality and evolution of Dockerfiles, i.e., the specific files that define an environment that aim to enable reproducible builds of the containers. These Dockerfiles were retrieved from project repositories on GitHub. Results show that main quality issues in Dockerfiles arise from missing/improper version pinning in 28,6% of the cases, and irreproducible builds in 34% of Dockerfiles from a representative sample of the projects. Although these findings are important to software engineers, the scope of the work is rather limited to the building process. Our work is different from the above studies as we perform an empirical study on Docker-related posts on SoF.

CONCLUSION AND FUTURE WORK
This paper provides a large-scale empirical study over 113,922 posts from the SoF community to understand interests and challenges faced by software developers with respect to Docker technology. Using a topic modelling approach, a total of 30 topics were derived from the dataset of Docker-related posts and these topics were grouped in 13 main categories. These identified categories and topics are inline with use cases of Docker such as development, deployment, configuration and integration. The most popular topics include Monitor Status, Data Transfer and User Authentication, while the topics on Web Browser, Networking Error and Memory Management are more challenging to the community. This study also reveals that topics' difficulty and popularity are in fact negatively correlated, i.e., hard topics are less popular and vice-versa. Moreover, we found that the Docker community has a significantly smaller number of expert developers when compared to broader communities.

ACKNOWLEDGMENTS
The work has been supported by the Cyber Security Research Centre Limited whose activities are partially funded by the Australian GovernmentâĂŹs Cooperative Research Centres Programme. This work has also been supported with super-computing resources provided by the Phoenix HPC service at the University of Adelaide. We would like to thank Triet H. M. Le, Roland Croft and anonymous reviewers for their valuable comments.