天天看點

Docker 安裝及基本使用

一、安裝:

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

Docker 安裝及基本使用

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具有互動功能

  1. -t:提供僞終端
  2. /bin/bash:進入到bash環境
  3. --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
           

檢視鏡像

Docker 安裝及基本使用

根據nginx鏡像建立一個容器并啟動(如果有需要可以建立資料卷)

[[email protected] nginx]#docker run -d -p 10022:22 -p 8001:80 -p 4443:443 --name docker-nginx nginx
           

參數說明:

  1. -d 背景運作
  2. -p 主控端port:容器port (端口映射)
  3. --name 容器名稱
  4. 直接通路位址: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%';

Docker 安裝及基本使用

6、遠端連接配接授權

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

7、使用navicat 連接配接 mysql

Docker 安裝及基本使用

八、安裝redis 鏡像

1、拉取最新版本的鏡像

[[email protected] ~]# docker pull redis

2、檢視鏡像

Docker 安裝及基本使用

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
           

檢視容器:

Docker 安裝及基本使用

6、連接配接測試

主控端上執行:

[[email protected] ~]# docker exec -it 95ae5e6dcf33 redis-cli
           

7、使用redis-desktop-manage 連接配接 redis

Docker 安裝及基本使用