docker開放2375挖礦
⑴ docker api 開發的埠怎麼獲取
漏洞發現的起因是,有一位同學在使用docker swarm的時候,發現了管理的docker 節點上會開放一個TCP埠2375,綁定在0.0.0.0上,
⑵ docker鏡像如何實現共享
青雲QingCloud日前宣布推出Docker鏡像倉庫服務。該服務包括Docker公有鏡像倉庫和Harbor私有鏡像倉庫,用戶可以根據需求選擇適合的鏡像倉庫方案。Docker鏡像倉庫的推出,標志著QingCloud容器平台的進一步完善,包含Kubernetes容器編排及管理、Harbor私有鏡像倉庫、Docker公有鏡像倉庫、etcd鍵值存儲服務、SDN網路直通服務等在內的一系列容器應用與服務,並聯合Rancher、希雲等容器領域的合作夥伴,幫助用戶快速進行容器相關的應用開發、部署和升級,大幅降低容器應用的開發和管理門檻。
此次推出的Docker公有鏡像倉庫免費為用戶提供安全可靠、簡單易用、兼容開放的Docker鏡像集中存儲與分發服務,支持創建多個Docker命名空間和多個Docker用戶,靈活地管理用戶的Docker鏡像。Docker公有鏡像倉庫底層基於QingStor對象存儲,為用戶提供海量的鏡像存儲服務。此外,QingCloud還提供Harbor私有鏡像倉庫,便於用戶一鍵部署高可用、高安全、高性能的Docker鏡像倉庫。
青雲QingCloud容器平台是通過QingCloud AppCenter交付的一套完整的容器部署與管理平台,支持多種雲端容器部署方式,並提供鏡像倉庫、調度與編排、服務感知、跨平台管理等容器管理功能。QingCloud 容器平台充分整合了QingCloud IaaS平台的高性能網路及存儲能力,為容器平台提供極致的性能保障,支持企業用戶一鍵部署高可用、高可靠、高性能的容器平台。
青雲QingCloud完整的企業級容器服務平台有如下亮點:
雲平台深度整合:與青雲QingCloud雲平台深度集成,充分整合QingCloud IaaS底層的SDS(軟體定義存儲)與SDN(軟體定義網路)能力,提供SDN網路直通及存儲持久化方案,為容器運行環境提供極致的網路及存儲性能支持。
一鍵部署、輕量運維:應用通過QingCloud AppCenter框架交付,一鍵完成部署,持續升級,提供創建、擴容、健康監測、用戶管理等應用全生命周期管理功能,並提供完善的服務監控及日誌功能,是實踐DevOps的絕佳之路。
兼容與開放:QingCloud Kubernetes容器服務完全兼容原生API語法,將用戶的學習和遷移成本降至最低,基於Kubernetes開發的原生應用也可以無縫遷移至QingCloud平台。
統一架構:QingCloud IaaS實現了在同一套技術架構下對虛擬主機、物理主機(Bare Metal Service)和容器進行統一的管理和運維,三者之間可以在統一的網路和存儲環境下實現無縫互通及共享資源,避免了系統的割裂。
青雲QingCloud CTO甘泉表示,結合QingCloud在IaaS和AppCenter上的技術優勢,QingCloud推出的容器平台能夠為企業級用戶提供一鍵部署、彈性伸縮、極致性能的容器服務,為用戶輕松構建Docker服務、DevOps平台及微服務架構提供技術平台支持。未來,QingCloud將深度參與各類容器開源項目,聯合更多容器領域合作夥伴,為用戶提供一站式的容器平台服務。
⑶ 如何讓 docker 監聽 2375 埠
命令沒問題,檢查下你的nginx,然後用docker ps看看具體埠映射情況,然後還可以通過exec 進容器,在內部curl localhost看看
⑷ 如何使用docker部署web應用
步驟一 - 創建Dockerfile
如下的Dockerfile可以滿足以上的要求:
**FROM** golang:1.6
*# Install beego and the bee dev tool*
**RUN** go get github.com/astaxie/beego && go get github.com/beego/bee
*# Expose the application on port 8080*
**EXPOSE** 8080
*# Set the entry point of the container to the bee command that runs the*
*# application and watches for changes*
**CMD** ["bee", "run"]
第一行,
FROM golang:1.6
將Go的官方映像文件作為基礎映像。該映像文件預安裝了 Go 1.6 . 該映像已經把 $GOPATH 的值設置到了 /go 。所有安裝在 /go/src 中的包將能夠被go命令訪問。
第二行,
RUN go get github.com/astaxie/beego && go get github.com/beego/bee
安裝 beego 包和 bee 工具。 beego 包將在應用程序中使用。 bee 工具用語在開發中再現地重新載入咱們的代碼。
第三行,
EXPOSE 8080
在開發主機上利用容器為應用程序開放8080埠。
最後一行,
CMD ["bee", "run"]
使用bee命令啟動應用程序的在線重新載入。
步驟二 - 構建image
一旦創建了Docker file,運行如下的命令來創建image:
docker build -t ma-image .
執行以上的命令將創建名為ma-image的image。該image現在可以用於使用該應用程序的任何人。這將確保這個團隊能夠使用一個統一的開發環境。
為了查看自己的系統上的image列表,運行如下的命令:
docker images
這行該命令將輸出與以下類似的內容:
REPOSITORY TAG IMAGE ID CREATED SIZE
ma-image latest 8d53aa0dd0cb 31 seconds ago 784.7 MB
golang 1.6 22a6ecf1f7cc 5 days ago 743.9 MB
注意image的確切名字和編號可能不同,但是,應該至少看到列表中有 golang 和 ma-image image。
步驟三 - 運行容器
一旦 ma-image 已經完成,可以使用以下的命令啟動一個容器:
docker run -it --rm --name ma-instance -p 8080:8080 \
-v /app/MathApp:/go/src/MathApp -w /go/src/MathApp ma-image
讓咱們分析一下上面的命令來看看它做了什麼。
。docker run命令用於從一個image上啟動一個容器
。-it 標簽以交互的方式啟動容器
。--rm 標簽在容器關閉後將會將其清除
。--name ma-instance 將容器命名為ma-instance
。-p 8080:8080 標簽允許通過8080埠訪問該容器
。-v /app/MathApp:/go/src/MathApp更復雜一些。它將主機的/app/MathApp映射到容器中的/go/src/MathApp。這將使得開發文件在容器的內部和外部都可以訪問。
。ma-image 部分聲明了用於容器的image。
執行以上的命令將啟動Docker容器。該容器為自己的應用程序開發了8080埠。無論何時做了變更,它都將自動地重構自己的應用程序。自己將在console(控制台)上看到以下的輸出:
bee :1.4.1
beego :1.6.1
Go :go version go1.6 linux/amd64
2016/04/10 13:04:15 [INFO] Uses 'MathApp' as 'appname'
2016/04/10 13:04:15 [INFO] Initializing watcher...
2016/04/10 13:04:15 [TRAC] Directory(/go/src/MathApp)
2016/04/10 13:04:15 [INFO] Start building...
2016/04/10 13:04:18 [SUCC] Build was successful
2016/04/10 13:04:18 [INFO] Restarting MathApp ...
2016/04/10 13:04:18 [INFO] ./MathApp is running...
2016/04/10 13:04:18 [asm_amd64.s:1998][I] http server Running on :8080
⑸ Mac 上裝了Docker,但我的Docker服務怎麼對外開放
使Docker提供對外服務的網路配置(橋接與埠)
峰雲,就她了。
前沿:
docker 啟動容器後,如何對外服務? 希望大家看了這篇文章後有些幫助。
docker的有關網路問題沒怎麼搞清楚,請教 !
Docker生成的容器,一般會給你生成一個ip地址,這個ip地址是和docker0的地址是一個ip段的。
通過ip a命令 ,咱們可以看到docker0的ip和子網的范圍 。 大家會發現除了docker0 還有一個vethc 數字的網卡,這個也算是虛擬網卡綁在橋接上的。
我們創建一個容器,並且暴露22埠。 這個22埠的意思是對外暴露了22埠,系統會從49000-49900埠范圍內給你分配一個埠。
docker run 指明埠有兩種的方式,一種是-P ,他是識別容器里的dockerfile聲明的埠關系。 還有一個是-p 這個是小屁屁,他就可以直白點了。 比如 -p 6379,是對外暴露了6379。 6379:6379 是外面是6379,裡面也是6379 。
root@dev-ops:~# docker run -d -p 22 --name="redis_test" rastasheep/ubuntu-sshd
root@dev-ops:~#
root@dev-ops:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ed7887b93aa4 rastasheep/ubuntu-sshd:latest /usr/sbin/sshd -D 7 seconds ago Up 7 seconds 0.0.0.0:49153->22/tcp redis_test
root@dev-ops:~#
原來我以為docker是寫了一個socker做了埠的映射功能,看文檔才知道,他就是調用了一個 iptable的埠映射。
iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DOCKER all -- anywhere anywhere ADDRTYPE match dst-type LOCAL
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DOCKER all -- anywhere !127.0.0.0/8 ADDRTYPE match dst-type LOCAL
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- localhost/16 !localhost/16
Chain DOCKER (2 references)
target prot opt source destination
DNAT tcp -- anywhere anywhere tcp dpt:49153 to:172.17.0.2:22
root@dev-ops:~#
有主機的ip,和容器的ip,那你還怕啥 ! 想映射什麼,自己映射。
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 172.31.0.23:80
docker之間的容器默認是互通的,也就是兩個容器可以互相的通信。 如果想控制容器之間的通信,可以利用 docker 的 --icc 屬性控制。
好了,我們在說下橋接的方式。 如果你覺得麻煩,每次都需要做埠的映射,或者是修改映射,那你可以考慮下用橋接網卡的模式。 貌似一些論壇上的牛人不太推薦用橋接,估計是為了安全的問題。 畢竟nat的話,對外是安全的,對外的服務也只是暴露出埠而已。 而橋接的話,會暴露ip出去。
暫停docker服務
sudo service docker stop
用ip命令使docker0網卡down掉
sudo ip link set dev docker0 down
刪除網卡
sudo brctl delbr docker0
創建一個網卡 名字是bridge0
sudo brctl addbr bridge0
ip地址和子網
ip addr add 192.168.5.1/24 dev bridge0
啟動橋接網卡
sudo ip link set dev bridge0 up
寫入配置
echo 'DOCKER_OPTS="-b=bridge0"' >> /etc/default/docker
sudo service docker start
這樣的橋接方式有個問題就是,他的ip是docker自己檢測搞給你的,貌似不是dhcp獲取空閑的,然後賦予給容器的。我昨天再次做測試的時候,有一個ip被佔用的,但是他還是分噴給了一個被佔用的ip地址。 這樣的話就沖突了。 如果ip端和公司內部或者是線上重疊的話,可能會造成ip地址的沖突。 橋接後遇到ip地址沖突是個人結論 ,也可能是我這邊環境導致的這類問題!
⑹ 如何訪問docker里的redis
創建一個redis docker容器
首先,我們先為redis創建一個Dockerfile
FROM ubuntu:12.10
RUN apt-get update
RUN apt-get -y install redis-server
EXPOSE 6379
ENTRYPOINT ["/usr/bin/redis-server"]
現在你需要通過Dockerfile創建一個鏡像,將替換成你自己的名字。
sudo docker build -t /redis .
運行服務
使用我們剛才創建的redis鏡像
使用 -d 運行這個服務分離模式,讓容器在後台運行。
重要的是我們沒有開放容器埠,相反,我們將使用一個容器來連接redis容器資料庫
sudo docker run -name redis -d /redis
創建你的web應用容器
現在我們可以創建我們的應用程序容器,我們使用-link參數來創建一個連接redis容器,我們使用別名db,這將會在redis容器和redis實例容器中創建一個安全的通信隧道
sudo docker run -link redis:db -i -t ubuntu:12.10 /bin/bash
進入我們剛才創建的容器,我們需要安裝redis的redis-cli的二進制包來測試連接
apt-get update
apt-get -y install redis-server
service redis-server stop
現在我們可以測試連接,首先我么要先查看下web應用程序容器的環境變數,我們可以用我們的ip和埠來連接redis容器
env
. . .
DB_NAME=/violet_wolf/db
DB_PORT_6379_TCP_PORT=6379
DB_PORT=tcp://172.17.0.33:6379
DB_PORT_6379_TCP=tcp://172.17.0.33:6379
DB_PORT_6379_TCP_ADDR=172.17.0.33
DB_PORT_6379_TCP_PROTO=tcp
我們可以看到我們有一個DB為前綴的環境變數列表,DB來自指定別名連接我們的現在的容器,讓我們使用DB_PORT_6379_TCP_ADDR變數連接到Redis容器。
redis-cli -h $DB_PORT_6379_TCP_ADDR
redis 172.17.0.33:6379>
redis 172.17.0.33:6379> set docker awesome
OK
redis 172.17.0.33:6379> get docker
"awesome"
redis 172.17.0.33:6379> exit
我們可以很容易的使用這個或者其他環境變數在我們的web應用程序容器上連接到redis容器
⑺ 如何在容器中運行docker命令
我們可以輕易地在Docker容器中運行大多數GUI程序且不出錯。Docker是一個開源項目,提供了一個打包、分發和運行任意程序的輕量級容器
的開放平台。它沒有語言支持、框架或者打包系統的限制,並可以運行在任何地方、任何時候,從小型的家用電腦到高端的伺服器都可以運行。這讓人們可以打包不
同的包用於部署和擴展網路應用,資料庫和後端服務而不必依賴於特定的棧或者提供商。
下面是我們該如何在Docker容器中運行GUI程序的簡單步驟。本教程中,我們會用Firefox作為例子。
1. 安裝 Docker
在開始前,我們首先得確保在Linux主機中已經安裝了Docker。這里,我運行的是CentOS 7 主機,我們將運行yum管理器和下面的命令來安裝Docker。
# yum install docker
# systemctl restart docker.service
2. 創建 Dockerfile
現在,Docker守護進程已經在運行中了,我們現在准備創建自己的Firefox
Docker容器。我們要創建一個Dockerfile,在其中我們要輸入需要的配置來創建一個可以工作的Firefox容器。為了運行 Docker
鏡像我們需要使用最新版本的CentOS。要創建 Docker 鏡像,我們需要用文本編輯器創建一個名為Dockerfile的文件。
# nano Dockerfile
接著,在Dockerfile中添加下面的行並保存。
#!/bin/bash
FROM centos:7
RUN yum install -y firefox
# 用你自己的 uid /gid 替換下面的0
RUN export uid=0 gid=0
RUN mkdir -p /home/developer
RUN echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash">>/etc/passwd
RUN echo "developer:x:${uid}:">>/etc/group
RUN echo "developer ALL=(ALL) NOPASSWD: ALL">>/etc/sudoers
RUN chmod 0440/etc/sudoers
RUN chown ${uid}:${gid}-R /home/developer
USER developer
ENV HOME /home/developer
CMD /usr/bin/firefox
注意:在第四行的配置中,用你自己的用戶和組id來替換0。 我們可以用下面的命令在shell或者終端中得到uid和gid。
# id $USER
3. 構造Docker容器
下面我們就要根據上面的Dockerfile構建一個容器。它會安裝firefox瀏覽器和它需要的包。它接著會設置用戶許可權並讓它可以工作。這里鏡像名是firefox,你可以根據你的需要命名。
# docker build --rm -t firefox .
4. 運行Docker容器
現在,如果一切順利,我們現在可以在運行在CentOS 7鏡像中的Docker容器裡面運行我們的GUI程序也就是Firefox瀏覽器了。
# docker run -ti --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix firefox
總結
在Docker容器中運行GUI程序是一次很棒的體驗,它對你的主機文件系統沒有任何的傷害。它完全依賴你的Docker容器。
⑻ 如何從零開始搭建Docker Swarm集群
檢查節點Docker配置 1. 打開Docker配置文件(示例是centos 7)vim /etc/sysconfig/docker2. 添加-H tcp://0.0.0.0:2375到OPTIONSOPTIONS='-g /cutome-path/docker -H tcp://0.0.0.0:2375'3. CentOS6.6 需要另外添加-H unix:///var/run/docker.so...
⑼ 如何訪問docker swarm
檢查節點Docker配置 1. 打開Docker配置文件(示例是centos 7)vim /etc/sysconfig/docker2. 添加-H tcp://0.0.0.0:2375到OPTIONSOPTIONS='-g /cutome-path/docker -H tcp://0.0.0.0:2375'3. CentOS6
⑽ 如何解決docker宿主機無法訪問容器中的服務
有時候,查看資源管理器你會發現一個奇怪的現象。物理內存使用率沒超過50%,就開始使用swap空間了。用swap顯然沒有使用物理內存快。如何修改?
在ubuntu 裡面,swappiness的值的大小對如何使用swap分區是有著很大的聯系的。
swappiness=0的時候表示最大限度使用物理內存,然後才是 swap空間;swappiness=100的時候表示積極的使用swap分區,並且把內存上的數據及時的搬運到swap空間裡面。兩個極端,對於 ubuntu的默認設置,這個值等於60,建議修改為10。具體這樣做:
1、查看你的系統裡面的swappiness,在終端輸入 cat /proc/sys/vm/swappiness,不出意外結果應該是60
2、修改swappiness值為10。在終端輸入 sudo gedit /etc/sysctl.conf ,然後在最後一行添加 vm.swappiness=10 ,保存。
3、重啟電腦,使設置生效。
這樣Ubuntu就能最大限度使用物理內存了!!