大家好,我是SuieKa。一个在学计算机网络方面的小白,也是在校大二学生,学以致用,实操记载,博文若有毛病,请一定留言哟
目录
- 一、关于Dockerfile
- 1、Dockerfile简介
- 2、Dockerfile指令
- 二、使用Dockerfile简单构建tomcat web服务器
- 三、使用Dockerfile构建LNMP环境
- 四、Docker图形化工具
一、关于Dockerfile
1、Dockerfile简介
在Docker中创建镜像最常用的方式,就是使用Dockerfile。Dockerfile是一个Docker镜像的描述文件,我们可以理解成火箭发射的A、B、C、D…的步骤。Dockerfile其内部包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。
2、Dockerfile指令
FROM:定制的镜像都是基于 FROM 的镜像,也就是指明构建的新镜像是来自于哪个基础镜像。
例:FROM ubuntu:1804
MAINTAINER:指明镜像维护着及其联系方式(一般是邮箱地址),这里也就是构建者的信息。
例:MAINTAINER xxx
RUN:用于执行后面跟着的命令行命令,比如构建镜像时运行的Shell命令: RUN yum -y install httpd
例:有两种格式:
shell格式:RUN yum -y install mysql(RUN <shell指令>)
exec格式: RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test.php dev offline(RUN ["可执行文件", "参数1", "参数2"])
COPY:复制指令,(从当前复制文件到container的指定路径),用法同下ADD,只是不支持自动下载和解压。
例:COPY index.html /var/www/html/(将当前目录下index.html文件拷贝到容器的/var/www/html/目录下)
ADD:ADD 指令和 COPY 的使用格式一致(同样需求下,官方推荐使用 COPY)。功能也类似,不同之处如下:
ADD 的优点:在执行 <源文件> 为 tar 压缩文件的话,压缩格式为 gzip, bzip2 以及 xz 的情况下,会自动复制并解压到目标路径。
ADD 的缺点:在不解压的前提下,无法复制 tar压缩文件。会令镜像构建缓存失效,从而可能会令镜像构建变得比较缓慢。具体是否使用,可以根据是否需要自动解压来决定。
例:ADD php-7.4.5.tar.gz /usr/local/src/(解压当前目录下的源码包到容器指定目录)
ENV:设置环境变量,定义了环境变量,那么在后续的指令中,就可以使用这个环境变量。
例:ENV MYSQL_ROOT_PASSWORD 123456(MYSQL_ROOT_PASSWORD=123456)
USER:用于指定执行后续命令的用户和用户组,这边只是切换后续命令执行的用户(用户和用户组必须提前已经存在)。
例:USER<用户名>[:<用户组>]
EXPOSE:仅仅只是声明端口。
例:EXPOSE <端口1> [<端口2>...]
HEALTHCHECK:用于指定某个程序或者指令来监控 docker 容器服务的运行状态。
例:HEALTHCHECK [选项] CMD <命令>:设置检查容器健康状况的命令
WORKDIR:指定工作目录。用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。(WORKDIR 指定的工作目录,必须是提前创建好的),docker build 构建镜像过程中的,每一个 RUN 命令都是新建的一层。只有通过 WORKDIR 创建的目录才会一直存在。
例:WORKDIR /data
ENTRYPOINT:类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。
例:ENTRYPOINT ["/bin/bash", "-C", "/start.sh"] = ENTRYPOINT /bin/bash -C '/start.sh'
CMD:类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:
CMD 在docker run 时运行。
RUN 是在 docker build。
作用:为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。
例: CMD ["/usr/sbin/sshd", "-D"]
ARG:构建参数,与 ENV 作用一至。不过作用域不一样。ARG 设置的环境变量仅对 Dockerfile 内有效,也就是说只有 docker build 的过程中有效,构建好的镜像内不存在此环境变量。
例:ARG <参数名>[=<默认值>]
VOLUME:定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。
作用:
避免重要的数据,因容器重启而丢失,这是非常致命的。
避免容器不断变大。
ONBUILD:用于延迟构建命令的执行。简单的说,就是 Dockerfile 里用 ONBUILD 指定的命令,在本次构建镜像的过程中不会执行(假设镜像为 test-build)。当有新的 Dockerfile 使用了之前构建的镜像 FROM test-build ,这是执行新镜像的 Dockerfile 构建时候,会执行 test-build 的 Dockerfile 里的 ONBUILD 指定的命令。
注意:
如果 Dockerfile 中如果存在多个 ENTRYPOINT 指令,仅最后一个生效。
如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。
当前dockerfile文件路径下不要放无用的文件,因为会一起打包发送给 docker 引擎,如果文件过多会造成过程缓慢。
二、使用Dockerfile简单构建tomcat web服务器
1、创建目录,上传源码包(需要jdk)
下载地址:tomcat下载
[21:31:06 root@wang-tuxing ~]#mkdir /tomcat
c[21:31:15 root@wang-tuxing ~]#cd /tomcat/
[21:40:46 root@wang-tuxing tomcat]#ls
apache-tomcat-9.0.34.tar.gz jdk-8u221-linux-x64.tar.gz server.xml Dockerfile
2、编辑Dockerfile文件
#vi Dockerfile
+++++++++++++++++++++++++++++++++
FROM centos:7
MAINTAINER wang <"15228416354@163.com">
ADD jdk-8u221-linux-x64.tar.gz /usr/local/
ENV JAVA_HOME /usr/local/jdk-8u221
ADD apache-tomcat-9.0.34.tar.gz /usr/local/
COPY server.xml /usr/local/apache-tomcat-9.0.34/conf
EXPOSE 8080
ENTRYPOINT ["/usr/local/apache-tomcat-9.0.34/bin/catalina.sh","run"]
3、构建tomcat10
注意:因为使用当前路径,后面有个点(.)表示当前
[22:21:57 root@wang-tuxing tomcat]#docker build -t tomcat:v9 .
Sending build context to Docker daemon 206.2MB
Step 1/8 : FROM centos:7
7: Pulling from library/centos
524b0c1e57f8: Pull complete
Digest: sha256:e9ce0b76f29f942502facd849f3e468232492b259b9d9f076f71b392293f1582
Status: Image is up to date for centos:7
---> b5b4d78bc90c
Step 2/8 : MAINTAINER wang <"15228416354@163.com">
---> Running in 282f02664d10
Removing intermediate container 282f02664d10
---> 794fb8dea7f3
Step 3/8 : ADD jdk-8u221-linux-x64.tar.gz /usr/local/
---> 9b4bbfb6be0f
Step 4/8 : ENV JAVA_HOME /usr/local/jdk-8u221
---> Running in 39b0e0fc2f7b
Removing intermediate container 39b0e0fc2f7b
---> df8c49c8e76c
Step 5/8 : ADD apache-tomcat-9.0.34.tar.gz /usr/local/
---> 68346f048f14
Step 6/8 : COPY server.xml /usr/local/apache-tomcat-9.0.34/conf
---> 4b54ce6cfd45
Step 7/8 : EXPOSE 8080
---> Running in d1f34cc85f22
Removing intermediate container d1f34cc85f22
---> 6cd5338a8f0a
Step 8/8 : ENTRYPOINT ["/usr/local/apache-tomcat-9.0.34/bin/catalina.sh","run"]
---> Running in 76e88f1b727c
Removing intermediate container 76e88f1b727c
---> d87f3e3264ef
Successfully built d87f3e3264ef
Successfully tagged tomcat:v9
[22:22:36 root@wang-tuxing tomcat]#echo $?
0
启动容器
[23:19:20 root@wang-tuxing tomcat]#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat v9 f6e0573ff5e6 2 minutes ago 626MB
centos 7 b5b4d78bc90c 3 weeks ago 203MB
[23:19:16 root@wang-tuxing tomcat]#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7df6168fe0b6 tomcat:v9 "/usr/local/apache-t…" About a minute ago Up 25 seconds 0.0.0.0:8080->8080/tcp wang
浏览器访问:http://192.168.1.106:8080
三、使用Dockerfile构建LNMP环境
1、创建工作目录
[17:05:39 root@wang-tuxing ~]#mkdir /docker-lnmp
[17:06:12 root@wang-tuxing ~]#cd /docker-lnmp/
目录总览:
[14:24:07 root@wangzhike101 docker-lnmp]#tree
.
├── Dockerfile
├── libmcrypt-2.5.8.tar.bz2
├── libzip-1.1.2.tar.gz
├── mysql-5.6.48.tar.gz
├── nginx-1.8.1.tar.gz
├── pcre-8.37.tar.bz2
├── php-5.6.13.tar.bz2
└── run.sh
0 directories, 8 files
启动脚本run.sh:
由于我构建后发现,容器一直挂掉,找到的解决办法就是在前台启动脚本中添加 tail -f /dev/null
[14:29:20 root@wangzhike101 docker-lnmp]#vi run.sh
#!/bin/bash
#
#*****************************************************************
#Author: wangzhike
#QQ: 2358468640
#Date: 2020-06-03
#FileName: run.sh
#Copyright(C): 2020 All rights reserved
#*****************************************************************
/usr/local/nginx/sbin/nginx
service mysqld start
/etc/init.d/php-fpm start
tail -f /dev/null
2、编写dockerfile文件
#[14:29:17 root@wangzhike101 docker-lnmp]#vi Dockerfile
#指定镜像
FROM centos:7
#说明镜像维护人信息
MAINTAINER wangzhike <'15228416354@163.com'>
#解决nginx依赖
RUN yum -y install gcc gcc-c++ autoconf automake libtool make zlib zlib-devel openssl openssl-devel pcre* pcre-devel
#安装pcre源码包
ADD pcre-8.37.tar.bz2 /usr/local/src/
##########源码安装nginx-1.8.1#############
#创建用户nginx
RUN useradd -M -u 8001 -s /sbin/nologin nginx
#安装nginx源码包
ADD nginx-1.8.1.tar.gz /usr/local/src/
WORKDIR /usr/local/src/nginx-1.8.1/
RUN ./configure \
--prefix=/usr/local/nginx \
--with-http_dav_module --with-http_stub_status_module \
--with-http_addition_module --with-http_sub_module \
--with-http_flv_module --with-http_mp4_module\
--with-pcre=/usr/local/src/pcre-8.37
RUN sed -i "s/\-Werror//g" objs/Makefile && make -j 3 && make install && cd
#配置Nginx支持php文件(修改三个地方)
RUN sed -i '/2a user nginx nginx;' /usr/local/nginx/conf/nginx.conf
RUN sed -i '46s/^.*$/index index.php index.html index.htm;/' /usr/local/nginx/conf/nginx.conf
RUN sed -i '65,72s/\#//g' /usr/local/nginx/conf/nginx.conf
RUN sed -i '70s/^.*$/fastcgi_param SCRIPT_FILENAME \/usr\/local\/nginx\/html$fastcgi_script_name;/' /usr/local/nginx/conf/nginx.conf
#添加环境变量
RUN echo "export PATH=/usr/local/nginx/sbin:$PATH" > /etc/profile.d/nginx.sh
RUN source /etc/profile.d/nginx.sh
RUN echo "/usr/local/nginx/sbin/nginx &" >> /etc/rc.local
#开启端口
EXPOSE 80
EXPOSE 443
##########安装mysql-5.6.48############
#创建mysql用户
RUN useradd -M -s /sbin/nologin mysql
RUN yum install -y cmake ncurses-devel
RUN yum install -y git gcc gcc-c++
#安装MySQL源码包
ADD mysql-5.6.48.tar.gz /usr/local/src/
WORKDIR /usr/local/src/mysql-5.6.48/
RUN cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL-USER=mysql && make -j 4 && make install
#配置mysql
RUN chown -R mysql:mysql /usr/local/mysql/
RUN cp -f /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
RUN cp -f /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
RUN sed -i '46s/basedir=/basedir=\/usr\/local\/mysql/g' /etc/init.d/mysqld
RUN sed -i '47s/datadir=/datadir=\/usr\/local\/mysql\/data/g' /etc/init.d/mysqld
RUN /usr/local/mysql/scripts/mysql_install_db \
--defaults-file=/etc/my.cnf \
--basedir=/usr/local/mysql/ \
--datadir=/usr/local/mysql/data/ \
--user=mysql
#添加环境变量
RUN echo "export PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql.sh
RUN source /etc/profile.d/mysql.sh
#开启端口
EXPOSE 3306
###########安装PHP-5.6.13##################
#PHP添加libmcrypt拓展及依赖
ADD libmcrypt-2.5.8.tar.bz2 /usr/local/src/
WORKDIR /usr/local/src/libmcrypt-2.5.8/
RUN ./configure --prefix=/usr/local/libmcrypt && make && make install
RUN yum -y install php-pear libxml2-devel libcurl-devel libjpeg-devel libpng-devel freetype freetype-devel libzip libzip-devel
#安装libzip包
ADD libzip-1.1.2.tar.gz /usr/local/src/
WORKDIR /usr/local/src/libzip-1.1.2/
RUN ./configure --prefix=/usr/local/libzip && make && make install
#安装PHP
ADD php-5.6.13.tar.bz2 /usr/local/src/
WORKDIR /usr/local/src/php-5.6.13/
RUN ./configure --prefix=/usr/local/php --with-gd \
--with-zlib --with-mysql=/usr/local/mysql/ \
--with-config-file-path=/usr/local/php --enable-mbstring \
--enable-fpm && make && make install
#创建软链接
RUN ln -s /usr/local/php/bin/* /usr/local/bin
RUN ln -s /usr/local/php/sbin/* /usr/local/sbin/
#配置php和php-fpm
RUN cp -f /usr/local/src/php-5.6.13/php.ini-production /usr/local/php/php.ini
RUN cp -f /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
run echo "user = nginx" >> /usr/local/php/etc/php-fpm.conf
run echo "group = nginx" >> /usr/local/php/etc/php-fpm.conf
RUN cp -f /usr/local/src/php-5.6.13/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
RUN chmod +x /etc/init.d/php-fpm
ADD run.sh /run.sh
RUN chmod +x /run.sh
#写入测试网页
RUN echo "<?php phpinfo(); ?>" > /usr/local/nginx/html/index.php
#开启端口
EXPOSE 9000
#执行启动脚本
CMD ["/run.sh","-g","daemon off;"]
3、构建lnmp环境
[14:29:17 root@wangzhike101 docker-lnmp]#docker build -t centos7:lnmp .
Successfully built 594aa480cf07
Successfully tagged centos7:lnmp
查看镜像
[14:29:17 root@wangzhike101 docker-lnmp]#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos7 lnmp 948904d704de About an hour ago 5.65GB
centos 7 b5b4d78bc90c 4 weeks ago 203MB
创建容器
[14:34:34 root@wangzhike101 docker-lnmp]#docker run -d -it --name lnmp -p 8804:80 948904d704de
eaf0b79b767338bdf5a5aebe832a4046af89d8ff611b76011d956193fdfdd9c0
[14:36:04 root@wangzhike101 docker-lnmp]#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eaf0b79b7673 948904d704de "/run.sh -g 'daemon …" About an hour ago Up About an hour 443/tcp, 3306/tcp, 9000/tcp, 0.0.0.0:8804->80/tcp lnmp
4、浏览器访问测试
http://192.168.1.102:8804/index.html
http://192.168.1.102:8804/index.php
这样就好了,欢迎留言!!!
四、Docker图形化工具
1、DockerUI
优点
# 支持容器管理
# 支持镜像管理
# 基于docker api,自身也是一个容器。
# 稳定性高
# 可动态显示显示容器之间关系图
# 容器管理,增加端口映射,增加系统变量、映射目录等
缺点
# 没有登录验证,因为没有登录体系,目前解决办法是,只开放本地访问,或者通过TLS来对权限进行控制。
# 无法分配某容器给某用户。
# 不支持多主机。
# 不支持集群swarm等
# 功能少
# 不支持控制台命令
直接pull下来后运行
[19:31:41 root@wang-tuxing ~]#docker pull uifd/ui-for-docker
Using default tag: latest
latest: Pulling from uifd/ui-for-docker
841194d080c8: Pull complete
Digest: sha256:fe371ff5a69549269b24073a5ab1244dd4c0b834cbadf244870572150b1cb749
Status: Downloaded newer image for uifd/ui-for-docker:latest
docker.io/uifd/ui-for-docker:latest
运行:
docker run -it -d --name docker-web -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock docker.io/uifd/ui-for-docker
[19:33:46 root@wang-tuxing ~]#docker run -it -d --name docker-web -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock docker.io/uifd/ui-for-docker
5687b0d4415122040e4819813a3667923ffcef5f8059b47829375eaa69b10f9c
[19:34:09 root@wang-tuxing ~]#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5687b0d44151 uifd/ui-for-docker "/ui-for-docker" 2 seconds ago Up 2 seconds 0.0.0.0:9000->9000/tcp docker-web
浏览器访问http://192.168.1.105:9000
直接pull一个busybox运行康康是否存在
[19:34:11 root@wang-tuxing ~]#docker pull busybox
Using default tag: latest
latest: Pulling from library/busybox
d9cbbca60e5f: Pull complete
Digest: sha256:836945da1f3afe2cfff376d379852bbb82e0237cb2925d53a13f53d6e8a8c48c
Status: Downloaded newer image for busybox:latest
docker.io/library/busybox:latest
[19:40:49 root@wang-tuxing ~]#docker run -it busybox
/ #
同步
可视化停止,开启容器操作如下
2、Shipyard(强大)
优点
# 支持镜像管理、容器管理。
# 支持控制台命令
# 容器资源消耗监控
# 支持集群swarm,可以随意增加节点
# 支持控制用户管理权限,可以设置某个容器对某个用户只读、管理权限。
# 有汉化版
缺点
# 启动容器较多,占用每个节点的一部分资源
# 兼容性性不高,可能是我自身原因,经常打不开首页。
pull相关镜像(根据官网,需要相关镜像才能进行安装)
(Datastore:数据库)
[19:43:43 root@wang-tuxing ~]#docker run \
> -it \
> -d \
> --restart=always \
> --name shipyard-rethinkdb \
> rethinkdb
bef7dfe8c6cf31992fd1ff21cbbe2a60abd6cc97e43c593d22a78ea5b5c0709e
(Discovery:发现服务)
[19:49:59 root@wang-tuxing ~]#docker run \
> -it \
> -d \
> -p 4001:4001 \
> -p 7001:7001 \
> --restart=always \
> --name shipyard-discovery \
> microbox/etcd -name 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: Pull complete
bf8f85223d7a: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:941fd46b4eab265c65da9bfbf33397b853a7cef6c16df93a1e3fea7b4e47fc90
Status: Downloaded newer image for microbox/etcd:latest
f1e9137883a477035095e6fb8e22b2c45c5e504e4fab4f2dd7519cdd8b57e4f3
(Proxy:代理)
[19:52:18 root@wang-tuxing ~]#docker run \
> -ti \
> -d \
> -p 2375:2375 \
> --hostname=$HOSTNAME \
> --restart=always \
> --name shipyard-proxy \
> -v /var/run/docker.sock:/var/run/docker.sock \
> -e PORT=2375 \
> shipyard/docker-proxy:latest
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: Pull complete
ac77a345f217: Pull complete
43039e3ef672: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:da6bbd1a145581a940d44940cce0f43705d7f8ec552a4e97e77104ec1b6dc3d1
Status: Downloaded newer image for shipyard/docker-proxy:latest
f22fd7b98449471266518fcc966c8fbfbaa8c35c6605654f9c240961255e642c
(Swarm Manager:集群管理)
注意:以下填写centos的IP地址
[19:53:40 root@wang-tuxing ~]#docker run \
> -ti \
> -d \
> --restart=always \
> --name shipyard-swarm-manager \
> swarm:latest \
> manage --host tcp://0.0.0.0:3375 etcd://192.168.1.105:4001
Unable to find image 'swarm:latest' locally
latest: Pulling from library/swarm
d85c18077b82: Pull complete
1e6bb16f8cb1: Pull complete
85bac13497d7: Pull complete
Digest: sha256:b866583a3b8791bcd705b7bc0fd94c66b695a1a2dbaeb5f59ed29940e5015dc8
Status: Downloaded newer image for swarm:latest
cac00c6302b53d5e76603a0a293b4e2e256cd61eb7d95be4b5e74703f818f164
(Controller:控制节点)
[19:55:11 root@wang-tuxing ~]#docker run \
> -ti \
> -d \
> --restart=always \
> --name shipyard-controller \
> --link shipyard-rethinkdb:rethinkdb \
> --link shipyard-swarm-manager:swarm \
> -p 8080:8080 \
> shipyard/shipyard:latest \
> server \
> -d tcp://swarm:3375
Unable to find image 'shipyard/shipyard:latest' locally
latest: Pulling from shipyard/shipyard
cb5507795515: Pull complete
fd711d385b34: Pull complete
9f2a509de079: Pull complete
a5251eb716bb: Pull complete
Digest: sha256:5f065362680fa4565dd150c8da3edd09b79a7a3010d3ceef20093c2a879187e0
Status: Downloaded newer image for shipyard/shipyard:latest
113d148133c42e9c4eb3b381d9bc84ca03370c0a2e8766ad684b0a85de800a75
查看镜像是否跑起来
好了就可以访问了http://192.168.1.105:8080
注意:我在测试的时候是访问不了的,所以我直接使用脚本一键安装
脚本下载地址:一键安装脚本
[20:07:11 root@wang-tuxing ~]#ls
shipyard-deploy
[20:07:41 root@wang-tuxing ~]#chmod 755 shipyard-deploy
[20:07:54 root@wang-tuxing ~]#sh shipyard-deploy
Unable to find image 'alpine:latest' locally
latest: Pulling from library/alpine
df20fa9351a1: Pulling fs layer
df20fa9351a1: Verifying Checksum
df20fa9351a1: Download complete
df20fa9351a1: Pull complete
Digest: sha256:185518070891758909c9f839cf4ca393ee977ac378609f700f60a771a2dfe321
Status: Downloaded newer image for alpine:latest
Deploying Shipyard
-> Starting Database
Unable to find image 'rethinkdb:latest' locally
latest: Pulling from library/rethinkdb
afb6ec6fdc1c: Pulling fs layer
34bbb42f3811: Pulling fs layer
0e549bc572ab: Pulling fs layer
c82a54f84934: Pulling fs layer
0db2f23689c7: Pulling fs layer
c82a54f84934: Waiting
0db2f23689c7: Waiting
0e549bc572ab: Verifying Checksum
0e549bc572ab: Download complete
34bbb42f3811: Verifying Checksum
34bbb42f3811: Download complete
0db2f23689c7: Verifying Checksum
0db2f23689c7: Download complete
c82a54f84934: Verifying Checksum
c82a54f84934: Download complete
afb6ec6fdc1c: Verifying Checksum
afb6ec6fdc1c: Download complete
afb6ec6fdc1c: Pull complete
34bbb42f3811: Pull complete
0e549bc572ab: Pull complete
c82a54f84934: Pull complete
0db2f23689c7: Pull complete
Digest: sha256:63bdac5aa30ea52505f4baf8ee0c8b26e12d460cbf603ec6904fa9ab60a8aa81
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: 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
43039e3ef672: Verifying Checksum
43039e3ef672: Download complete
ac77a345f217: Verifying Checksum
ac77a345f217: Download complete
a3ed95caeb02: Verifying Checksum
a3ed95caeb02: Download complete
8f4ec95ceaee: Verifying Checksum
8f4ec95ceaee: Download complete
8f4ec95ceaee: Pull complete
ac77a345f217: Pull 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
d85c18077b82: Pulling fs layer
1e6bb16f8cb1: Pulling fs layer
85bac13497d7: Pulling fs layer
85bac13497d7: Verifying Checksum
85bac13497d7: Download complete
1e6bb16f8cb1: Verifying Checksum
1e6bb16f8cb1: Download complete
d85c18077b82: Verifying Checksum
d85c18077b82: Download complete
d85c18077b82: Pull complete
1e6bb16f8cb1: Pull complete
85bac13497d7: Pull complete
Digest: sha256:b866583a3b8791bcd705b7bc0fd94c66b695a1a2dbaeb5f59ed29940e5015dc8
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
64100628847a: Verifying Checksum
64100628847a: Download complete
64100628847a: Pull complete
36a170440d6d: Verifying Checksum
36a170440d6d: Download complete
a3ed95caeb02: Verifying Checksum
a3ed95caeb02: Download 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 192.168.1.105:8080
Shipyard available at http://192.168.1.105:8080
Username: admin Password: shipyard
访问:http://192.168.1.105:8080
登录后加载会很慢
3、Portainer
pull下载镜像运行(注意:注意端口冲突)
优点
支持容器管理、镜像管理(导入、导出)。
轻量级,消耗资源少。
基于docker api,安全性高,可指定docker api端口,支持TLS证书认证。
支持权限分配。
支持集群。
github上目前持续维护更新。
缺点
N/A
[20:12:25 root@wang-tuxing ~]#docker pull portainer/portainer
Using default tag: latest
latest: Pulling from portainer/portainer
d1e017099d17: Pull complete
b8084bf83dcf: Pull complete
Digest: sha256:55c7614b1ad61eabc27214299c42d41bb49e5ef78238c0e5783031f041499284
Status: Downloaded newer image for portainer/portainer:latest
docker.io/portainer/portainer:latest
[20:31:20 root@wang-tuxing ~]#docker run -d -p 9000:9000 --name portainer -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
0f17e3c6f8383e588ed396124abaa53a8be0d26862cf99106695f3aea9ccc946
[20:32:09 root@wang-tuxing ~]#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0f17e3c6f838 portainer/portainer "/portainer" 34 seconds ago Up 33 seconds 9000/tcp, 0.0.0.0:9000->9000/tcp portainer
提示修改密码
然后选择连接的是本地还是远端的Docker,我这里选择local
创建容器,直接选择相应的模板镜像并创建Container,步骤为(例如:)
点击 Show advanced options可设置高级配置信息。完成设置后,点击Deploy the Container。
启动新创建容器,只需选中之后,点击上方的Start按钮即可。也可以点击Restart、Stop、Pause、Remove等按钮分别实现重新启动、停止、暂停、移除等功能。
查看是否构建容器和启动容器
[21:12:17 root@wang-tuxing ~]#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c837ac4c8021 nginx:latest "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp nginx
[21:25:00 root@wang-tuxing ~]#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 4571e56e27f0 13 hours ago 132MB
在此三个docker可视化工具平台就不讲那么多了,毕竟应为是可视化,许多功能自己就能化解哈