推薦使用Dockerfile方式。
成都創新互聯成立十多年來,這條路我們正越走越好,積累了技術與客戶資源,形成了良好的口碑。為客戶提供做網站、成都做網站、網站策劃、網頁設計、域名申請、網絡營銷、VI設計、網站改版、漏洞修補等服務。網站是否美觀、功能強大、用戶體驗好、性價比高、打開快等等,這些對于網站建設都非常重要,成都創新互聯通過對建站技術性的掌握、對創意設計的研究為客戶提供一站式互聯網解決方案,攜手廣大客戶,共同發展進步。
服務的管理使用的是supervisord, 因為dockerfile里只會有一個cmd生效,如果我想通過ssh去管理容器還要有mysql服務的啟動起來 cmd的方式就無法實現,當然容器不需要以sshd的方式去管理,這些也都是看自己怎么去使用,比如說我想備份容器里的數據 我完全可以使用 –volumes-from 容器name , 重啟使用 docker restart 容器id, 我個人也是使用ssh習慣了 所以依賴的鏡像把ssh服務栽進去了。
# docker 版本:
復制代碼
代碼如下:
[root@private_network mysql]# docker version
Client version: 1.6.0-rc5
Client API version: 1.18
Go version (client): go1.4.2
Git commit (client): fc4825d
OS/Arch (client): linux/amd64
Server version: 1.6.0-rc5
Server API version: 1.18
Go version (server): go1.4.2
Git commit (server): fc4825d
OS/Arch (server): linux/amd64[/code]
進入Linux后,使用Docker命令下載MySQL,命令如:
docker pull mysql:5.7
運行該命令后,則會顯示以下日志:
5.7: Pulling from mysql
4c8cbfd2973e: Pull complete
60c52dbe9d91: Pull complete
c2b0136be90f: Pull complete
273cd71eacf0: Pull complete
543ff72402d8: Pull complete
f928e22e58b0: Pull complete
2d1023ecaed4: Pull complete
059dbbef4dd8: Pull complete
ac0ee0367a32: Pull complete
a9057a689e83: Pull complete
5191ddfc3b01: Pull complete
6e2ce31eb835: Pull complete
099dc92e9b15: Pull complete
7b4030a6b20b: Pull complete
fdb9c2185fc2: Already exists
mysql:5.7: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Digest: sha256:d00f3f3cd30d0e8ad9bdf8ba61729ee1a4b6fe84a0fbb95f07dc2668a4cb5d08
Status: Downloaded newer image for mysql:5.7
下載需要一段時間,下載完畢后,啟動Docker容器。
步驟1:為我們的容器創建第一個鏡像
# 以 centos 鏡像作為基礎鏡像,我們啟動自己的容器并在其中執行/bin/bash命令
# 注:-t -i 參數用于創建一個虛擬的命令行。
sudo docker run -t -i centos /bin/bash
現在我們已經成功的運行了自己的第一個容器,并且進入到容器的命令行界面中。在容器中,我們執行下面的命令:
yum -y update # 更新軟件包
yum install which # 安裝which命令
yum install git # 安裝Git
安裝完成后,按 Ctrl + d 來退出容器的命令行。
# 執行sudo docker ps -a,可以看到被我們終止的容器
CONTAINER ID IMAGE COMMAND CREATED……
da9031d3568f centos:6.4 /bin/bash 5 minutes ago…..
把我們所做的改變提交到一個新的容器:
# 這里我們創建一個自己的基礎容器,容器中安裝好了文章中所需的常用工具。讀者的容器 id 可能與文章中的有所不同,以上一步 docker ps -a 的結果為準。
sudo docker commit da90 custom/base
容器成功提交后,執行 sudo docker images ,我們會看到剛才提交的容器(如下面的結果所示)。我們就以這個容器為基礎容器,再來創建一個新的容器。
REPOSITORY TAG IMAGE ID CREATED
custom/base latest 05b6cecd370b 2 minutes ago
centos 6.4 539c0211cd76 10 months ago
centos latest 539c0211cd76 10 months ago…
步驟2:創建新的容器,并安裝 apache
# 以 custom/base 容器為基礎,運行一個新的容器。
sudo docker run -t -i custom/base /bin/bash
# 安裝 httpd
yum install httpd
步驟3:再次提交新的容器
按 Ctrl + d 來退出容器的命令行,然后執行命令:
# 這個命令會把步驟2中我們安裝 httpd 帶來的改變提交到新的名為 custom/httpd 的容器鏡像中。你的容器 id 可能會和文章中有所不同,以 sudo docker ps -a 命令的結果為準。
sudo docker commit aa6e2fc0b94c custom/httpd
你應該已經發現了,我們創建了一個帶有 http 服務器并可以復用的容器鏡像。你可以根據這種思想,為自己所需的每個組件都創建一個容器,然后把這些容器復用于開發環境或者生產環境。
步驟7:運行 http 服務器
# -v will Mount a volume from VM to the container which was also shared from host to Vagrant VM.
# -v 參數把主機共享給虛擬機的一個卷掛載到容器中
# -p forward VM port 80 to container port 80; VM port 80 is mapped to host port 8080 in Vagrantfile
# -p 參數把虛擬機的80端口映射到容器的80端口;虛擬機的80端口在 Vagrantfile 中被綁定到主機的8080端口,也就是:主機8080-虛擬機80-容器80
sudo docker run -t -i -p 80:80 -v /vagrant/htdocs:/var/www/html custom/httpd /bin/bash
# 啟動 Apache
apachectl -k start
進入Linux后,使用Docker命令下載MySQL,命令如:dockerpullmysql:5.7運行該命令后,則會顯示以下日志:5.7:Pullingfrommysql4c8cbfd2973e:Pullcomplete60c52dbe9d91:Pullcompletec2b0136be90f:Pullcomplete273cd71eacf0:Pullcomplete543ff72402d8:Pullcompletef928e22e58b0:Pullcomplete2d1023ecaed4:Pullcomplete059dbbef4dd8:Pullcompleteac0ee0367a32:Pullcompletea9057a689e83:Pullcomplete5191ddfc3b01:Pullcomplete6e2ce31eb835:Pullcomplete099dc92e9b15:Pullcomplete7b4030a6b20b:Pullcompletefdb9c2185fc2:Alreadyexistsmysql:5.7:Theimageyouarepullinghasbeenverified.Important:imageverificationisatechpreviewfeatureandshouldnotbereliedontoprovidesecurity.Digest:sha256:d00f3f3cd30d0e8ad9bdf8ba61729ee1a4b6fe84a0fbb95f07dc2668a4cb5d08Status:Downloadednewerimageformysql:5.7下載需要一段時間,下載完畢后,啟動Docker容器。