1兑凿、簡介
Docker是一個(gè)開源的應(yīng)用容器引擎;是一個(gè)輕量級容器技術(shù)茵瘾;
Docker支持將軟件編譯成一個(gè)鏡像礼华;然后在鏡像中各種軟件做好配置,將鏡像發(fā)布出去龄捡,其他使用者可以直接使用這個(gè)鏡像;
運(yùn)行中的這個(gè)鏡像稱為容器慷暂,容器啟動是非称钢常快速的。
2行瑞、核心概念
docker主機(jī)(Host):安裝了Docker程序的機(jī)器(Docker直接安裝在操作系統(tǒng)之上)奸腺;
docker客戶端(Client):連接docker主機(jī)進(jìn)行操作;
docker倉庫(Registry):用來保存各種打包好的軟件鏡像血久;
docker鏡像(Images):軟件打包好的鏡像突照;放在docker倉庫中;
docker容器(Container):鏡像啟動后的實(shí)例稱為一個(gè)容器氧吐;容器是獨(dú)立運(yùn)行的一個(gè)或一組應(yīng)用
使用Docker的步驟:
1)讹蘑、安裝Docker
2)、去Docker倉庫找到這個(gè)軟件對應(yīng)的鏡像筑舅;
3)座慰、使用Docker運(yùn)行這個(gè)鏡像,這個(gè)鏡像就會生成一個(gè)Docker容器翠拣;
4)版仔、對容器的啟動停止就是對軟件的啟動停止;
3误墓、安裝Docker
1)蛮粮、安裝linux虛擬機(jī)
? 1)、VMWare谜慌、VirtualBox(安裝)然想;
? 2)、導(dǎo)入虛擬機(jī)文件centos7-atguigu.ova欣范;
? 3)又沾、雙擊啟動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昂验、啟動docker
[root@luyuhui java]# systemctl status docker
[root@localhost ~]# systemctl start docker
[root@localhost ~]# docker -v
Docker version 1.12.6, build 3e8e77d/1.12.6
5捂敌、開機(jī)啟動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)占婉、鏡像操作
操作 | 命令 | 說明 |
---|---|---|
檢索 | 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ù)鏡像啟動容器
docker run --name mytomcat -d tomcat:latest
4涎劈、docker ps
查看運(yùn)行中的容器
5、 停止運(yùn)行中的容器
docker stop 容器的id
6阅茶、查看所有的容器
docker ps -a
7蛛枚、啟動容器
docker start 容器id
8、刪除一個(gè)容器
docker rm 容器id
9脸哀、啟動一個(gè)做了端口映射的tomcat
[root@localhost ~]# docker run -d -p 8080:8080 tomcat
-d:后臺運(yùn)行
-p: 將主機(jī)的端口映射到容器的一個(gè)端口 主機(jī)端口:容器內(nèi)部的端口
10蹦浦、為了演示簡單關(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:5.7
錯(cuò)誤的啟動
[root@localhost ~]# docker run --name mysql01 -d mysql:5.7
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è)
正確的啟動
[root@localhost ~]# docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
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:5.7
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è)其他的高級操作
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ù)