• 三种docker可视化工具(全网最详细)


    目录

    一、docker UI

    1.1 介绍

    1.2 部署

    1.2.1 拉镜像

    1.2.2 启动容器

    1.2.3 访问页面

    1.3 使用

     1.3.1 Dashboard

     1.3.2 Containers

     1.3.3 Containers Network

     1.3.4 Images

     1.3.5 Networks

     1.3.6 Volumes

     1.3.7 Docker Information

     二、Portainer

    2.1 介绍

    2.2 部署

     2.2.1 拉镜像

     2.2.2 启动容器

     2.2.3 访问页面

    2.3 使用

     2.3.1 Home

     2.3.2 Dashboard

     2.3.3 APP Templates

     2.3.4 Stacks

     2.3.5 Containers

     2.3.6 images

     2.3.7 Networks

     2.3.8 Volume

     2.3.9 Events

     2.3.10 Host View

     三、shipyard

    3.1 介绍

    3.2 部署

    3.2.1 拉取镜像

    3.2.2 页面访问

    3.3 使用

    3.3.1 容器管理

    3.3.2 镜像管理

    3.3.3 仓库管理

    3.3.4 账户管理

    3.3.5 日志事件


    一、docker UI

    1.1 介绍

    DockerUI是一个开源的基于Docker API的web应用程序,提供等同Docker命令行的大部分功能,支持container管理,image管理。它最值得称道的是它华丽的设计和用来运行和管理docker的简洁的操作界面。

    DockerUI优点:

          1)支持container批量操作;

          2)支持image管理(虽然比较薄弱)

    DockerUI缺点:

          1)不支持多主机。

          2)不支持鉴权

    1.2 部署

    1.2.1 拉镜像

    1. #拉镜像
    2. docker pull uifd/ui-for-docker
    3. #检查
    4. [root@docker]-[~]-#docker images|grep ui
    5. uifd/ui-for-docker latest 965940f98fa5 5 years ago 8.1MB

    1.2.2 启动容器

    1. #容器启动
    2. 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
    3. #检查
    4. [root@docker]-[~]-#docker ps |grep web
    5. 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

    1.2.3 访问页面

    http://10.0.0.100:9090

     1.3 使用

    1.3.1 Dashboard

    显示所有容器运行情况、容器创建周期、镜像拉取周期。

     1.3.2 Containers

    查看容器运行状态、日志情况等

     1.3.3 Containers Network

     1.3.4 Images

     拉取镜像:

     修改标签:

     1.3.5 Networks

     1.3.6 Volumes

     1.3.7 Docker Information

     二、Portainer

    2.1 介绍

    Portainer是一个可视化的容器镜像的图形管理工具,利用Portainer可以轻松构建,管理和维护Docker环境。 而且完全免费,基于容器化的安装方式,方便高效部署。

    官方站点:https://www.portainer.io/

    2.2 部署

    1. [root@docker]-[~/docker-ui]-#docker search portainer |head -n 3
    2. NAME DESCRIPTION STARS OFFICIAL AUTOMATED
    3. portainer/portainer This Repo is now deprecated, use portainer/p… 2255
    4. portainer/portainer-ce Portainer CE - a lightweight service deliver… 1314

    2.2.1 拉镜像

    1. #拉取镜像
    2. [root@docker]-[~]-#docker pull portainer/portainer
    3. #检查
    4. [root@docker]-[~]-#docker images|grep portainer
    5. portainer/portainer latest 980323c8eb3f 19 months ago 196MB

    2.2.2 启动容器

    1. #启动容器
    2. 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
    3. #检查
    4. [root@docker]-[~]-#docker ps|grep portainer
    5. 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

    2.2.3 访问页面

    http://10.0.0.100:9100(admin:${new_password})

     2.3 使用

    2.3.1 Home

     添加用户:

     添加docker endpoints:

     添加registry:

     settings:(详细介绍点击问号即可)

     2.3.2 Dashboard

     2.3.3 APP Templates

    自定义:

     2.3.4 Stacks

     2.3.5 Containers

    可以进行启动、停止、杀掉、重启、中止、移除、添加容器等操作。 

    创建容器: 

    2.3.6 images

    拉取镜像:

     查看、移除、构建、导入镜像:

     2.3.7 Networks

     2.3.8 Volumes

     2.3.9 Events

     2.3.10 Host View

     三、shipyard

    3.1 介绍

            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终端

    3.2 部署

    官网:deploy – shipyard project

    3.2.1 拉取镜像

    通过脚本快速拉取镜像,启动容器:

    1. [root@docker]-[~/docker-ui]-#cat deploy
    2. #!/bin/bash
    3. if [ "$1" != "" ] && [ "$1" = "-h" ]; then
    4. echo "Shipyard Deploy uses the following environment variables:"
    5. echo " ACTION: this is the action to use (deploy, upgrade, node, remove)"
    6. echo " DISCOVERY: discovery system used by Swarm (only if using 'node' action)"
    7. echo " IMAGE: this overrides the default Shipyard image"
    8. echo " PREFIX: prefix for container names"
    9. echo " SHIPYARD_ARGS: these are passed to the Shipyard controller container as controller args"
    10. echo " TLS_CERT_PATH: path to certs to enable TLS for Shipyard"
    11. echo " PORT: specify the listen port for the controller (default: 8080)"
    12. echo " IP: specify the address at which the controller or node will be available (default: eth0 ip)"
    13. echo " PROXY_PORT: port to run docker proxy (default: 2375)"
    14. exit 1
    15. fi
    16. if [ -z "`which docker`" ]; then
    17. echo "You must have the Docker CLI installed on your \$PATH"
    18. echo " See http://docs.docker.com for details"
    19. exit 1
    20. fi
    21. ACTION=${ACTION:-deploy}
    22. IMAGE=${IMAGE:-dockerclub/shipyard:latest}
    23. PREFIX=${PREFIX:-shipyard}
    24. SHIPYARD_ARGS=${SHIPYARD_ARGS:-""}
    25. TLS_CERT_PATH=${TLS_CERT_PATH:-}
    26. CERT_PATH="/etc/shipyard"
    27. PROXY_PORT=${PROXY_PORT:-2376}
    28. SWARM_PORT=3375
    29. SHIPYARD_PROTOCOL=http
    30. SHIPYARD_PORT=${PORT:-8080}
    31. SHIPYARD_IP=${IP}
    32. DISCOVERY_BACKEND=etcd
    33. DISCOVERY_PORT=4001
    34. DISCOVERY_PEER_PORT=7001
    35. ENABLE_TLS=0
    36. CERT_FINGERPRINT=""
    37. LOCAL_CA_CERT=""
    38. LOCAL_SSL_CERT=""
    39. LOCAL_SSL_KEY=""
    40. LOCAL_SSL_CLIENT_CERT=""
    41. LOCAL_SSL_CLIENT_KEY=""
    42. SSL_CA_CERT=""
    43. SSL_CERT=""
    44. SSL_KEY=""
    45. SSL_CLIENT_CERT=""
    46. SSL_CLIENT_KEY=""
    47. show_cert_help() {
    48. echo "To use TLS in Shipyard, you must have existing certificates."
    49. echo "The certs must be named ca.pem, server.pem, server-key.pem, cert.pem and key.pem"
    50. echo "If you need to generate certificates, see https://github.com/ehazlett/certm for examples."
    51. }
    52. check_certs() {
    53. if [ -z "$TLS_CERT_PATH" ]; then
    54. return
    55. fi
    56. if [ ! -e $TLS_CERT_PATH ]; then
    57. echo "Error: unable to find certificates in $TLS_CERT_PATH"
    58. show_cert_help
    59. exit 1
    60. fi
    61. if [ "$PROXY_PORT" = "2375" ]; then
    62. PROXY_PORT=2376
    63. fi
    64. SWARM_PORT=3376
    65. SHIPYARD_PROTOCOL=https
    66. LOCAL_SSL_CA_CERT="$TLS_CERT_PATH/ca.pem"
    67. LOCAL_SSL_CERT="$TLS_CERT_PATH/server.pem"
    68. LOCAL_SSL_KEY="$TLS_CERT_PATH/server-key.pem"
    69. LOCAL_SSL_CLIENT_CERT="$TLS_CERT_PATH/cert.pem"
    70. LOCAL_SSL_CLIENT_KEY="$TLS_CERT_PATH/key.pem"
    71. SSL_CA_CERT="$CERT_PATH/ca.pem"
    72. SSL_CERT="$CERT_PATH/server.pem"
    73. SSL_KEY="$CERT_PATH/server-key.pem"
    74. SSL_CLIENT_CERT="$CERT_PATH/cert.pem"
    75. SSL_CLIENT_KEY="$CERT_PATH/key.pem"
    76. CERT_FINGERPRINT=$(openssl x509 -noout -in $LOCAL_SSL_CERT -fingerprint -sha256 | awk -F= '{print $2;}')
    77. 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
    78. echo "Error: unable to find certificates"
    79. show_cert_help
    80. exit 1
    81. fi
    82. ENABLE_TLS=1
    83. }
    84. # container functions
    85. start_certs() {
    86. ID=$(docker run \
    87. -ti \
    88. -d \
    89. --restart=always \
    90. --name $PREFIX-certs \
    91. -v $CERT_PATH \
    92. alpine \
    93. sh)
    94. if [ $ENABLE_TLS = 1 ]; then
    95. docker cp $LOCAL_SSL_CA_CERT $PREFIX-certs:$SSL_CA_CERT
    96. docker cp $LOCAL_SSL_CERT $PREFIX-certs:$SSL_CERT
    97. docker cp $LOCAL_SSL_KEY $PREFIX-certs:$SSL_KEY
    98. docker cp $LOCAL_SSL_CLIENT_CERT $PREFIX-certs:$SSL_CLIENT_CERT
    99. docker cp $LOCAL_SSL_CLIENT_KEY $PREFIX-certs:$SSL_CLIENT_KEY
    100. fi
    101. }
    102. remove_certs() {
    103. docker rm -fv $PREFIX-certs > /dev/null 2>&1
    104. }
    105. get_ip() {
    106. if [ -z "$SHIPYARD_IP" ]; then
    107. SHIPYARD_IP=`docker run --rm --net=host alpine ip route get 8.8.8.8 | awk '{ print $7; }'`
    108. fi
    109. }
    110. start_discovery() {
    111. get_ip
    112. ID=$(docker run \
    113. -ti \
    114. -d \
    115. -p 4001:4001 \
    116. -p 7001:7001 \
    117. --restart=always \
    118. --name $PREFIX-discovery \
    119. microbox/etcd:latest -addr $SHIPYARD_IP:$DISCOVERY_PORT -peer-addr $SHIPYARD_IP:$DISCOVERY_PEER_PORT)
    120. }
    121. remove_discovery() {
    122. docker rm -fv $PREFIX-discovery > /dev/null 2>&1
    123. }
    124. start_rethinkdb() {
    125. ID=$(docker run \
    126. -ti \
    127. -d \
    128. --restart=always \
    129. --name $PREFIX-rethinkdb \
    130. rethinkdb)
    131. }
    132. remove_rethinkdb() {
    133. docker rm -fv $PREFIX-rethinkdb > /dev/null 2>&1
    134. }
    135. start_proxy() {
    136. TLS_OPTS=""
    137. if [ $ENABLE_TLS = 1 ]; then
    138. TLS_OPTS="-e SSL_CA=$SSL_CA_CERT -e SSL_CERT=$SSL_CERT -e SSL_KEY=$SSL_KEY -e SSL_SKIP_VERIFY=1"
    139. fi
    140. # Note: we add SSL_SKIP_VERIFY=1 to skip verification of the client
    141. # certificate in the proxy image. this will pass it to swarm that
    142. # does verify. this helps with performance and avoids certificate issues
    143. # when running through the proxy. ultimately if the cert is invalid
    144. # swarm will fail to return.
    145. ID=$(docker run \
    146. -ti \
    147. -d \
    148. -p $PROXY_PORT:$PROXY_PORT \
    149. --hostname=$HOSTNAME \
    150. --restart=always \
    151. --name $PREFIX-proxy \
    152. -v /var/run/docker.sock:/var/run/docker.sock \
    153. -e PORT=$PROXY_PORT \
    154. --volumes-from=$PREFIX-certs $TLS_OPTS\
    155. shipyard/docker-proxy:latest)
    156. }
    157. remove_proxy() {
    158. docker rm -fv $PREFIX-proxy > /dev/null 2>&1
    159. }
    160. start_swarm_manager() {
    161. get_ip
    162. TLS_OPTS=""
    163. if [ $ENABLE_TLS = 1 ]; then
    164. TLS_OPTS="--tlsverify --tlscacert=$SSL_CA_CERT --tlscert=$SSL_CERT --tlskey=$SSL_KEY"
    165. fi
    166. EXTRA_RUN_OPTS=""
    167. if [ -z "$DISCOVERY" ]; then
    168. DISCOVERY="$DISCOVERY_BACKEND://discovery:$DISCOVERY_PORT"
    169. EXTRA_RUN_OPTS="--link $PREFIX-discovery:discovery"
    170. fi
    171. ID=$(docker run \
    172. -ti \
    173. -d \
    174. --restart=always \
    175. --name $PREFIX-swarm-manager \
    176. --volumes-from=$PREFIX-certs $EXTRA_RUN_OPTS \
    177. swarm:latest \
    178. m --replication --addr $SHIPYARD_IP:$SWARM_PORT --host tcp://0.0.0.0:$SWARM_PORT $TLS_OPTS $DISCOVERY)
    179. }
    180. remove_swarm_manager() {
    181. docker rm -fv $PREFIX-swarm-manager > /dev/null 2>&1
    182. }
    183. start_swarm_agent() {
    184. get_ip
    185. if [ -z "$DISCOVERY" ]; then
    186. DISCOVERY="$DISCOVERY_BACKEND://discovery:$DISCOVERY_PORT"
    187. EXTRA_RUN_OPTS="--link $PREFIX-discovery:discovery"
    188. fi
    189. ID=$(docker run \
    190. -ti \
    191. -d \
    192. --restart=always \
    193. --name $PREFIX-swarm-agent $EXTRA_RUN_OPTS \
    194. swarm:latest \
    195. j --addr $SHIPYARD_IP:$PROXY_PORT $DISCOVERY)
    196. }
    197. remove_swarm_agent() {
    198. docker rm -fv $PREFIX-swarm-agent > /dev/null 2>&1
    199. }
    200. start_controller() {
    201. #-v $CERT_PATH:/etc/docker:ro \
    202. TLS_OPTS=""
    203. if [ $ENABLE_TLS = 1 ]; then
    204. 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"
    205. fi
    206. ID=$(docker run \
    207. -ti \
    208. -d \
    209. --restart=always \
    210. --name $PREFIX-controller \
    211. --link $PREFIX-rethinkdb:rethinkdb \
    212. --link $PREFIX-swarm-manager:swarm \
    213. -p $SHIPYARD_PORT:$SHIPYARD_PORT \
    214. --volumes-from=$PREFIX-certs \
    215. $IMAGE \
    216. --debug \
    217. server \
    218. --listen :$SHIPYARD_PORT \
    219. -d tcp://swarm:$SWARM_PORT $TLS_OPTS $SHIPYARD_ARGS)
    220. }
    221. wait_for_available() {
    222. set +e
    223. IP=$1
    224. PORT=$2
    225. echo Waiting for Shipyard on $IP:$PORT
    226. docker pull ehazlett/curl > /dev/null 2>&1
    227. TLS_OPTS=""
    228. if [ $ENABLE_TLS = 1 ]; then
    229. TLS_OPTS="-k"
    230. fi
    231. 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
    232. printf '.'
    233. sleep 1
    234. done
    235. printf '\n'
    236. }
    237. remove_controller() {
    238. docker rm -fv $PREFIX-controller > /dev/null 2>&1
    239. }
    240. if [ "$ACTION" = "deploy" ]; then
    241. set -e
    242. check_certs
    243. get_ip
    244. echo "Deploying Shipyard"
    245. echo " -> Starting Database"
    246. start_rethinkdb
    247. echo " -> Starting Discovery"
    248. start_discovery
    249. echo " -> Starting Cert Volume"
    250. start_certs
    251. echo " -> Starting Proxy"
    252. start_proxy
    253. echo " -> Starting Swarm Manager"
    254. start_swarm_manager
    255. echo " -> Starting Swarm Agent"
    256. start_swarm_agent
    257. echo " -> Starting Controller"
    258. start_controller
    259. wait_for_available $SHIPYARD_IP $SHIPYARD_PORT
    260. echo "Shipyard available at $SHIPYARD_PROTOCOL://$SHIPYARD_IP:$SHIPYARD_PORT"
    261. if [ $ENABLE_TLS = 1 ] && [ ! -z "$CERT_FINGERPRINT" ]; then
    262. echo "SSL SHA-256 Fingerprint: $CERT_FINGERPRINT"
    263. fi
    264. echo "Username: admin Password: shipyard"
    265. elif [ "$ACTION" = "node" ]; then
    266. set -e
    267. if [ -z "$DISCOVERY" ]; then
    268. echo "You must set the DISCOVERY environment variable"
    269. echo "with the discovery system used with Swarm"
    270. exit 1
    271. fi
    272. check_certs
    273. echo "Adding Node"
    274. echo " -> Starting Cert Volume"
    275. start_certs
    276. echo " -> Starting Proxy"
    277. start_proxy
    278. echo " -> Starting Swarm Manager"
    279. start_swarm_manager $DISCOVERY
    280. echo " -> Starting Swarm Agent"
    281. start_swarm_agent
    282. echo "Node added to Swarm: $SHIPYARD_IP"
    283. elif [ "$ACTION" = "upgrade" ]; then
    284. set -e
    285. check_certs
    286. get_ip
    287. echo "Upgrading Shipyard"
    288. echo " -> Pulling $IMAGE"
    289. docker pull $IMAGE
    290. echo " -> Upgrading Controller"
    291. remove_controller
    292. start_controller
    293. wait_for_available $SHIPYARD_IP $SHIPYARD_PORT
    294. echo "Shipyard controller updated"
    295. elif [ "$ACTION" = "remove" ]; then
    296. # ignore errors
    297. set +e
    298. echo "Removing Shipyard"
    299. echo " -> Removing Database"
    300. remove_rethinkdb
    301. echo " -> Removing Discovery"
    302. remove_discovery
    303. echo " -> Removing Cert Volume"
    304. remove_certs
    305. echo " -> Removing Proxy"
    306. remove_proxy
    307. echo " -> Removing Swarm Agent"
    308. remove_swarm_agent
    309. echo " -> Removing Swarm Manager"
    310. remove_swarm_manager
    311. echo " -> Removing Controller"
    312. remove_controller
    313. echo "Done"
    314. else
    315. echo "Unknown action $ACTION"
    316. exit 1
    317. fi

     执行脚本:

    1. [root@docker]-[~/docker-ui]-#./deploy
    2. Unable to find image 'alpine:latest' locally
    3. latest: Pulling from library/alpine
    4. 213ec9aee27d: Pulling fs layer
    5. 213ec9aee27d: Verifying Checksum
    6. 213ec9aee27d: Download complete
    7. 213ec9aee27d: Pull complete
    8. Digest: sha256:bc41182d7ef5ffc53a40b044e725193bc10142a1243f395ee852a8d9730fc2ad
    9. Status: Downloaded newer image for alpine:latest
    10. Deploying Shipyard
    11. -> Starting Database
    12. Unable to find image 'rethinkdb:latest' locally
    13. latest: Pulling from library/rethinkdb
    14. 7a6db449b51b: Pulling fs layer
    15. 20181367ea9b: Pulling fs layer
    16. d4c59a6fbe9d: Pulling fs layer
    17. 54db2c71fcb0: Pulling fs layer
    18. 1e96e4039912: Pulling fs layer
    19. 54db2c71fcb0: Waiting
    20. 1e96e4039912: Waiting
    21. d4c59a6fbe9d: Verifying Checksum
    22. d4c59a6fbe9d: Download complete
    23. 20181367ea9b: Verifying Checksum
    24. 20181367ea9b: Download complete
    25. 1e96e4039912: Download complete
    26. 7a6db449b51b: Download complete
    27. 7a6db449b51b: Pull complete
    28. 20181367ea9b: Pull complete
    29. d4c59a6fbe9d: Pull complete
    30. 54db2c71fcb0: Verifying Checksum
    31. 54db2c71fcb0: Download complete
    32. 54db2c71fcb0: Pull complete
    33. 1e96e4039912: Pull complete
    34. Digest: sha256:bc30f504fc823240c64552a7983b6da55d83dd0966ab17cab12c5fb9e45576ce
    35. Status: Downloaded newer image for rethinkdb:latest
    36. -> Starting Discovery
    37. Unable to find image 'microbox/etcd:latest' locally
    38. latest: Pulling from microbox/etcd
    39. 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/
    40. 8ded6e8ab3fd: Pulling fs layer
    41. bf8f85223d7a: Pulling fs layer
    42. a3ed95caeb02: Pulling fs layer
    43. a3ed95caeb02: Verifying Checksum
    44. a3ed95caeb02: Download complete
    45. bf8f85223d7a: Verifying Checksum
    46. bf8f85223d7a: Download complete
    47. 8ded6e8ab3fd: Verifying Checksum
    48. 8ded6e8ab3fd: Download complete
    49. 8ded6e8ab3fd: Pull complete
    50. bf8f85223d7a: Pull complete
    51. a3ed95caeb02: Pull complete
    52. Digest: sha256:941fd46b4eab265c65da9bfbf33397b853a7cef6c16df93a1e3fea7b4e47fc90
    53. Status: Downloaded newer image for microbox/etcd:latest
    54. -> Starting Cert Volume
    55. -> Starting Proxy
    56. Unable to find image 'shipyard/docker-proxy:latest' locally
    57. latest: Pulling from shipyard/docker-proxy
    58. 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/
    59. 8f4ec95ceaee: Pulling fs layer
    60. ac77a345f217: Pulling fs layer
    61. 43039e3ef672: Pulling fs layer
    62. a3ed95caeb02: Pulling fs layer
    63. a3ed95caeb02: Waiting
    64. 8f4ec95ceaee: Download complete
    65. 8f4ec95ceaee: Pull complete
    66. ac77a345f217: Verifying Checksum
    67. ac77a345f217: Download complete
    68. ac77a345f217: Pull complete
    69. a3ed95caeb02: Verifying Checksum
    70. a3ed95caeb02: Download complete
    71. 43039e3ef672: Verifying Checksum
    72. 43039e3ef672: Download complete
    73. 43039e3ef672: Pull complete
    74. a3ed95caeb02: Pull complete
    75. Digest: sha256:da6bbd1a145581a940d44940cce0f43705d7f8ec552a4e97e77104ec1b6dc3d1
    76. Status: Downloaded newer image for shipyard/docker-proxy:latest
    77. -> Starting Swarm Manager
    78. Unable to find image 'swarm:latest' locally
    79. latest: Pulling from library/swarm
    80. 38e5683d7755: Pulling fs layer
    81. 083aff163606: Pulling fs layer
    82. 2064f1a73c6b: Pulling fs layer
    83. 083aff163606: Verifying Checksum
    84. 083aff163606: Download complete
    85. 2064f1a73c6b: Verifying Checksum
    86. 2064f1a73c6b: Download complete
    87. 38e5683d7755: Verifying Checksum
    88. 38e5683d7755: Download complete
    89. 38e5683d7755: Pull complete
    90. 083aff163606: Pull complete
    91. 2064f1a73c6b: Pull complete
    92. Digest: sha256:2de8883e2933840ed7ee7360ea1eed314bf8aeac37c0692b9ca651630fde3b7f
    93. Status: Downloaded newer image for swarm:latest
    94. -> Starting Swarm Agent
    95. -> Starting Controller
    96. Unable to find image 'dockerclub/shipyard:latest' locally
    97. latest: Pulling from dockerclub/shipyard
    98. 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/
    99. 4d06f2521e4f: Pulling fs layer
    100. 64100628847a: Pulling fs layer
    101. 36a170440d6d: Pulling fs layer
    102. a823ae228c2d: Pulling fs layer
    103. a3ed95caeb02: Pulling fs layer
    104. a823ae228c2d: Waiting
    105. a3ed95caeb02: Waiting
    106. 4d06f2521e4f: Verifying Checksum
    107. 4d06f2521e4f: Download complete
    108. 4d06f2521e4f: Pull complete
    109. 36a170440d6d: Verifying Checksum
    110. 36a170440d6d: Download complete
    111. a3ed95caeb02: Verifying Checksum
    112. a3ed95caeb02: Download complete
    113. 64100628847a: Verifying Checksum
    114. 64100628847a: Download complete
    115. 64100628847a: Pull complete
    116. 36a170440d6d: Pull complete
    117. a823ae228c2d: Verifying Checksum
    118. a823ae228c2d: Download complete
    119. a823ae228c2d: Pull complete
    120. a3ed95caeb02: Pull complete
    121. Digest: sha256:bd5ac58c556506012f7788db18fc6fed3bcefb294e469babbeb87ad7ef15e219
    122. Status: Downloaded newer image for dockerclub/shipyard:latest
    123. Waiting for Shipyard on 10.0.0.100:8080
    124. ........................................
    125. Shipyard available at http://10.0.0.100:8080
    126. Username: admin Password: shipyard

    容器介绍:

    1. [root@docker]-[~/docker-ui]-#docker ps
    2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    3. 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
    4. 1676327a4e5a swarm:latest "/swarm j --addr 10.…" About an hour ago Up About an hour 2375/tcp shipyard-swarm-agent
    5. 2f368d9f81df swarm:latest "/swarm m --replicat…" About an hour ago Up About an hour 2375/tcp shipyard-swarm-manager
    6. 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
    7. e610645dfe8e alpine "sh" About an hour ago Up About an hour shipyard-certs
    8. 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
    9. 307b4cec4659 rethinkdb "rethinkdb --bind all" About an hour ago Up About an hour 8080/tcp, 28015/tcp, 29015/tcp shipyard-rethinkdb
    10. ----------------------------------------------------------------------------------------
    11. 1)RethinkDB
    12. deploy首先启动的就是RethinkDB容器,shipyard采用RethinkDB作为数据库来保存用户等信息
    13. 2)Discovery
    14. 为了使用Swarm,我们需要一个外部的密钥值存储群容器,shipyard默认是采用了etcd。
    15. 3)shipyard_certs
    16. 证书管理容器,实现证书验证功能
    17. 4)Proxy
    18. 默认情况下,Docker引擎只监听Socket,我们可以重新配置引擎使用TLS或者使用一个代理容器,转发请求从TCP到Docker监听的UNIX Socket。
    19. 5)Swarm Manager
    20. Swarm管理器
    21. 6)Swarm Agent
    22. Swarm代理,运行在每个节点上。
    23. 7)Controller
    24. shipyard控制器,Remote API的实现和web的实现。

    3.2.2 页面访问

    访问地址:http://10.0.0.100:8080

    登录用户名/密码:admin/shipyard

     3.3 使用

    3.3.1 容器管理

     部署容器:

     操作容器:

     3.3.2 镜像管理

     下载镜像:

     3.3.3 仓库管理

     添加仓库:

    3.3.4 账户管理

     新增账户:

     3.3.5 日志事件

  • 相关阅读:
    eBPF-3-profile的源码解析
    用幻灯片讲解C++中的C语言风格数组
    [附源码]JAVA毕业设计基于web的面向公众的食品安全知识系统(系统+LW)
    【链表】Leetcode 86. 分隔链表【中等】
    cocos creator编写2048小游戏,发微信小游戏
    APP 备案公钥、签名 MD5、SHA-1、SHA-256获取方法。
    链表(1)
    第一次使用项目管理软件进行项目资源监控,再也不用进行“抢人大战”了!
    基于MATLAB的函数拟合
    SN65HVD3082、SN65HVD3088、SN75HVD3082、SN65HVD3085低功耗RS-485收发器
  • 原文地址:https://blog.csdn.net/zfw_666666/article/details/126538026