大家好,我是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指令

docker蓝图配置_linux


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 引擎,如果文件过多会造成过程缓慢。

docker蓝图配置_linux_02


docker蓝图配置_docker蓝图配置_03

二、使用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

docker蓝图配置_docker_04

三、使用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

docker蓝图配置_数据库_05


http://192.168.1.102:8804/index.php

docker蓝图配置_linux_06


这样就好了,欢迎留言!!!

四、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

docker蓝图配置_linux_07


直接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
/ #

docker蓝图配置_linux_08


docker蓝图配置_docker_09


docker蓝图配置_linux_10


同步

可视化停止,开启容器操作如下

docker蓝图配置_docker_11

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

查看镜像是否跑起来

docker蓝图配置_数据库_12


好了就可以访问了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

docker蓝图配置_docker_13


登录后加载会很慢

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蓝图配置_docker蓝图配置_14


然后选择连接的是本地还是远端的Docker,我这里选择local

docker蓝图配置_linux_15


创建容器,直接选择相应的模板镜像并创建Container,步骤为(例如:)

docker蓝图配置_linux_16


docker蓝图配置_docker_17


点击 Show advanced options可设置高级配置信息。完成设置后,点击Deploy the Container。

docker蓝图配置_centos_18


启动新创建容器,只需选中之后,点击上方的Start按钮即可。也可以点击Restart、Stop、Pause、Remove等按钮分别实现重新启动、停止、暂停、移除等功能。

docker蓝图配置_linux_19


查看是否构建容器和启动容器

[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可视化工具平台就不讲那么多了,毕竟应为是可视化,许多功能自己就能化解哈