Conflict between two Docker containers of different Elasticseach images - docker

I am using two different Docker images of Elasticsearch on two different projects:
Project 1: docker.elastic.co/elasticsearch/elasticsearch:6.8.6
Project 2: docker.elastic.co/elasticsearch/elasticsearch:5.6.8
It works, but I have noted a weird behaviour, when I start the one with the 6.8.6 version the other crashes:
f35d8b319ec0 docker.elastic.co/elasticsearch/elasticsearch:5.6.8 "/bin/bash bin/es-do…" 3 hours ago Exited (137) Less than a second ago
If doing a docker-compose up, Docker tries to restart it but without success (same message).
Now If I do a composer down on the other project, then the container with the 5.6.8 version can work again:
f35d8b319ec0 docker.elastic.co/elasticsearch/elasticsearch:5.6.8 "/bin/bash bin/es-do…" 3 hours ago Up 12 seconds (healthy) 9300/tcp, 0.0.0.0:9203->9200/tcp
Of course, these two containers forward the Elasticsearch to two different ports 9203 and 9209.
I found something suspicious while writing this question; both containers use the same transport port:
9300/tcp, 0.0.0.0:9209->9200/tcp
9300/tcp, 0.0.0.0:9203->9200/tcp
Could the problem come from this setting? And how to fix this?

I had this same question, and #Sai Kumar's accepted answer was not working for me initially. I finally stumbled across ElasticSearch on docker - 2nd instance kills the first instance which prompted me to override memory defaults, preventing the respective elasticsearch instances from each gobbling up 2GB of RAM by default.
Full sequence that worked for me:
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.2
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.4.1
docker run -d --restart=always --name elasticsearch1 -p 9201:9200 -p 9301:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms200m -Xmx200m" docker.elastic.co/elasticsearch/elasticsearch:6.3.2
docker run -d --restart=always --name elasticsearch2 -p 9202:9200 -p 9302:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms200m -Xmx200m" docker.elastic.co/elasticsearch/elasticsearch:6.4.1
I'm now able to verify both containers running at http://localhost:9201/ and http://localhost:9202/ respectively.
EDIT: I was able to achieve the same result by simply going into Docker desktop's Settings > Resources area and upping the Memory (in my case from 2G to 4G).
So evidently the same symptom originally posted by #Coil above (that of endless crash-restart ping-pong between two elasticsearch container instances) can also be the result of memory settings, rather than port mappings or other settings in your docker run command.

Change the binding the tcp ports to dockers
docker run -d --name elasticsearch1 --net somenetwork -p 9201:9200 -p 9301:9300 -e "discovery.type=single-node" elasticsearch:tag
docker run -d --name elasticsearch2 --net somenetwork -p 9202:9200 -p 9302:9300 -e "discovery.type=single-node" elasticsearch:tag

Related

How to configure feature flags in Rabbitmq when using docker image?

I am trying to create a docker container with a rabbitMQ image, and then join that instance to an existing cluster.
However I get the error incompatible_feature_flags
It looks like the created image automatically enables some feature flags that are not enabled and cannot be enabled in the existing cluster.
I am running the container using the following code:
docker run -d --hostname xxx.yyy.com.co --name rabbit -p 15672:15672 -p 5672:5672 -p 4369:4369 --add-host='rabbit1:xxx.xxx.xx.xxx' --network=host -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -e RABBITMQ_ERLANG_COOKIE='xxxxxxxx' -e ERL_EPMD_PORT=4369 rabbitmq:latest
I think that I can enable/disable feature flags as parameters when starting the container, but I have not been able to find anything in the documentation.
I would appreciate any help
It may be caused by the different version between the tow RabbitMQ applications.
eg: one is 3.7.x, but the another is 3.8.x .

Docker container running SQL Server seems to crash every time

I created a Docker container:
sudo docker pull microsoft/mssql-server-linux:2017-latest
Then I ran it:
sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=root' -p 1401:1433
--name sqlserver1 -d microsoft/mssql-server-linux:2017-latest
I ran:
docker start sqlserver1
After about 3 seconds docker ps returns empty - making me think the container is shutting down.
I'm new to Docker - is this really shutting down automatically? If so, how do I prevent that?
I gave this a shot, and it looks as if your problem is not a Docker problem...it's simply a MSSQL problem. If you look at the logs for your container, you'll see:
ERROR: Unable to set system administrator password: Password validation failed.
The password does not meet SQL Server password policy requirements because it is
too short. The password must be at least 8 characters.
It looks as if MSSQL enforces password complexity requirements, which include length and number of character classes. The following seems to work fine:
docker run -it -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=r00t.R00T' -p 1401:1433 --name sqlserver1 microsoft/mssql-server-linux:2017-latest

Setting max_map_count for a particular docker container debian

I am trying to run a ElasticSearch docker container on a remote terminal. While trying to run ES, I get that standard max_map_count is too low error and the container stops.
I don't want to change the configuration of the entire terminal because there are many things running on it and they may get affected.
So, is there a way I can specifically change the vm configuration of a docker container while trying to exec it.
Since you're in dev mode, simply starting the image with -e "discovery.type=single-node" should do the trick:
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.2.4

Docker zookeeper image unable to connect to sheepkiller/kafka-manager image

I am using two images sheepkiller/kafka-manager/ (Tool from Yahoo Inc) but the image was made by someone with a weird sense of humor but it has good reviews.
And zookeeper
I start ZooKeeper
docker run --it --restart always -d zookeeper
then try to start apache manager
docker run -it --rm -p 9000:9000 -e ZK_HOSTS="your-zk.domain:2181" -e APPLICATION_SECRET=letmein sheepkiller/kafka-manager
Document says:
(if you don't define ZK_HOSTS, default value has been set to "localhost:2181")
Error:
Initiating client connection, connectString=localhost:2181 sessionTimeout=60000 watcher=org.apache.curator.ConnectionState#7bf272d3
[info] o.a.z.ClientCnxn - Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
[info] k.m.a.KafkaManagerActor - zk=localhost:2181
[info] k.m.a.KafkaManagerActor - baseZkPath=/kafka-manager
[warn] o.a.z.ClientCnxn - Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect
I am using Docker version 17.12.0-ce, build c97c6d6 on windows 10. I have tried several different things but was unsuccessful. I am assuming there is an issue with the ports, I zookeeper config file and /sheepkiller/kafka-manager/dockerfile/ but I am not sure how to change these images after I already pulled them if that really is the case.
The following should work fine:
docker network create zookeeper-net
docker run -it --restart always -p 2181:2181 --network zookeeper-net --name zookeeper -d zookeeper
docker run -it --rm -p 9000:9000 -e ZK_HOSTS="zookeeper:2181" -e APPLICATION_SECRET=letmein sheepkiller/kafka-manager
Update:
There is also a compose file to setup everything. I suggest you use that.
docker-compose up -d

Docker for Mac. docker run -d -p 80:80 --name webserver nginx shows another container with this name. but docker ps shows empty list

I am learning "Docker for Mac"
$ docker run -d -p 80:80 --name webserver nginx
docker: Error response from daemon: Conflict. The name "/webserver" is already in use by container 728da4a0a2852869c2fbfec3e3df3e575e8b4cd06cc751498d751fbaa75e8f1b. You have to remove (or rename) that container to be able to reuse that name..
But when I run
$ docker ps
It shows no containers listed.
But due to the previous error message tells me that there is this container 728da....
I removed that container
$ dockder rm 728da4a0a2852869c2fbfec3e3df3e575e8b4cd06cc751498d751fbaa75e8f1b
Now I run this statement again
$ docker run -d -p 80:80 --name webserver nginx
It is working fine this time.
And then I run $ docker ps, I can see this new container is listed
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3ecc0412fd31 nginx "nginx -g 'daemon off" 19 seconds ago Up 17 seconds 0.0.0.0:80->80/tcp, 443/tcp webserver
Note:
I am using "Docker for Mac".
But I had "Docker Box" installed on the Mac before. I don't know if that is the invisible "webserver" container comes from.
As activatedgeek says in the comments, the container must have been stopped. docker ps -a shows stopped containers. Stopped containers still hold the name, along with the contents of their RW layer that shows any changes made to the RO image being used. You can reference containers by name or container id which can make typing and scripting easier. docker start webserver would have restarted the old container. docker rm webserver would remove a stopped container with that name.
You can also abbreviate the container id's to the shortest unique name to save typing or a long copy/paste. So in your example, docker rm 728d would also have removed the container.
The Docker Getting Started document asks the learners trying two statements first.
docker run hello-world
and
docker run -d -p 80:80 --name webserver nginx
I was wondering why I can run
docker run hello-world
many times but if I run
docker run -d -p 80:80 --name webserver nginx
the second time, I got the name conflicts error. Many beginners would be wondering too.
With your help and I did more search, now I understand
docker run hello-world,
we did not use --name, in this case, a random name was given so there will be no name conflicts error.
Thanks!

Resources