目录
DockerUI是一个开源的基于Docker API的web应用程序,提供等同Docker命令行的大部分功能,支持container管理,image管理。它最值得称道的是它华丽的设计和用来运行和管理docker的简洁的操作界面。
DockerUI优点:
1)支持container批量操作;
2)支持image管理(虽然比较薄弱)
DockerUI缺点:
1)不支持多主机。
2)不支持鉴权
- #拉镜像
- docker pull uifd/ui-for-docker
- #检查
- [root@docker]-[~]-#docker images|grep ui
- uifd/ui-for-docker latest 965940f98fa5 5 years ago 8.1MB
- #容器启动
- docker run -it -d --name docker-web -p 9090:9000 -v /var/run/docker.sock:/var/run/docker.sock docker.io/uifd/ui-for-docker
- #检查
- [root@docker]-[~]-#docker ps |grep web
- 164aaf6b30af uifd/ui-for-docker "/ui-for-docker" About an hour ago Up About an hour 0.0.0.0:9090->9000/tcp, :::9090->9000/tcp docker-web
http://10.0.0.100:9090
显示所有容器运行情况、容器创建周期、镜像拉取周期。
查看容器运行状态、日志情况等
拉取镜像:
修改标签:
Portainer是一个可视化的容器镜像的图形管理工具,利用Portainer可以轻松构建,管理和维护Docker环境。 而且完全免费,基于容器化的安装方式,方便高效部署。
官方站点:https://www.portainer.io/
- [root@docker]-[~/docker-ui]-#docker search portainer |head -n 3
- NAME DESCRIPTION STARS OFFICIAL AUTOMATED
- portainer/portainer This Repo is now deprecated, use portainer/p… 2255
- portainer/portainer-ce Portainer CE - a lightweight service deliver… 1314
- #拉取镜像
- [root@docker]-[~]-#docker pull portainer/portainer
- #检查
- [root@docker]-[~]-#docker images|grep portainer
- portainer/portainer latest 980323c8eb3f 19 months ago 196MB
- #启动容器
- docker run -d -p 8100:8000 -p 9100:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
- #检查
- [root@docker]-[~]-#docker ps|grep portainer
- e6ba4145ba0a portainer/portainer "/portainer" About an hour ago Up About an hour 0.0.0.0:8100->8000/tcp, :::8100->8000/tcp, 0.0.0.0:9100->9000/tcp, :::9100->9000/tcp portainer
http://10.0.0.100:9100(admin:${new_password})
添加用户:
添加docker endpoints:
添加registry:
settings:(详细介绍点击问号即可)
自定义:
可以进行启动、停止、杀掉、重启、中止、移除、添加容器等操作。
创建容器:
拉取镜像:
查看、移除、构建、导入镜像:
shipyard是docker的web可视化界面管理工具,是建立在docker集群管理工具Citadel之上,可以管理镜像、容器、主机等资源的web图形化工具,包括core和extension两个版本,core即shipyard主要是把多个 Docker host上的 containers 统一管理(支持跨越多个host),extension即shipyard-extensions添加了应用路由和负载均衡、集中化日志、部署等。Shipyard是在Docker Swarm实现对容器、镜像、docker集群、仓库、节点进行管理的web系统。
通过Web用户界面,你可以浏览相关信息,比如你的容器在使用多少处理器和内存资源、在运行哪些容器,哪些镜像,还可以检查所有集群上的事件日志等。
其特性主要包括:
1)支持节点动态集群,可扩展节点的规模(swarm、etcd方案)
2)支持镜像管理、容器管理、节点管理等功能
3)可视化的容器管理和监控管理
4)在线连接容器console终端
通过脚本快速拉取镜像,启动容器:
- [root@docker]-[~/docker-ui]-#cat deploy
- #!/bin/bash
-
- if [ "$1" != "" ] && [ "$1" = "-h" ]; then
- echo "Shipyard Deploy uses the following environment variables:"
- echo " ACTION: this is the action to use (deploy, upgrade, node, remove)"
- echo " DISCOVERY: discovery system used by Swarm (only if using 'node' action)"
- echo " IMAGE: this overrides the default Shipyard image"
- echo " PREFIX: prefix for container names"
- echo " SHIPYARD_ARGS: these are passed to the Shipyard controller container as controller args"
- echo " TLS_CERT_PATH: path to certs to enable TLS for Shipyard"
- echo " PORT: specify the listen port for the controller (default: 8080)"
- echo " IP: specify the address at which the controller or node will be available (default: eth0 ip)"
- echo " PROXY_PORT: port to run docker proxy (default: 2375)"
- exit 1
- fi
-
- if [ -z "`which docker`" ]; then
- echo "You must have the Docker CLI installed on your \$PATH"
- echo " See http://docs.docker.com for details"
- exit 1
- fi
-
- ACTION=${ACTION:-deploy}
- IMAGE=${IMAGE:-dockerclub/shipyard:latest}
- PREFIX=${PREFIX:-shipyard}
- SHIPYARD_ARGS=${SHIPYARD_ARGS:-""}
- TLS_CERT_PATH=${TLS_CERT_PATH:-}
- CERT_PATH="/etc/shipyard"
- PROXY_PORT=${PROXY_PORT:-2376}
- SWARM_PORT=3375
- SHIPYARD_PROTOCOL=http
- SHIPYARD_PORT=${PORT:-8080}
- SHIPYARD_IP=${IP}
- DISCOVERY_BACKEND=etcd
- DISCOVERY_PORT=4001
- DISCOVERY_PEER_PORT=7001
- ENABLE_TLS=0
- CERT_FINGERPRINT=""
- LOCAL_CA_CERT=""
- LOCAL_SSL_CERT=""
- LOCAL_SSL_KEY=""
- LOCAL_SSL_CLIENT_CERT=""
- LOCAL_SSL_CLIENT_KEY=""
- SSL_CA_CERT=""
- SSL_CERT=""
- SSL_KEY=""
- SSL_CLIENT_CERT=""
- SSL_CLIENT_KEY=""
-
- show_cert_help() {
- echo "To use TLS in Shipyard, you must have existing certificates."
- echo "The certs must be named ca.pem, server.pem, server-key.pem, cert.pem and key.pem"
- echo "If you need to generate certificates, see https://github.com/ehazlett/certm for examples."
- }
-
- check_certs() {
- if [ -z "$TLS_CERT_PATH" ]; then
- return
- fi
-
- if [ ! -e $TLS_CERT_PATH ]; then
- echo "Error: unable to find certificates in $TLS_CERT_PATH"
- show_cert_help
- exit 1
- fi
-
- if [ "$PROXY_PORT" = "2375" ]; then
- PROXY_PORT=2376
- fi
- SWARM_PORT=3376
- SHIPYARD_PROTOCOL=https
- LOCAL_SSL_CA_CERT="$TLS_CERT_PATH/ca.pem"
- LOCAL_SSL_CERT="$TLS_CERT_PATH/server.pem"
- LOCAL_SSL_KEY="$TLS_CERT_PATH/server-key.pem"
- LOCAL_SSL_CLIENT_CERT="$TLS_CERT_PATH/cert.pem"
- LOCAL_SSL_CLIENT_KEY="$TLS_CERT_PATH/key.pem"
- SSL_CA_CERT="$CERT_PATH/ca.pem"
- SSL_CERT="$CERT_PATH/server.pem"
- SSL_KEY="$CERT_PATH/server-key.pem"
- SSL_CLIENT_CERT="$CERT_PATH/cert.pem"
- SSL_CLIENT_KEY="$CERT_PATH/key.pem"
- CERT_FINGERPRINT=$(openssl x509 -noout -in $LOCAL_SSL_CERT -fingerprint -sha256 | awk -F= '{print $2;}')
-
- if [ ! -e $LOCAL_SSL_CA_CERT ] || [ ! -e $LOCAL_SSL_CERT ] || [ ! -e $LOCAL_SSL_KEY ] || [ ! -e $LOCAL_SSL_CLIENT_CERT ] || [ ! -e $LOCAL_SSL_CLIENT_KEY ]; then
- echo "Error: unable to find certificates"
- show_cert_help
- exit 1
- fi
-
- ENABLE_TLS=1
- }
-
- # container functions
- start_certs() {
- ID=$(docker run \
- -ti \
- -d \
- --restart=always \
- --name $PREFIX-certs \
- -v $CERT_PATH \
- alpine \
- sh)
- if [ $ENABLE_TLS = 1 ]; then
- docker cp $LOCAL_SSL_CA_CERT $PREFIX-certs:$SSL_CA_CERT
- docker cp $LOCAL_SSL_CERT $PREFIX-certs:$SSL_CERT
- docker cp $LOCAL_SSL_KEY $PREFIX-certs:$SSL_KEY
- docker cp $LOCAL_SSL_CLIENT_CERT $PREFIX-certs:$SSL_CLIENT_CERT
- docker cp $LOCAL_SSL_CLIENT_KEY $PREFIX-certs:$SSL_CLIENT_KEY
- fi
- }
-
- remove_certs() {
- docker rm -fv $PREFIX-certs > /dev/null 2>&1
- }
-
- get_ip() {
- if [ -z "$SHIPYARD_IP" ]; then
- SHIPYARD_IP=`docker run --rm --net=host alpine ip route get 8.8.8.8 | awk '{ print $7; }'`
- fi
- }
-
- start_discovery() {
- get_ip
-
- ID=$(docker run \
- -ti \
- -d \
- -p 4001:4001 \
- -p 7001:7001 \
- --restart=always \
- --name $PREFIX-discovery \
- microbox/etcd:latest -addr $SHIPYARD_IP:$DISCOVERY_PORT -peer-addr $SHIPYARD_IP:$DISCOVERY_PEER_PORT)
- }
-
- remove_discovery() {
- docker rm -fv $PREFIX-discovery > /dev/null 2>&1
- }
-
- start_rethinkdb() {
- ID=$(docker run \
- -ti \
- -d \
- --restart=always \
- --name $PREFIX-rethinkdb \
- rethinkdb)
- }
-
- remove_rethinkdb() {
- docker rm -fv $PREFIX-rethinkdb > /dev/null 2>&1
- }
-
- start_proxy() {
- TLS_OPTS=""
- if [ $ENABLE_TLS = 1 ]; then
- TLS_OPTS="-e SSL_CA=$SSL_CA_CERT -e SSL_CERT=$SSL_CERT -e SSL_KEY=$SSL_KEY -e SSL_SKIP_VERIFY=1"
- fi
- # Note: we add SSL_SKIP_VERIFY=1 to skip verification of the client
- # certificate in the proxy image. this will pass it to swarm that
- # does verify. this helps with performance and avoids certificate issues
- # when running through the proxy. ultimately if the cert is invalid
- # swarm will fail to return.
- ID=$(docker run \
- -ti \
- -d \
- -p $PROXY_PORT:$PROXY_PORT \
- --hostname=$HOSTNAME \
- --restart=always \
- --name $PREFIX-proxy \
- -v /var/run/docker.sock:/var/run/docker.sock \
- -e PORT=$PROXY_PORT \
- --volumes-from=$PREFIX-certs $TLS_OPTS\
- shipyard/docker-proxy:latest)
- }
-
- remove_proxy() {
- docker rm -fv $PREFIX-proxy > /dev/null 2>&1
- }
-
- start_swarm_manager() {
- get_ip
-
- TLS_OPTS=""
- if [ $ENABLE_TLS = 1 ]; then
- TLS_OPTS="--tlsverify --tlscacert=$SSL_CA_CERT --tlscert=$SSL_CERT --tlskey=$SSL_KEY"
- fi
-
- EXTRA_RUN_OPTS=""
-
- if [ -z "$DISCOVERY" ]; then
- DISCOVERY="$DISCOVERY_BACKEND://discovery:$DISCOVERY_PORT"
- EXTRA_RUN_OPTS="--link $PREFIX-discovery:discovery"
- fi
- ID=$(docker run \
- -ti \
- -d \
- --restart=always \
- --name $PREFIX-swarm-manager \
- --volumes-from=$PREFIX-certs $EXTRA_RUN_OPTS \
- swarm:latest \
- m --replication --addr $SHIPYARD_IP:$SWARM_PORT --host tcp://0.0.0.0:$SWARM_PORT $TLS_OPTS $DISCOVERY)
- }
-
- remove_swarm_manager() {
- docker rm -fv $PREFIX-swarm-manager > /dev/null 2>&1
- }
-
- start_swarm_agent() {
- get_ip
-
- if [ -z "$DISCOVERY" ]; then
- DISCOVERY="$DISCOVERY_BACKEND://discovery:$DISCOVERY_PORT"
- EXTRA_RUN_OPTS="--link $PREFIX-discovery:discovery"
- fi
- ID=$(docker run \
- -ti \
- -d \
- --restart=always \
- --name $PREFIX-swarm-agent $EXTRA_RUN_OPTS \
- swarm:latest \
- j --addr $SHIPYARD_IP:$PROXY_PORT $DISCOVERY)
- }
-
- remove_swarm_agent() {
- docker rm -fv $PREFIX-swarm-agent > /dev/null 2>&1
- }
-
- start_controller() {
- #-v $CERT_PATH:/etc/docker:ro \
- TLS_OPTS=""
- if [ $ENABLE_TLS = 1 ]; then
- TLS_OPTS="--tls-ca-cert $SSL_CA_CERT --tls-cert=$SSL_CERT --tls-key=$SSL_KEY --shipyard-tls-ca-cert=$SSL_CA_CERT --shipyard-tls-cert=$SSL_CERT --shipyard-tls-key=$SSL_KEY"
- fi
-
- ID=$(docker run \
- -ti \
- -d \
- --restart=always \
- --name $PREFIX-controller \
- --link $PREFIX-rethinkdb:rethinkdb \
- --link $PREFIX-swarm-manager:swarm \
- -p $SHIPYARD_PORT:$SHIPYARD_PORT \
- --volumes-from=$PREFIX-certs \
- $IMAGE \
- --debug \
- server \
- --listen :$SHIPYARD_PORT \
- -d tcp://swarm:$SWARM_PORT $TLS_OPTS $SHIPYARD_ARGS)
- }
-
- wait_for_available() {
- set +e
- IP=$1
- PORT=$2
- echo Waiting for Shipyard on $IP:$PORT
-
- docker pull ehazlett/curl > /dev/null 2>&1
-
- TLS_OPTS=""
- if [ $ENABLE_TLS = 1 ]; then
- TLS_OPTS="-k"
- fi
-
- until $(docker run --rm ehazlett/curl --output /dev/null --connect-timeout 1 --silent --head --fail $TLS_OPTS $SHIPYARD_PROTOCOL://$IP:$PORT/ > /dev/null 2>&1); do
- printf '.'
- sleep 1
- done
- printf '\n'
- }
-
- remove_controller() {
- docker rm -fv $PREFIX-controller > /dev/null 2>&1
- }
-
- if [ "$ACTION" = "deploy" ]; then
- set -e
-
- check_certs
-
- get_ip
-
- echo "Deploying Shipyard"
- echo " -> Starting Database"
- start_rethinkdb
- echo " -> Starting Discovery"
- start_discovery
- echo " -> Starting Cert Volume"
- start_certs
- echo " -> Starting Proxy"
- start_proxy
- echo " -> Starting Swarm Manager"
- start_swarm_manager
- echo " -> Starting Swarm Agent"
- start_swarm_agent
- echo " -> Starting Controller"
- start_controller
-
- wait_for_available $SHIPYARD_IP $SHIPYARD_PORT
-
- echo "Shipyard available at $SHIPYARD_PROTOCOL://$SHIPYARD_IP:$SHIPYARD_PORT"
- if [ $ENABLE_TLS = 1 ] && [ ! -z "$CERT_FINGERPRINT" ]; then
- echo "SSL SHA-256 Fingerprint: $CERT_FINGERPRINT"
- fi
- echo "Username: admin Password: shipyard"
-
- elif [ "$ACTION" = "node" ]; then
- set -e
-
- if [ -z "$DISCOVERY" ]; then
- echo "You must set the DISCOVERY environment variable"
- echo "with the discovery system used with Swarm"
- exit 1
- fi
-
- check_certs
-
- echo "Adding Node"
- echo " -> Starting Cert Volume"
- start_certs
- echo " -> Starting Proxy"
- start_proxy
- echo " -> Starting Swarm Manager"
- start_swarm_manager $DISCOVERY
- echo " -> Starting Swarm Agent"
- start_swarm_agent
-
- echo "Node added to Swarm: $SHIPYARD_IP"
-
- elif [ "$ACTION" = "upgrade" ]; then
- set -e
-
- check_certs
-
- get_ip
-
- echo "Upgrading Shipyard"
- echo " -> Pulling $IMAGE"
- docker pull $IMAGE
-
- echo " -> Upgrading Controller"
- remove_controller
- start_controller
-
- wait_for_available $SHIPYARD_IP $SHIPYARD_PORT
-
- echo "Shipyard controller updated"
-
- elif [ "$ACTION" = "remove" ]; then
- # ignore errors
- set +e
-
- echo "Removing Shipyard"
- echo " -> Removing Database"
- remove_rethinkdb
- echo " -> Removing Discovery"
- remove_discovery
- echo " -> Removing Cert Volume"
- remove_certs
- echo " -> Removing Proxy"
- remove_proxy
- echo " -> Removing Swarm Agent"
- remove_swarm_agent
- echo " -> Removing Swarm Manager"
- remove_swarm_manager
- echo " -> Removing Controller"
- remove_controller
-
- echo "Done"
- else
- echo "Unknown action $ACTION"
- exit 1
- fi
执行脚本:
- [root@docker]-[~/docker-ui]-#./deploy
- Unable to find image 'alpine:latest' locally
- latest: Pulling from library/alpine
- 213ec9aee27d: Pulling fs layer
- 213ec9aee27d: Verifying Checksum
- 213ec9aee27d: Download complete
- 213ec9aee27d: Pull complete
- Digest: sha256:bc41182d7ef5ffc53a40b044e725193bc10142a1243f395ee852a8d9730fc2ad
- Status: Downloaded newer image for alpine:latest
- Deploying Shipyard
- -> Starting Database
- Unable to find image 'rethinkdb:latest' locally
- latest: Pulling from library/rethinkdb
- 7a6db449b51b: Pulling fs layer
- 20181367ea9b: Pulling fs layer
- d4c59a6fbe9d: Pulling fs layer
- 54db2c71fcb0: Pulling fs layer
- 1e96e4039912: Pulling fs layer
- 54db2c71fcb0: Waiting
- 1e96e4039912: Waiting
- d4c59a6fbe9d: Verifying Checksum
- d4c59a6fbe9d: Download complete
- 20181367ea9b: Verifying Checksum
- 20181367ea9b: Download complete
- 1e96e4039912: Download complete
- 7a6db449b51b: Download complete
- 7a6db449b51b: Pull complete
- 20181367ea9b: Pull complete
- d4c59a6fbe9d: Pull complete
- 54db2c71fcb0: Verifying Checksum
- 54db2c71fcb0: Download complete
- 54db2c71fcb0: Pull complete
- 1e96e4039912: Pull complete
- Digest: sha256:bc30f504fc823240c64552a7983b6da55d83dd0966ab17cab12c5fb9e45576ce
- Status: Downloaded newer image for rethinkdb:latest
- -> Starting Discovery
- Unable to find image 'microbox/etcd:latest' locally
- latest: Pulling from microbox/etcd
- Image docker.io/microbox/etcd:latest uses outdated schema1 manifest format. Please upgrade to a schema2 image for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/
- 8ded6e8ab3fd: Pulling fs layer
- bf8f85223d7a: Pulling fs layer
- a3ed95caeb02: Pulling fs layer
- a3ed95caeb02: Verifying Checksum
- a3ed95caeb02: Download complete
- bf8f85223d7a: Verifying Checksum
- bf8f85223d7a: Download complete
- 8ded6e8ab3fd: Verifying Checksum
- 8ded6e8ab3fd: Download complete
- 8ded6e8ab3fd: Pull complete
- bf8f85223d7a: Pull complete
- a3ed95caeb02: Pull complete
- Digest: sha256:941fd46b4eab265c65da9bfbf33397b853a7cef6c16df93a1e3fea7b4e47fc90
- Status: Downloaded newer image for microbox/etcd:latest
- -> Starting Cert Volume
- -> Starting Proxy
- Unable to find image 'shipyard/docker-proxy:latest' locally
- latest: Pulling from shipyard/docker-proxy
- Image docker.io/shipyard/docker-proxy:latest uses outdated schema1 manifest format. Please upgrade to a schema2 image for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/
- 8f4ec95ceaee: Pulling fs layer
- ac77a345f217: Pulling fs layer
- 43039e3ef672: Pulling fs layer
- a3ed95caeb02: Pulling fs layer
- a3ed95caeb02: Waiting
- 8f4ec95ceaee: Download complete
- 8f4ec95ceaee: Pull complete
- ac77a345f217: Verifying Checksum
- ac77a345f217: Download complete
- ac77a345f217: Pull complete
- a3ed95caeb02: Verifying Checksum
- a3ed95caeb02: Download complete
- 43039e3ef672: Verifying Checksum
- 43039e3ef672: Download complete
- 43039e3ef672: Pull complete
- a3ed95caeb02: Pull complete
- Digest: sha256:da6bbd1a145581a940d44940cce0f43705d7f8ec552a4e97e77104ec1b6dc3d1
- Status: Downloaded newer image for shipyard/docker-proxy:latest
- -> Starting Swarm Manager
- Unable to find image 'swarm:latest' locally
- latest: Pulling from library/swarm
- 38e5683d7755: Pulling fs layer
- 083aff163606: Pulling fs layer
- 2064f1a73c6b: Pulling fs layer
- 083aff163606: Verifying Checksum
- 083aff163606: Download complete
- 2064f1a73c6b: Verifying Checksum
- 2064f1a73c6b: Download complete
- 38e5683d7755: Verifying Checksum
- 38e5683d7755: Download complete
- 38e5683d7755: Pull complete
- 083aff163606: Pull complete
- 2064f1a73c6b: Pull complete
- Digest: sha256:2de8883e2933840ed7ee7360ea1eed314bf8aeac37c0692b9ca651630fde3b7f
- Status: Downloaded newer image for swarm:latest
- -> Starting Swarm Agent
- -> Starting Controller
- Unable to find image 'dockerclub/shipyard:latest' locally
- latest: Pulling from dockerclub/shipyard
- Image docker.io/dockerclub/shipyard:latest uses outdated schema1 manifest format. Please upgrade to a schema2 image for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/
- 4d06f2521e4f: Pulling fs layer
- 64100628847a: Pulling fs layer
- 36a170440d6d: Pulling fs layer
- a823ae228c2d: Pulling fs layer
- a3ed95caeb02: Pulling fs layer
- a823ae228c2d: Waiting
- a3ed95caeb02: Waiting
- 4d06f2521e4f: Verifying Checksum
- 4d06f2521e4f: Download complete
- 4d06f2521e4f: Pull complete
- 36a170440d6d: Verifying Checksum
- 36a170440d6d: Download complete
- a3ed95caeb02: Verifying Checksum
- a3ed95caeb02: Download complete
- 64100628847a: Verifying Checksum
- 64100628847a: Download complete
- 64100628847a: Pull complete
- 36a170440d6d: Pull complete
- a823ae228c2d: Verifying Checksum
- a823ae228c2d: Download complete
- a823ae228c2d: Pull complete
- a3ed95caeb02: Pull complete
- Digest: sha256:bd5ac58c556506012f7788db18fc6fed3bcefb294e469babbeb87ad7ef15e219
- Status: Downloaded newer image for dockerclub/shipyard:latest
- Waiting for Shipyard on 10.0.0.100:8080
- ........................................
- Shipyard available at http://10.0.0.100:8080
- Username: admin Password: shipyard
容器介绍:
- [root@docker]-[~/docker-ui]-#docker ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 2308552f63a9 dockerclub/shipyard:latest "/bin/controller --d…" About an hour ago Up About an hour 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp shipyard-controller
- 1676327a4e5a swarm:latest "/swarm j --addr 10.…" About an hour ago Up About an hour 2375/tcp shipyard-swarm-agent
- 2f368d9f81df swarm:latest "/swarm m --replicat…" About an hour ago Up About an hour 2375/tcp shipyard-swarm-manager
- c38108f757c5 shipyard/docker-proxy:latest "/usr/local/bin/run" About an hour ago Up About an hour 2375/tcp, 0.0.0.0:2376->2376/tcp, :::2376->2376/tcp shipyard-proxy
- e610645dfe8e alpine "sh" About an hour ago Up About an hour shipyard-certs
- c444c7df39f4 microbox/etcd:latest "/bin/etcd -addr 10.…" About an hour ago Up About an hour 0.0.0.0:4001->4001/tcp, :::4001->4001/tcp, 0.0.0.0:7001->7001/tcp, :::7001->7001/tcp shipyard-discovery
- 307b4cec4659 rethinkdb "rethinkdb --bind all" About an hour ago Up About an hour 8080/tcp, 28015/tcp, 29015/tcp shipyard-rethinkdb
-
- ----------------------------------------------------------------------------------------
- 1)RethinkDB
- deploy首先启动的就是RethinkDB容器,shipyard采用RethinkDB作为数据库来保存用户等信息
- 2)Discovery
- 为了使用Swarm,我们需要一个外部的密钥值存储群容器,shipyard默认是采用了etcd。
- 3)shipyard_certs
- 证书管理容器,实现证书验证功能
- 4)Proxy
- 默认情况下,Docker引擎只监听Socket,我们可以重新配置引擎使用TLS或者使用一个代理容器,转发请求从TCP到Docker监听的UNIX Socket。
- 5)Swarm Manager
- Swarm管理器
- 6)Swarm Agent
- Swarm代理,运行在每个节点上。
- 7)Controller
- shipyard控制器,Remote API的实现和web的实现。
登录用户名/密码:admin/shipyard
部署容器:
操作容器:
下载镜像:
添加仓库:
新增账户: