一、安裝:
1、系統要求: Docker 運作在 CentOS 7 上,要求系統為64位、系統核心版本為 3.10 以上。
2、使用yum 安裝:
yum update --確定yum是最新的
yum -y install docker-io -- 安裝docker
安裝完成檢視docker版本
docker version
3、啟動:
systemctl start docker ##啟動
systemctl enable docker ##設定docker開機啟動
二、 Docker 鏡像常用指令
1.搜尋鏡像
[[email protected] ~]# docker search centos
報錯資訊:
Error response from daemon: Get https://index.docker.io/v1/search?q=centos&n=25: net/http: TLS handshake timeout
機器網絡配置出了問題,解決方案:
檢視伺服器DNS網絡配置vi /etc/resolv.conf
把裡面的内容清除,并改為:
nameserver 8.8.8.8
nameserver 8.8.8.4
重新開機網絡服務 systemctl restart network
2.下載下傳docker鏡像
國内從Docker Hub下載下傳鏡像速度很慢,我們可以配置阿裡雲專屬加速器來解決
首先通路阿裡雲docker鏡像倉庫網站:
https://dev.aliyun.com/search.html
配置鏡像加速器
針對Docker用戶端版本大于 1.10.0 的使用者
修改daemon配置檔案/etc/docker/daemon.json來使用加速器 { "registry-mirrors": ["https://o72216kx.mirror.aliyuncs.com"] }
##重新加載daemon:
systemctl daemon-reload
##重新開機docker
systemctl restart docker
docker pull centos ##鏡像名稱
3、檢視主控端上的鏡像:
docker images

4 .删除鏡像
docker rmi 鏡像ID
如果提示鏡像被使用,需要先停止某個ID的容器,那麼要先删除容器再删除鏡像
可以删除剛才下載下傳的centos鏡像,然後重新下載下傳會發現速度快了很多!
5、解除安裝docker
yum remove docker-ce
rm -rf /var/lib/docker
三、Docker容器常用指令
1、檢視目前運作的容器
docker ps ##檢視目前運作的容器
docker ps -a ##檢視所有容器
2、啟動、停止、重新開機容器指令:
docker start 容器ID或name
docker stop 容器ID或name
docker restart 容器ID或name
3、删除容器
docker rm 容器ID
四、建立可互動容器
1.建立一個進入到了容器終端,并能執行互動指令的容器
docker run -it --name mycentos centos /bin/bash
-i:interactive具有互動功能
- -t:提供僞終端
- /bin/bash:進入到bash環境
- --name:表示容器的name,後面的centos表示使用的哪個鏡像(鏡像name)
建立容器的時候報錯WARNING: IPv4 forwarding is disabled. Networking will not work.
# docker run -it -p 30001:22 --name=centos-ssh centos /bin/bash
WARNING: IPv4 forwarding is disabled. Networking will not work.
解決辦法:
# vim /usr/lib/sysctl.d/00-system.conf1
添加如下代碼:
net.ipv4.ip_forward=1
重新開機network服務
# systemctl restart network
2.退出容器終端:exit
退出容器終端後,容器狀态也是退出了,本機host程序也停止運作了,容器的狀态會随着command的指令執行而改變,如果需要将容器持續不斷的運作,那麼将command變為持續不斷的運作就可以
如果想正常退出終端但不關閉容器,可以使用Ctrl+P+Q退出容器
3.進入容器終端:
docker exec -it 容器ID /bin/bash
隻有在容器啟動的時候即up狀态才能進入容器終端。
五、資料卷(Data Volume)
在容器中建立資料卷的目的:
- 持久化資料,隻要資料卷有容器在使用,就會一直存在
- 資料卷可以被多個容器間共享和重用
- 資料卷在主控端上能夠找到映射,如果容器中的資料卷設為隻讀,可通過主控端上的映射檔案進行讀寫
1.直接建立資料卷
[[email protected] _data]# docker run --name mycontainer -v /home/data -it docker.io/centos /bin/bash
其中 -v參數即可建立一個資料卷,容器中的位置即是/home/data -it表示進入容器終端,可進入該/home目錄檢視
因為在主控端上有該資料卷的映射,但是沒有指定挂載目錄,是以映射到了一個預設的位置,可以通過以下指令查找,首先退出容器終端
(快捷鍵 Ctrl+P+Q)回到主控端,輸入以下指令:
[[email protected] _data]# docker inspect mycontainer|grep /var/lib/docker/volumes
2.挂載主控端目錄到資料卷 在挂載主控端目錄之前,先臨時關閉selinux,否則進入容器終端後會出現拒絕通路
[[email protected] home]# setenforce 0
然後根據鏡像docker.io/centos建立容器mycontainer2,并将主控端上的目錄/home/data挂載到容器的/home/data資料卷
[[email protected] home]# docker run -it --name mycontainer2 -v /home/data:/home/data docker.io/centos /bin/bash
還可以同時挂載多個目錄,建立容器mycontainer3,将主控端上的/home/softs挂載到容器的/home/softs目錄、主控端上的/opt/data挂載到容器的/home/data目錄
[[email protected] ~]# docker run --name mycontainer3 -v /home/softs:/home/softs -v /opt/data:/home/data:ro -it docker.io/centos /bin/bash
其中:ro表示隻讀,即容器中的/home/data目錄是隻讀的
3、資料卷容器(Data volume containers)
如果你有一些持續更新的資料需要在容器之間共享,最好建立資料卷容器。
建立一個命名的資料卷容器 dbdata:
[[email protected] /]# docker run -it -v /dbdata/volume1 -v /dbdata/volume2 --name dbdata docker.io/centos /bin/bash
其他容器就可以挂載這個資料卷容器中的資料卷了
[[email protected] /]#docker run -it --volumes-from dbdata --name mycontaner4 docker.io/centos /bin/bash
六、Nginx 鏡像
1、使用docker指令下載下傳nginx 鏡像
docker pull nginx
檢視鏡像
根據nginx鏡像建立一個容器并啟動(如果有需要可以建立資料卷)
[[email protected] nginx]#docker run -d -p 10022:22 -p 8001:80 -p 4443:443 --name docker-nginx nginx
參數說明:
- -d 背景運作
- -p 主控端port:容器port (端口映射)
- --name 容器名稱
- 直接通路位址:http://192.168.108.128:8001/ 即可出現Nginx的歡迎頁面,如下
Docker 安裝及基本使用
七 、安裝 MySQL8鏡像
1、下載下傳鏡像
docker pull mysql
2、本地建立挂載配置目錄(mysql8版本,一但mysql正式運作,就不能再設定忽略大小寫了,強行設定會導緻mysql服務啟動不了,是以,我們建立容器時必須将mysql配置挂載到容器上。)
mkdir /home/msql01
建立配置檔案my.cnf,增加配置(需要配置資料忽略大小寫)
[mysqld] lower_case_table_names=1
3、重新建立并運作容器
docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=root -v /home/mysql01:/etc/mysql/conf.d -p 13306:3306 -d mysql
檢視容器是否啟動成功
docker ps -a
4、進入容器連接配接mysql
docker exec -it containerid /bin/bash
mysql -uroot -proot
5、查詢大小寫配置
show variables like '%lower_case%';
6、遠端連接配接授權
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
7、使用navicat 連接配接 mysql
八、安裝redis 鏡像
1、拉取最新版本的鏡像
[[email protected] ~]# docker pull redis
2、檢視鏡像
3、建立配置檔案挂載目錄
mkdir /home/docker/redis/conf
mkdir /home/docker/redis/data
4、建立配置 redis.conf 置于 home/docker/redis/conf目錄下
5、建立容器并啟動
docker run --name docker_redis -p 16379:6379 -v /home/docker/redis/data:/etc/redis/data -v /home/docker/redis/conf:/etc/redis/conf -d redis redis-server /etc/redis/redis.conf
檢視容器:
6、連接配接測試
主控端上執行:
[[email protected] ~]# docker exec -it 95ae5e6dcf33 redis-cli
7、使用redis-desktop-manage 連接配接 redis