1、簡(jiǎn)介
Docker是一個(gè)開源的應(yīng)用容器引擎浊吏;是一個(gè)輕量級(jí)容器技術(shù)而昨;
Docker支持將軟件編譯成一個(gè)鏡像;然后在鏡像中各種軟件做好配置卿捎,將鏡像發(fā)布出去配紫,其他使用者可以直接使用這個(gè)鏡像径密;
運(yùn)行中的這個(gè)鏡像稱為容器午阵,容器啟動(dòng)是非常快速的享扔。
2底桂、核心概念
docker主機(jī)(Host):安裝了Docker程序的機(jī)器(Docker直接安裝在操作系統(tǒng)之上);
docker客戶端(Client):連接docker主機(jī)進(jìn)行操作惧眠;
docker倉(cāng)庫(kù)(Registry):用來(lái)保存各種打包好的軟件鏡像籽懦;
docker鏡像(Images):軟件打包好的鏡像;放在docker倉(cāng)庫(kù)中氛魁;
docker容器(Container):鏡像啟動(dòng)后的實(shí)例稱為一個(gè)容器暮顺;容器是獨(dú)立運(yùn)行的一個(gè)或一組應(yīng)用
使用Docker的步驟:
1)、安裝Docker
2)秀存、去Docker倉(cāng)庫(kù)找到這個(gè)軟件對(duì)應(yīng)的鏡像捶码;
3)、使用Docker運(yùn)行這個(gè)鏡像或链,這個(gè)鏡像就會(huì)生成一個(gè)Docker容器惫恼;
4)、對(duì)容器的啟動(dòng)停止就是對(duì)軟件的啟動(dòng)停止澳盐;
3祈纯、安裝Docker
1)、安裝linux虛擬機(jī)
? 1)叼耙、VMWare腕窥、VirtualBox(安裝);
? 2)筛婉、導(dǎo)入虛擬機(jī)文件centos7-atguigu.ova簇爆;
? 3)、雙擊啟動(dòng)linux虛擬機(jī);使用 root/ 123456登陸
? 4)、使用客戶端連接linux服務(wù)器進(jìn)行命令操作冕碟;
? 5)拦惋、設(shè)置虛擬機(jī)網(wǎng)絡(luò);
? 橋接網(wǎng)絡(luò)===選好網(wǎng)卡====接入網(wǎng)線安寺;
? 6)厕妖、設(shè)置好網(wǎng)絡(luò)以后使用命令重啟虛擬機(jī)的網(wǎng)絡(luò)
service network restart
? 7)、查看linux的ip地址
ip addr
? 8)挑庶、使用客戶端連接linux言秸;
2)、在linux虛擬機(jī)上安裝docker
步驟:
1迎捺、檢查內(nèi)核版本举畸,必須是3.10及以上
uname -r
2、安裝docker
yum install docker
3凳枝、輸入y確認(rèn)安裝
4抄沮、啟動(dòng)docker
[root@localhost ~]# systemctl start docker
[root@localhost ~]# docker -v
Docker version 1.12.6, build 3e8e77d/1.12.6
5、開機(jī)啟動(dòng)docker
[root@localhost ~]# 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
4叛买、Docker常用命令&操作
1)、鏡像操作
操作 | 命令 | 說(shuō)明 |
---|---|---|
檢索 | docker search 關(guān)鍵字 eg:docker search redis | 我們經(jīng)常去docker hub上檢索鏡像的詳細(xì)信息蹋订,如鏡像的TAG率挣。 |
拉取 | docker pull 鏡像名:tag | :tag是可選的,tag表示標(biāo)簽露戒,多為軟件的版本椒功,默認(rèn)是latest |
列表 | docker images | 查看所有本地鏡像 |
刪除 | docker rmi image-id | 刪除指定的本地鏡像 |
2)、容器操作
軟件鏡像(QQ安裝程序)----運(yùn)行鏡像----產(chǎn)生一個(gè)容器(正在運(yùn)行的軟件智什,運(yùn)行的QQ)动漾;
步驟:
1、搜索鏡像
[root@localhost ~]# docker search tomcat
2撩鹿、拉取鏡像
[root@localhost ~]# docker pull tomcat
3谦炬、根據(jù)鏡像啟動(dòng)容器
docker run --name mytomcat -d tomcat:latest
4、docker ps
查看運(yùn)行中的容器
5节沦、 停止運(yùn)行中的容器
docker stop 容器的id
6键思、查看所有的容器
docker ps -a
7、啟動(dòng)容器
docker start 容器id
8甫贯、刪除一個(gè)容器
docker rm 容器id
9吼鳞、啟動(dòng)一個(gè)做了端口映射的tomcat
[root@localhost ~]# docker run -d -p 8888:8080 tomcat
-d:后臺(tái)運(yùn)行
-p: 將主機(jī)的端口映射到容器的一個(gè)端口 主機(jī)端口:容器內(nèi)部的端口
10、為了演示簡(jiǎn)單關(guān)閉了linux的防火墻
service firewalld status 叫搁;查看防火墻狀態(tài)
service firewalld stop:關(guān)閉防火墻
11赔桌、查看容器的日志
docker logs container-name/container-id
更多命令參看
https://docs.docker.com/engine/reference/commandline/docker/
可以參考每一個(gè)鏡像的文檔
3)供炎、安裝MySQL示例
docker pull mysql
錯(cuò)誤的啟動(dòng)
[root@localhost ~]# docker run --name mysql01 -d mysql
42f09819908bb72dd99ae19e792e0a5d03c48638421fa64cce5f8ba0f40f5846
mysql退出了
[root@localhost ~]# 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
//錯(cuò)誤日志
[root@localhost ~]# 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;這個(gè)三個(gè)參數(shù)必須指定一個(gè)
正確的啟動(dòng)
[root@localhost ~]# docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
b874c56bec49fb43024b3805ab51e9097da779f2f572c22c695305dedd684c5f
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b874c56bec49 mysql "docker-entrypoint.sh" 4 seconds ago Up 3 seconds 3306/tcp mysql01
做了端口映射
[root@localhost ~]# docker run -p 3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
ad10e4bc5c6a0f61cbad43898de71d366117d120e39db651844c0e73863b9434
[root@localhost ~]# 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
幾個(gè)其他的高級(jí)操作
docker run --name mysql03 -v /conf/mysql:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
把主機(jī)的/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的一些配置參數(shù)