13

I'm new to docker. I have read the tutorial in docker remote API . In aspect of creating container. It show me too many param to fill. I want to know what is equivalent to this command :

docker run -d -p 5000:5000 --restart=always --name registry registry:2.

I have no idea about it. Can anyone tell me? Thanks!

3 Answers 3

13

Original answer (July 2015):

That would be (not tested directly), as in this tutorial (provided the remote API is enabled):

First create the container:

curl -v -X POST -H "Content-Type: application/json" -d '{"Image": " registry:2.",}' http://localhost:2376/containers/create?name=registry 

Then start it:

curl -v -X POST -H "Content-Type: application/json" -d '{"PortBindings": { "5000/tcp": [{ "HostPort": "5000" }] },"RestartPolicy": { "Name": "always",},}' http://localhost:2376/containers/registry/start?name=registry 

Update February 2017, for docker 1.13+ see rocksteady's answer, using a similar idea but with the current engine/api/v1.26.

Sign up to request clarification or add additional context in comments.

3 Comments

Thanks for your answer,I have succeed.
I use HttpClient in java to connect api, add param that you show, it return me error about "invalid character 'I' looking for beginning of value", why? I update my question.
@v11 considering you mentioned that you had succeeded before, could you make that a new question? That will allow other to use this one for curl. It didn't mention the java API initially.
6

More or less just copying VonCs answer in order to update to todays version of docker (1.13) and docker remote api version (v1.26).

What is different:

  • All the configuration needs to be done when the container is created, otherwise the following error message is returned when starting the container the way VonC did. {"message":"starting container with non-empty request body was deprecated since v1.10 and removed in v1.12"}

First create the container: (including all the configuration) curl -v -X POST -H "Content-Type: application/json" -d @docker.conf http://localhost:2376/containers/create?name=registry The file docker.conf looks like this:

{ "Image": registry:2.", "ExposedPorts": { "5000/tcp": {} }, "HostConfig": { "PortBindings": { "5000/tcp": [ { "HostPort": "5000" } ] }, "RestartPolicy": { "Name": "always" } "AutoRemove": true } } 

Then start it: (the parameter name is not necessary, the container is just named registry) curl -v -X POST -H "Content-Type: application/json" http://localhost:2376/containers/registry/start

1 Comment

Helpful answer in the first place.
2

Create docker container in Docker Engine v1.24

Execute the post request -

 curl -X POST -H "Content-Type: application/json" http://DOCKER_SERVER_HOST:DOCKER_PORT/v1.24/containers/create?name=containername 

In the request body, you can specify the JSON parameters like

{ "Hostname": "172.x.x.x", "Image": "docker-image-name", "Volumes": "", "Entrypoint": "", "Tty": true } 

It creates your docker container

Start the container

Execute the POST request

curl -X POST http://DOCKER_SERVER_HOST:DOCKER_PORT/v1.24/containers/containername/start 

Reference link - https://docs.docker.com/engine/api/v1.24/

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.