Age | Commit message (Collapse) | Author |
|
|
|
- `description` is deprecated, and now with the 1.42 stable release
these are generating warnings
- `cause` is deprecated and replaced by `source`
|
|
Ran `cargo +nightly fmt --all` as indicated in the PR template. Since
this affects code not otherwise being modified, I did this as a separate
PR.
|
|
`ContainerListOptionsBuilder::all()` took no arguments, assuming a true
value. However, `ImageListOptionsBuilder::all()` accepts a boolean.
To make these consistent, the latter no longer accepts a boolean and,
like the former, assumes true.
|
|
This patch removes the explicit dependency on the http crate and
instead accesses the re-exported version of hyper. This should make
the update process slightly easier because those versions would
need to be kept in sync manually.
We also re-export hyper::Uri as shiplift::Uri because it is part
of the public API of shiplift::Docker. This allows users to access
the Uri type without having to seperately depend on http or hyper.
|
|
The following change is to provide the configuration option
`PublishAllPorts` which will map all exposed ports on a container to
random and available ports on the host machine.
This configuration option is documented
[here](https://docs.docker.com/engine/api/v1.39/#operation/ContainerCreate).
|
|
* expand the fields of Version
Expands `shiplift::rep::Version` to contain fields for the following
elements of the `/version` API:
- `min_api_version` (`MinAPIVersion`)
- `os` (`Os`)
- `arch` (`Arch`)
- `kernel_version` (`KernelVersion`)
- `build_time` (`BuildTime`)
Adds a new example program to display version information.
* order version fields according to api docs
* remove min_api_version
For backwards compat with older engines, remove the `min_api_version`
field. It was apparently added in API version `1.25.0` (circa 2017).
|
|
Add missing fields to `rep::Container`:
- `image_id` (`ImageID`, API version 1.21)
- `state` (`State`, API version 1.23)
|
|
* port build to gh actions
* attempt 2: trip hook registration
* hooked to pushes
* gh actions badge
* build cache
* gate at job level
* fix badge merge
* populate cache after checkout
* work now cache later
|
|
* Don't vendor OpenSSL except on Windows
* Use a feature rather than guessing based on OS
|
|
* Replace host str to use https if encrypted
* Add comment and fmt
|
|
* Renamed 'expose' to 'port' and add 'expose' to expose a port without linking it to the host
* update Version to 0.5.1
|
|
The `endpoint_id` field is stylized as `EndpointID` in the Docker API
when returning container-details for a network ([1]).
[1]: https://docs.docker.com/engine/api/v1.24/#35-networks
|
|
|
|
|
|
* Added function to tag an image
* Removed debug and println
|
|
|
|
|
|
|
|
|
|
|
|
* Add LogsOptionsBuilder.since() method
* test for LogsOptionsBuilder
|
|
|
|
* Added `ExposedPorts` mapping, as per https://docs.docker.com/engine/api/v1.26/#operation/ContainerCreate
* Correct the ExposedPorts json based on the latest Docker schema
* Derived debug for all builder option types (useful for debugging)
* Adjust container_options_expose test to match latest code
* Applied cargo fmt
|
|
|
|
|
|
|
|
- add function copy_file_into to container
- add example
|
|
This is in line with best practices recommended
by serde[1]. This will also resolve downstream
crates depending on shiplift who enable the
serde derive feature, due to Cargos unification
of features for each crate[2].
[1]: https://github.com/serde-rs/serde/issues/1441
[2]: https://github.com/rust-lang/cargo/issues/4361#issuecomment-348538243
|
|
* Add 'copy_from' function to 'Container'
* Run clippy
* Update deps
|
|
Fixes #148
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* update to 2018 edition
* remove more externs
* bump version
|
|
* update travis build
* notes on fmting
* remove quotes
* comment below
* rouge quote
* first host.port usage
* fix deprecation warning
|
|
ContainerConnectionOptionsBuilder (#133)
|
|
* Support for setting CPU shares/memory for image builder
* Support for setting the number of CPU shares allocated to a container
|
|
* Remove an unused type parameter from the 'nocache' function
The function is currently unusable because the type parameter has no
uses or bounds.
* Fix existing rustfmt violation
Semicolons need to be added to return statements.
Without this, the build fails.
* Replace call of Uri::port to Uri::port_part
The former is deprecated in favor of the latter.
This causes a deprecation warning when compiling shiplift.
This patch fixes the deprecation warning.
|
|
* Support for AutoRemove flag
* Rust fmt
|
|
|
|
* Support interactive stdin/stdout streams
This adds support for streaming stdin, stderr, and stdout independently
to a running container.
The underlying API is futures-based, meaning the code is implemented
asynchronously. A synchronous API is also exposed, which is implemented
by simply waiting on the asynchronous API futures.
This also modifies the existing Tty logic so that the storage type of
the data is a Vec<u8> rather than a String. This is also how the Rust
standard library persists data from the standard streams. In my
particular application, I'm using stdin/stdout as the communication
method between a container a host application. In it, a byte-based protocol is
used.
Streaming works by performing a TCP upgrade; upgrading a higher-level
HTTP connection to a lower-level TCP byte stream upon agreement with the
server. Docker will automatically upgrade HTTP container log requests to
TCP byte streams of a custom std{in,out,err} multiplexing protocol if
the client requests it with the 'Connection: Upgrade' header.
* Return an error rather than panic when Docker refuses to upgrade to TCP
* Add interpret-as-string accessors to tty::Chunk
Also updates the examples to use them.
|
|
* Refactored Transport for better async use
Still a bit rough, but it now builds a big future using combinators. It
still does one `Runtime::block_on()` to keep the existing API, but this
is a first up before making the whole API async.
* Migrate most APIs to be Future-based
I still need to finish a few of the more tricky ones that I've commented
out for now, but most of it compiles and some examples work. In
particular, `Docker::stats()` now properly returns an async stream of
stats.
* Fix events and containerinspect examples
* Fix imageinspect, images, info and top examples
* Fix containercreate, imagedelete and imagepull examples
* Fix more examples
* Add back debug statement in Transport::request
* De-glob imports in examples
* Remove unused imports in examples
* Fix NetworkCreateOptions serialization
* Add back error message extraction in Transport
* Fix Container::create serialization of options
* Add containerdelete example
* Simplify result
* Fix some error handling to remove unwrap()
* Fix Image::export()
* Fix imagebuild example
* Add adapter from Stream of Chunks to AsyncRead
Having an `AsyncRead` is required to be able to use the `FramedRead` and
`Decoder` stuff from tokio_codec. This code is "borrowed" from
https:/github.com/ferristseng/rust-ipfs-api though should probably be
moved to its own crate or to tokio_codec.
* Fix Container::logs()
It now properly demuxes stdout/stderr, and returns a `Stream<Item =
TtyLine>`.
* Fix Container::export()
* Use LineCodec for streaming JSON
Although in my limited testing it seemed to work fine, there is no
guarantee that 1 chunk == 1 piece of valid JSON. However, each JSON
structure seems to be serialized on one line, so use LineCodec to turn
the body into a stream of lines, then deserialize over this.
* Fix serialization of ExecContainerOptions
* Fix Container::exec() (kind of...)
* Simplify deserialisation in Image::delete()
* Small clean-ups
* More clean ups
* Fix rustdoc + remove extraneous "extern crate"
* Fix doc example
* Fix formatting
|
|
There are some situations where the Docker daemon will expose a HTTP
server and will expect connections through a TCP connection rather than
via a unix socket. For example, this is the case with Docker for Windows
when used through the Windows Subsystem for Linux.
In these cases, `DOCKER_HOST` will be of the form
`tcp://127.0.0.1:2375`. Docker will not work if `DOCKER_HOST` has the
`http` protocol. This commit manually builds a `HttpConnector` from
Hyper so that it does not fail if the protocol is not `http`. Therefore,
the `DOCKER_HOST` that works with Docker will also work with shiplift.
|
|
Fixes #123.
|
|
* Added the 'expose' function to ContainerOptionBuilder impl. (Closes #73, Replaces #74)
* Forgot the , nevermind :ok_hand:
|
|
|