Docker應用容器引擎
Docker是一種應用容器引擎 打包應用成映象到其Linux伺服器使用
可以把你的安裝了Java開發環境的Linux系統打包成映象,其他人可使用這個映象,執行這個映象的稱為容器, 容器啟動是非常快速的
http://hub.docker.com/ (搜尋docker hub可找到)
使用Docker的步驟:
1)、安裝Docker (Linux虛擬機器上輸入 yum install docker)
2)、去Docker倉庫找到這個軟體對應的映象;
3)、使用Docker執行這個映象,這個映象就會生成一個Docker容器;
4)、對容器的啟動停止就是對軟體的啟動停止;
在linux虛擬機器上安裝docker
1、檢查核心版本,必須是3.10及以上
uname -r
2、安裝docker
yum install docker
3、輸入y確認安裝
4、啟動docker
[
[[email protected] ~]# docker -v
Docker version 1.12.6, build 3e8e77d/1.12.6
5、開機啟動docker
[[email protected] ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
6、停止docker
systemctl stop docker
Docker常用命令&操作
1)、映象操作
啟動docker : systemctl start docker / service docker start
下載MySQL映象 docker pull mysql 、 docker pull java
檢索映象的詳細資訊,如映象的TAG docker search redis
檢視所有本地映象 docker images
刪除指定的本地映象 docker rmi image-id
2)、容器操作
軟體映象(QQ.exe安裝程式)----執行映象----產生一個容器(正在執行的軟體,執行的QQ);
步驟:
1、搜尋映象 [[email protected] ~]# docker search tomcat 2、拉取映象 [[email protected] ~]# docker pull tomcat 3、根據映象啟動容器 tomcat是latest最新版本 docker run --name mytomcat -d tomcat:latest 4、docker ps 檢視執行中的容器 5、 停止執行中的容器 docker stop 容器的id 6、檢視所有的容器 docker ps -a 7、啟動容器 docker start 容器id 8、刪除一個容器 docker rm 容器id 9、啟動一個做了埠對映的tomcat [[email protected] ~]# docker run -d -p 8888:8080 tomcat -d:後臺執行 -p: 將主機的8888埠對映到容器內部的一個埠(8080) 主機埠:容器內部的埠 10、為了演示簡單關閉了linux的防火牆 service firewalld status ;檢視防火牆狀態 service firewalld stop:關閉防火牆 11、檢視容器的日誌 docker logs container-name/container-id 更多命令參看 https://docs.docker.com/engine/reference/commandline/docker/ 可以參考每一個映象的文件
Tomcat埠對映後能瀏覽器訪問了
一個映象可啟動多個容器
3)、安裝MySQL示例
docker pull mysql
錯誤的啟動
[[email protected] ~]# docker run --name mysql01 -d mysql
42f09819908bb72dd99ae19e792e0a5d03c48638421fa64cce5f8ba0f40f5846
mysql退出了
[[email protected] ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
42f09819908b mysql "docker-entrypoint.sh" 34 seconds ago Exited (1) 33 seconds ago mysql01
538bde63e500 tomcat "catalina.sh run" About an hour ago Exited (143) About an hour ago compassionate_
goldstine
c4f1ac60b3fc tomcat "catalina.sh run" About an hour ago Exited (143) About an hour ago lonely_fermi
81ec743a5271 tomcat "catalina.sh run" About an hour ago Exited (143) About an hour ago sick_ramanujan
//錯誤日誌
[[email protected] ~]# docker logs 42f09819908b
error: database is uninitialized and password option is not specified
You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD;這個三個引數必須指定一個
正確的啟動 mysql的root密碼為root
[[email protected] ~]# docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=root -d mysql
b874c56bec49fb43024b3805ab51e9097da779f2f572c22c695305dedd684c5f
[[email protected] ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b874c56bec49 mysql "docker-entrypoint.sh" 4 seconds ago Up 3 seconds 3306/tcp mysql01
可能出錯
主機埠被佔用會有Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use. 3306埠改為3307 3307:3307
做了埠對映
[[email protected] ~]# docker run -p 3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
ad10e4bc5c6a0f61cbad43898de71d366117d120e39db651844c0e73863b9434
[[email protected] ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ad10e4bc5c6a mysql "docker-entrypoint.sh" 4 seconds ago Up 2 seconds 0.0.0.0:3306->3306/tcp mysql02
幾個其他的高階操作
docker run --name mysql03 -v /conf/mysql:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
把主機的/conf/mysql資料夾掛載到 mysqldocker容器的/etc/mysql/conf.d資料夾裡面
改mysql的配置檔案就只需要把mysql配置檔案放在自定義的資料夾下(/conf/mysql)
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
指定mysql的一些配置引數