天天看點

dockerDescription: test imageDescription: test imageDescription: test imageDescription: test imageDescription: test imageDescription: test imageDescription: test imageDescription: test imagethis is my first dockerfileversion 1.0Author:chenjiao

lxc:Linux container

chroot,根切換;

namespaces:名稱空間

CGroups:控制組

yum install lxc lxc-templates

cd /usr/share/lxc/templates(裡面由很很多不同系統的容器,這裡以centos的容器模闆作為示例)

vim lxc-centos(改裡面的yum源是為了後續建立centos的lxc容器使用,改為iso鏡像的挂載目錄)

首先要把實體機網卡做成網橋,網橋名為:virbr0

簡單使用:

lxc-checkconfi:

檢查系統環境是否滿足容器使用要求

lxc-create:建立lxc容器

lxc-create -n NAME -t TEMPLATE_NAME

lxc-start:啟動容器;

lxc-start -n NAME -d

lxc-info:檢視容器相關的資訊

lxc-info -n NAME

lxc-console:附加至容器的控制台

lxc-console -n NAME -t NUMBER

lxc-stop:停止容器

lxc-destory:删除處于停機狀态的容器

lxc-snapshot:建立和恢複快照

lxc-create -n centos7 -t centos (建立一個centos的lxc)

lxc-start -n centos7(啟動一個centos的lxc)

lxc-info -n centos7

lxc-top -n centos7

lxc-monitor -n centos7

lxc-freeze

lxc-stop -n centos7

lxc-start -n centos7 -d

lxc-console -n centos7 -t 0(登陸到lxc系統中去)

lxc-destroy -n centos7

lxc-snapshot -n cenots7 -L(列出所有的快照)

lxc-snapshot -n centos7

lxc-snashot -n cneots7 -d 快照名

lxc-clone -s centos7 centos7-clone

yum install docker

systemctl start docker

iptable -t nat -Ln

docker search centos

docker pull busybox:latest

docker images

docker pull centos:7

docker pull cenots:6

docker run --name c1 -it centos:latest /bin/bashbr/>[root@a39f07c4ff2f]#

退出容器crtl+P+Q

docker ps

docker ps -a

docker stop c1

docker rm c1

建構鏡像

docker run -it --name c1 centos

[root@a39f07c4ff2f]#yum install net-tools

crtl+P+Q

docker commit -p -a "mageedu <[email protected]>" c1

docker run -it --name c2-net 5bfed5aba96ebr/>[root@a39f07c4ff2f]#ifconfig

docker kill c2-net

docker rm c2-net

docker images --no-trunc

docker tag 5bfed5aba96e mageedu/centos:net-tools

docker tag mageedu/centos:net-tools mageedu/centos:iproute

docker rmi mageedu/centos:net-tools

docker login -u mageedu -p

docker push mageedu/centos:net-tools

導出鏡像:

docker save mageedu/centos:net-toos -o centos-net-tools.tar

導入鏡像:

docker load -i centos-net-tools.tar

登入倉庫

docker login -u mageedu

docker push mageedu/httpd

登出倉庫

docker logout

網絡

節點1的容器去通路節點2容器,首先節點1的容器做snat轉換成節點1的實體ip,通過實體ip去通路節點2的實體ip,然後節點2内的容器做dnat轉換,讓通路節點2的實體ip dnat成節點2的容器。完成整個通信

docker network ls

brctl show

docker network inspect bridge

建立網絡名稱空間

ip netns list

ip netns add r1

ip netns add r2

ip netns exec r2 ifconfig -a

增加并關聯兩張虛拟網卡

ip links add name veth1.1 type veth peer name veth1.2

ip link show

把第一張虛拟網卡放置在第一個名稱空間,并設定ip

ip link set dev veth1.2 netns r1

ip netns exec r1 ifconfig -a

ip netns exec r1 ip link set dev veth1.2 name eth0

ifconfig veth1.1 10.1.0.1/24 up

ip netns exec r1 ifconfig eth0 10.1.0.2/24 up

ping 10.1.0.2

把第兩張虛拟網卡放置在第兩個名稱空間,并設定ip

ip link set dev veth1.1 netns r2

ip nets exec r2 ifconfig veth1.1 10.1.0.3/24 up

ip netns exec r2 ping 10.1.0.2

docker run --name t1 -it --rm busybox

/# ifcofig

/# exit

docker run --name t1 -it --network bridge --rm busybox

/# hostname

docker run --name t1 -it --network none --rm busybox

docker run --name t1 -it --network bridge -h t1.magedu.com --rm busybox

/# cat /etc/hosts

/# cat /etc/resolv.conf

docker run --name t1 -it --network bridge -h t1.magedu.com --dns 114.114.114.114 --rm busybox

docker run --name t1 -it --network bridge -h t1.magedu.com --dns 114.114.114.114 --add-host www.magedu.com:1.1.1.1 --rm busybox

共享網絡模型

docker run --name b1 -ir --rm busybox

/# httpd

docker run --name b2 --network container:b1 -it --rm busybox

/# curl http://127.0.0.1

docker run --name t2 -it --network host --rm busybox

docker network create -d bridge --subnet "172.26.0.0/16" --gateway "172.26.0.1" mybr0

ifconfig

docker run --name t1 -it --net mybr0 busybox

docker run --name t2 -it --net bridge busybox

docker run --name b2 -it -v /data busybox

docker inspect b2

docker run --name b2 -it --rm -v /data/vlolumes/b2:/data busybox

json格式的數組

過濾檢視各項的值,最上層的為根用點号表示

docker inspect -f {{.Mounts}} b2

docker inspect -f {{.NetworkSettins.IPAddress}} b2

容器間共享資料

docker run --name b3 -it --rm -v /data/vlolumes/b2:/data busybox

docker run --name infracon -it -v /data/infracon/volumes/:/data/web/html busybox

docker run --name nginx --network container:infracon --volumes-from infracon -it busybox

docker inspect nginx

如果容器使用nfs作為mysql資料庫的後端存儲,一定要加上nfsvers=3,nolock ,否則會報出 error: 37的錯誤

docker volume create --driver local --opt type=nfs --opt o=addr=192.168.1.200,rw,nfsvers=3,nolock --opt device=:/data volume-nfs

dockerfile

vim Dockerfile

Description: test image

FROM busybox:latest

MAINTAINER "MageEdu <[email protected]>"

#LABEL maintainer="MageEdu <[email protected]>"

COPY index.html /data/web/html/#要以斜線結尾

docker build -t tinyhttpd:v0.1-1 ./

docker run --name tinyweb1 --rm tinyhttpd:v0.1-1 cat /data/web/html/index.html

cp -r /etc/yum.repos.d/ ./

COPY index.html /data/web/html/

COPY yum.repos.d /etc/yum.repos.d/

docker build -t tinyhttpd:v0.1-2 ./

docker run --name tinyweb1 --rm tinyhttpd:v0.1-2 ls /etc/yum.repos.d/

ADD http://nging.org/download/nginx-1.15.2.tar.gz /usr/local/src/

docker build -t tinyhttpd:v0.1-3 ./

docker run --name tinyweb1 --rm tinyhttpd:v0.1-3 ls /usr/local/src/

#ADD http://nging.org/download/nginx-1.15.2.tar.gz /usr/local/src/

ADD nginx-1.15.2.tar.gz /usr/local/src/

docker build -t tinyhttpd:v0.1-4 ./

docker run --name tinyweb1 --rm tinyhttpd:v0.1-4 ls /usr/local/src/

WORKDIR /usr/local/src/

ADD nginx-1.15.2.tar.gz ./

VOLUME /data/mysql/

docker build -t tinyhttpd:v0.1-5 ./

docker run --name tinyweb1 --rm tinyhttpd:v0.1-5 mount

docker inspect tinyweb1

EXPOSE 80/tcp

docker build -t tinyhttpd:v0.1-6 ./

docker run --name tinyweb1 --rm tinyhttpd:v0.1-6 /bin/http -f -h /data/html

curl 172.17.0.6

dock port tinyweb1

docker run --name tinyweb1 --rm -P tinyhttpd:v0.1-6 /bin/http -f -h /data/html

curl 192.168.1.200:32768

ENV DOC_ROOT=/data/web/html/ \

WEB_SERVER_PACKAGE="nginx-1.15.2"

COPY index.html ${DOC_ROOT:-/data/web/html/}

ADD ${WEB_SERVER_PACKAGE}.tar.gz ./

docker build -t tinyhttpd:v0.1-7 ./

docker run --name tinyweb1 --rm -P tinyhttpd:v0.1-7 ls /usr/local/src/

docker run --name tinyweb1 --rm -P tinyhttpd:v0.1-7 printenv

docker run --name tinyweb1 --rm -P -e WEB_SERVER_PACKAGE="nginx-1.15.1" tinyhttpd:v0.1-7

WEB_SERVER_PACKAGE="nginx-1.15.2.tar.gz"

ADD http://nging.org/download/${WEB_SERVER_PACKAGE} /usr/local/src/

RUN cd /usr/local/src/ && \

tar -xf ${WEB_SERVER_PACKAGE}

docker build -t tinyhttpd:v0.1-8 ./

docker run --name tinyweb1 --rm -P tinyhttpd:v0.1-8 ls /usr/local/src/

FROM busybox

LABEL maintainer="MageEdu <[email protected]>" app="http"

ENV WEB_DOC_ROOT="/data/web/html/"

RUN mkdir -p $WEB_DOC_ROOT && \

echo "Busybox http server." > ${WEB_DOC_ROOT}/index.html

CMD /bin/httpd -f -h ${WEB_DOC_ROOT} #這條指令會替換pid為1shell的程序

docker build -t tinyhttpd:v0.2-1 ./

docker image inspect tinyhttpd:v0.2-1 檢視cmd這行

docker run --name tinyweb1 -it --rm -P tinyhttpd:v0.2-1(無法進入互動式,因為為1shell的pid被替換了CMD指令了,因為http指令沒有互動式)

docker run -it tinyweb2 /bin/sh

/# ps

CMD ["/bin/httpd","-f","-h ${WEB_DOC_ROOT}"] #不會以shell的子程序啟動,是以此處的變量不會被替換啟動會報錯,我們所有的變量替換,執行的指令均為shell下面的指令

docker build -t tinyhttpd:v0.2-2 ./

docker image inspect tinyhttpd:v0.2-2 檢視cmd這行注意與上面的差別

docker run --name tinyweb1 -it --rm -P tinyhttpd:v0.2-2 是會報錯

可以把CMD ["/bin/httpd","-f","-h ${WEB_DOC_ROOT}"] 該為CMD ["/bin/sh","-c","/bin/httpd","-f","-h ${WEB_DOC_ROOT}"]

docker build -t tinyhttpd:v0.2-3 ./

docker run --name tinyweb1 -it -P tinyhttpd:v0.2-3執行完自動退出

ENTRYPOINT /bin/httpd -f -h ${WEB_DOC_ROOT}

docker build -t tinyhttpd:v0.2-5 ./

docker run --name tinyweb1 -it --rm -P tinyhttpd:v0.2-5

docker run --name tinyweb1 -it --rm -P tinyhttpd:v0.2-5 ls /data/web/html/# 執行這句會把ls /data/web/html/ 當成參數即ENTRYPOINT /bin/httpd -f -h ${WEB_DOC_ROOT} ls /data/web/html/

改成下面的執行方式即可

docker run --name tinyweb1 -it --rm -P --entrypoint "ls /data/web/html/" tinyhttpd:v0.2-5

如果CMD和ENTRYPOINT都同時定義了那麼CMD的執行會被當成參數附加給ENTRYPOINT

CMD ["/bin/httpd","-f","-h ${WEB_DOC_ROOT}"]

ENTRYPOINT /bin/sh -c

docker build -t tinyhttpd:v0.2-6 ./

docker inspect tinyhttpd:v0.2-6 觀察ENTRYPOINT和CMD這兩行

ENTRYPOINT ["/bin/sh","-c"]

docker build -t tinyhttpd:v0.2-7 ./

docker inspect tinyhttpd:v0.2-7 觀察ENTRYPOINT和CMD這兩行與上面對比

docker run --name tinyweb1 -it --rm -P tinyhttpd:v0.2-7

docker run --name tinyweb1 -it --rm -P tinyhttpd:v0.2-7 "ls /data" 此處的會替換CMD指令,是以指令變成了ENTRYPOINT ["/bin/sh","-c","ls /data"]

cat entrypoint.sh

#!/bin/sh

cat > /etc/nginx/conf.d/www.conf << EOF

server {

server_name ${HOSTNAME};

listen ${IP:-0.0.0.0}:${PORT:-80};

root ${NGX_DOC_ROOT:-/usr/shar/nginx/html};

}

EOF

exec "$@"

FROM nginx:1.14-alpine

LABEL maintainer="MageEdu <[email protected]>"

ENV NGX_DOC_ROOT="/data/web/html/"

ADD index.html ${NGX_DOC_ROOT}

ADD entrypoint.sh /bin/

CMD ["/usr/sbin/nginx","-g","daemon off;"]

ENTRYPOINT ["/bin/entrypoint.sh"]

docker build -t myweb:v0.3-1 ./

docker run --name myweb1 --rm -P myweb:v0.3-1

docker exec -it myweb1 /bin/sh

wget -O - -q localhost

docker run --naem myweb1 --rm -P -e "PORT=8080" myweb:v0.3-1

HEALTHCHECK --start-period=3s CMD wget -O - -q http://${ip:-0.0.0.0}:${PORT:-80}/#檢測容器中服務健康狀況

docker build -t myweb:v0.3-7 ./

docker run --name myweb1 --rm -P -e "PORT=8080" myweb:v0.3-7

ARG author="MageEdu <[email protected]>"

LABEL maintainer="${author}"

docker build --build-arg -t myweb:v0.3-8 ./

docker image inspect myweb:v0.3-8

docker build --build-arg author="pony <[email protected]>" -t myweb:v0.3-9 ./

ONBUILD ADD http://nging.org/download/nginx-1.14.tar.gz /usr/local/src/ #隻有在其他dockerfile引用時才會執行

docker build --build-arg author="pony <[email protected]>" -t myweb:v0.3-11 ./

FROM myweb:v0.3-11

RUN mkdir /tmp/test

docker build -t test:v0.1 ./

registry

yum install docker-registry

cd /etc/docker-distribution/registry/

cat config.yml

systemctl start docker-distribution

ls /var/lib/registry/v2/repositories/myweb

在其他節點上測試push或者pull

docker tag myweb:v0.3-11 192.168.1.200(或者主機名):5000/myweb:v0.3-11

docker push 192.168.1.200:5000/myweb:v0.3-11#會提示https報錯,因為倉庫端時采用的http協定,push,pull預設時https.進行如下修改

vim /etc/docker/daemon.json

{

"insecure-registrites": ["192.168.1.200:5000"]

docker pull 192.168.1.200:5000/myweb:v0.3-11

harbor

yum install docker-compose

tar -zxvf harbor-offline-install-v1.4.0.tar.gz

cd harbor

vim harbor.cfg

hostname = 192.168.1.200

./install.sh

通路192.168.1.200/harbor

在界面操作建立倉庫名等操作

"insecure-registrites": ["192.168.1.200"]

docker tag myweb:v0.3-1 192.168.1.200/devel/myweb:v0.3-1

docker login 192.168.1.200

批量啟動容器

docker-compose start

批量停止容器

docker-compose stop

docker resources

docker pull lorel/docker-stress-ng #壓測鏡像工具

設定256m記憶體限制運作2個程序

docker run --name sress -it --rm -m 256m lorel/docker-stress-ng stress --vm 2 運作後采用下面的指令檢視效果

設定2個cup限制運作8個cpu程序

docker run --name sress -it --rm --cpus 2 lorel/docker-stress-ng stress --cpu 8

設定8個cpu程序運作在哪幾個cpu核心上面

docker run --name sress -it --rm --cpuset-cpus 0,1 lorel/docker-stress-ng stress --cpu 8

設定每個docker容器所限制cpu份額

docker run --name sress -it --rm --cpu-shared 512 lorel/docker-stress-ng stress --cpu 8

docker run --name sress -it --rm --cpu-shared 1024 lorel/docker-stress-ng stress --cpu 8

docker top stess

docker stats

/etc/init.d/docker start

docker pull centos

docker run centos /bin/echo 'Hello world'

docker ps -a

docker run --name mydocker -it centos /bin/bash

docker start mydocker

docker run -d --name mydocker1 centos

docker stop mydocker

docker attach mydocker

docker inspect --format "{{.State.Pid}}" mydocker 查尋容器的pid号

nsenter --target pid号 --mount --uts --ipc --net --pid 進入容器且退出容器不會被關閉

docker run -d -P --name mydocker centos

docker run -d -p 91:80 --name mydocker centos

docker run -it --name volume-test1 -h nginx -v /data nginx

docker inspect -f {{.Volumes}} volume-test1

docker run -it --name volume-test2 -h nginx -v /opt:/opt centos

docker run --it --name volume-test4 --volumes-from volume-test1 centos

docker commmit -m "my nginx" volume-test4 my-nginx:v1

mkdir /opt/docker-file

cd /opt/docker-file

mkdir nginx

cd nginx

this is my first dockerfile

version 1.0

Author:chenjiao

#base images

FROM centos

#MAINTAINER

MAINTAINER chenjiao

#ADD

ADD pcre-8.37.tar.gz /usr/local/src

ADD nginx-1.9.3.tar.gz /usr/local/src

#RUN

RUN yum install -y wget gcc gcc-c++ make openssl-devel

RUN useradd -s /sbin/nologin -M www

#WORKDIR

RUN ./configure --with-pcre=/usr/local/src/pcre-8.37 && make && make install

RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf

ENV PATH /usr/local/nginx/sbin:$PATH

EXPOSE 80

CMD ["nginx"]

docker build -t nginx-file:v1 .

vim Dockerfile

RUN yum install stress

ENTRYPOINT ['stress']

docker run -it --rm stress --cpu 1

docker run -it --rm -c 512 stress --cpu 1

docker run -it --rm -c 1024 stress --cpu 1

docker run -it --rm --cpuset=0 stress --cpu 1

docker rm -it --rm -m 128m stress --vm 1 --vm-bytes 120m --vm-hang 0

docker run -d -p 5001:5000 registry

docker tag elasticsearch 192.168.199.220:5001/test/es:v1

docker push 192.168.199.220:5001/test/es:v1

docker pull 192.168.199.220:5001/test/es:v1

部署webgui界面

docker run -itd --name shipyard-rethinkdb-data --entrypoint /bin/bash shipyard/rethinkdb -l

ENTRYPOINT和CMD的不同點在于執行docker run時參數傳遞方式,CMD指定的指令可以被docker run傳遞的指令覆寫,例如,如果用CMD指定:

...

CMD ["echo"]

然後運作

docker run CONTAINER_NAME echo foo

那麼CMD裡指定的echo會被新指定的echo覆寫,是以最終相當于運作echo foo,是以最終列印出的結果就是:

foo

而ENTRYPOINT會把容器名後面的所有内容都當成參數傳遞給其指定的指令(不會對指令覆寫),比如:

ENTRYPOINT ["echo"]

則CONTAINER_NAME後面的echo foo都作為參數傳遞給ENTRYPOING裡指定的echo指令了,是以相當于執行了

echo "echo foo"

最終列印出的結果就是:

echo foo

另外,在Dockerfile中,ENTRYPOINT指定的參數比運作docker run時指定的參數更靠前,比如:

ENTRYPOINT ["echo", "foo"]

執行

docker run CONTAINER_NAME bar

相當于執行了:

echo foo bar

列印出的結果就是:

foo bar

使用-P和EXPOSE釋出端口

因為EXPOSE通常隻是作為記錄機制,也就是告訴使用者哪些端口會提供服務,Docker可以很容易地把Dockerfile裡的EXPOSE指令轉換成特定的端口綁定規則。隻需要在運作時加上-P參數,Docker會自動為使用者建立端口映射規則,并且幫助避免端口映射的沖突。

添加如下行到上文使用的Web應用Dockerfile裡:

EXPOSE 1000

EXPOSE 2000

EXPOSE 3000

建構鏡像,命名為exposed-ports。

docker build -t exposed-ports .

再次用-P參數運作,但是不傳入任何特定的-p規則。可以看到Docker會将EXPOSE指令相關的每個端口映射到主控端的端口上:

$ docker run -d -P --name exposed-ports-in-dockerfile exposed-ports

63264dae9db85c5d667a37dac77e0da7c8d2d699f49b69ba992485242160ad3a

$ docker port exposed-ports-in-dockerfile

1000/tcp -> 0.0.0.0:49156

2000/tcp -> 0.0.0.0:49157

3000/tcp -> 0.0.0.0:49158

sudo -i為ubuntu切換root帳号

搭建私有倉庫

docker run -d -p 5000:5000 --name registry registry:0.9.1

打标簽

docker tag csphere/csphere:0.11.2 192.168.1.200:5000/csphere/csphere:0.11.2

上傳鏡像

docker push 192.168.1.200:5000/csphere/csphere:0.11.2

mysql:

image: csphere/mysql:5.5

ports:

  • "3306:3306"

    volumes:

    • /var/lib/docker/vfs/dir/dataxc:/var/lib/mysql

      hostname: mydb.server.com

      tomcat:

      image: csphere/tomcat:7.0.55

      • "8080:8080"

        links:

      • mysql:db

        environment:

    • TOMCAT_USER=admin
    • TOMCAT_PASS=admin

      hostname: tomcat.server.com

通過compose一鍵部署多個容器(需要進入到有yaml配置檔案的目錄中)

docker-compose up -d

docker-compose ps

docker-compose rm

jenkins與Docker配合做持續內建

docker run -d -p 8080:8080 --name jenkins -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /root/maven-tar:/root csphere/jenkins:1.609

docker exec -it jenkins /bin/bash

docker create --name maven csphere/maven:3.3.3 (create是建立容器,不運作)

把docker裡面的檔案拷貝到本地

docker cp maven:/hello/target/hello.war .

docker監控

curl -SsL -o /tmp/csphere-install.sh https://csphere.cn/static/csphere-install-v2.sh

sudo env ROLE=controller CSPHERE_VERSION=1.0.1 /bin/sh /tmp/csphere-install.sh

在叢集的節點安裝Agent

通路controller A主機的1016端口 點選左側的“主機”菜單,進入主機清單頁面,

點選添加主機并複制腳本,在Agent主機安裝Agent程式

然後就可以檢視和管理 docker容器了 具體檢視文檔這裡就不多提了

docker日志管理

docker run --name elk -d -p 9200:9200 -p 5601:5601 -p 5000:5000 -e ES_MIN_MEM=64m -e ES_MAX_MEM=512m csphere/elk:1.6.0

docker exec -it elk /bin/bash

/opt/logstash/bin/logstash -e 'input { stdin { } } output { elasticsearch { host => localhost} }'

docker run -d --name fwd --link serene_meitner:log.scphere.cn -v /data/logs:/data/logs csphere/logstash-forwarder:0.4.0

docker網絡

nat網絡

docker run -it --name csphere-nat busybox sh

共享主機網絡

docker run -it --name csphere-host --net=host busybox sh

container和container互訪網絡

docker run -it --name csphere busybox sh

docker run -it --name csphere-con --net=container:csphere busybox sh

none網絡

docker run -it --name csphere-none --net=none busybox sh

overlay跨主機容器間網絡通信需要搭建docker叢集例如consul叢集

docker rm -f $(docker ps -a -q)

nodeserver1:

http://www.cnblogs.com/hutao722/p/9668202.html

mkdir /data

consul agent -server -bootstrap -data-dir /data/consul -bind=0.0.0.0 > /var/log/consul.log

echo "DOCKER_OPTS='--kv-store=consul:localhost:8500" --label=com.docker.network.drive.overlay.bind_interface=eth0 --default-network=overlay:multihost' > /etc/default/docker

restart docker

docker run -it --name test1 busybox sh

docker service ls

配置容器在overlay網絡上面通路外網

docker service publish test-bridge.bridge

docker service attach test1 test-bridge.bridge

docker exec -it test1 sh

nodeclient2:

consul agent -data-dir /data/consul -bind=0.0.0.0 > /var/log/consul.log

consul join $IP(nodeserver1的ip)

echo "DOCKER_OPTS='--kv-store=consul:localhost:8500" --label=com.docker.network.drive.overlay.bind_interface=eth0 --label=com.docker.network.drive.overlay.neighbor_ip=$IP(nodeserver1的ip) --default-network=overlay:multihost' > /etc/default/docker

consul members

docker run -it --name test2 busybox sh

docker compose一鍵部署

db:

container_name: my-db-container

images: csphere/mysql:5.5

  • /root/my-db:/var/lib/mysql

    web:

    container_name: my-web-cintainer

    images: csphere/hello:1.0

    • "80:8080"

      enviroment:

    • DB_HOST=172.17.42.1

docker-compose up -d

docker swarm叢集

https://www.linuxidc.com/Linux/2017-10/147660.htm

三步:

建立叢集token

随便一個随機數即可

建立swarm master節點

vim /etc/sysconfig/docker

DOCKER_OPTS="-H 0.0.0.0:2375 -H unix:///var/run/docker.sock --label label_name=docker1"

docker run -d -p 2376:2375 swarm manage token://{tocker數值}

自己加入swarm叢集

docker run -d swarm join --addr=master的ip位址:2375 token://{tocker數值}