一篇文章,讓你輕鬆學會docker的使用(安裝、鏡像、掛載)

docker的安裝


現在開始研究一下docker的基本使用,這裡呢就不深究了,如果要深究,那麼當然是在後面的文章中總結啦

環境

<code>linux內核版本 3.10.0-693.2.2.el7.x86_64/<code>


一、概念

Docker的三大核心概念:鏡像、容器、倉庫


一篇文章,讓你輕鬆學會docker的使用(安裝、鏡像、掛載)


Docker官方網址: https://docs.docker.com/ 英文地址

Docker中文網址: http://www.docker.org.cn/ 中文地址

二、安裝

1、檢查內核版本,返回值大於3.10即可

<code> uname -r/<code>

2、使用sudo或者root權限的用戶登錄終端

3、確保yum是最新的

<code> yum update/<code>

4、卸載舊版本的docker(沒有就不需要執行這個)

<code> yum remove docker docker-common docker-engine/<code>

5、安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的

<code> yum install -y yum-utils device-mapper-persistent-data lvm2/<code>

6、設置yum源

<code>yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo/<code>

7、查看docker版本,選擇版本安裝

<code>yum list docker-ce --showduplicates | sort -r/<code>

8、安裝docker

<code>yum install -y docker-ce/<code>

9、啟動docker

<code>systemctl start docker
systemctl restart docker/<code>

10、檢查docker是否安裝

<code> docker version/<code>

到這裡,就完成了docker的安裝,但是用阿里鏡像加速可以加快我們的拉取鏡像的速度詳細參考: https://cr.console.aliyun.com/cn-hangzhou/mirrors在目錄/etc/docker下新建daemon.json文件,內容如下:

<code>{
"registry-mirrors":["https://970k7x82.mirror.aliyuncs.com"]
}/<code>




docker安裝和刪除nginx容器

上一步我們已經安裝了docker,這裡呢舉一個簡單的例子,docker安裝nginx容器並啟動其實很簡單,只需要先拉取nginx鏡像,然後啟動即可,也可以直接啟動,docker會自動去拉取nginx鏡像再啟動

環境

<code>linux內核版本 3.10.0-693.2.2.el7.x86_64/<code>

一、流程

1、拉取nginx鏡像

<code>docker pull nginx/<code>

當然,我們這裡可以先執行語句docker search nginx查詢一下nginx鏡像版本,然後指定版本,上面是直接默認最新

2、啟動nginx鏡像

<code>docker run -d -p 81:80 nginx/<code>

下面是對上面的一些解釋-d 後臺運行-p 宿主機端口:容器端口 #開放容器端口到宿主機端口這樣子就可以直接訪問http://Docker宿主機ip:81即可當然,宿主機端口可以指定為80

二、一些命令

<code>docker search  name 查詢鏡像
docker pull name 安裝name鏡像
docker images 查看已經拉取的鏡像
docker ps 查看正在運行中的容器
docker ps -a 查看正在運行中的容器,包括未運行的
docker rm 容器ID 刪除某一容器 //停止容器--》刪除容器--》刪除鏡像
docker rmi 鏡像ID 刪除某一個鏡像
systemctl start docker 啟動docker
systemctl stop docker 停止docker
systemctl restart docker 重啟docker/<code>

三、刪除容器

這裡以nginx為例,若是我們已經啟動nginx

1、停止正在運行的容器

<code>docker ps #找到正在運行的容器,當然也可以直接docker ps|grep nginx找到最精確的
docker stop name #根據容器名稱停止(當然也可以是id)/<code>

2、刪除所有nginx的容器,運行的和未運行的

<code>docker ps -a #查出所有運行的和未運行的容器
docker rm 容器id/<code>

若是沒有先停止會報如下錯誤

<code>Error response from daemon: You cannot remove a running container 420d9c5a934853c264d8bc52f8cb3bd27379d269898182aa13d2c366409d7037. Stop the container before attempting removal or force remove/<code>

3、刪除nginx鏡像

<code>docker images #先查詢出容器
docker rmi 鏡像id #注意相比容器多了一個i/<code>

到此,就刪除nginx鏡像成功啦,當然也可以只刪除容器,不刪除鏡像

四、容器停止,啟動,重啟

當容器啟動後,我們可以很方便的停止和啟動,命令如下


一篇文章,讓你輕鬆學會docker的使用(安裝、鏡像、掛載)


其實,以nginx為例,流程是這樣子的:拉取鏡像後,用run啟動容器,此時會新建一個容器,後面就不需要再新建了,直接用stop/start停止啟動容器即可



構建自己的docker鏡像

上面我們學會了基本的拉取鏡像啟動鏡像的方法,接下來我們來構建一下自己的鏡像,這下面用一個很簡單的springboot例子

環境

<code>linux內核版本 3.10.0-693.2.2.el7.x86_64/<code>

一、流程如下

1、編譯打包一個springboot項目

這裡是:docker-build-test.jar,這是一個java -jar 可以直接啟動的項目

2、將項目上傳到/usr/local/dockerapp 目錄下面(當然,目錄可以自己指定)

3、cd /usr/local/dockerapp

4、在dockerapp目錄下構建文件Dockerfile,內容如下

<code>###指定java8環境鏡像
FROM java:8
###複製文件到容器app-springboot
ADD docker-build-test.jar /app-docker-build-test.jar
###聲明啟動端口號
EXPOSE 80
###配置容器啟動後執行的命令
ENTRYPOINT ["java","-jar","/app-docker-build-test.jar"]/<code>

5、構建鏡像

<code>docker build -t docker-springboot-test ./<code>

.表示當前目錄下的Dockerfile

6、構建完成後這裡就只需要啟動就可以啦

<code>docker run -p 80:80 docker-springboot-test/<code>

7、訪問路徑

http://Docker宿主機/docker可以看到頁面輸出My name is docker當然/docker的路徑是項目中定義的,改成啥都可以




nginx配置文件和相應目錄的掛載

我們基本上了解了docker怎麼拉取運行容器,但是可能都會有疑問,我們到底怎樣去修改nginx的配置文件呢,其實也很簡單,用的就是掛載技術。

環境

<code>linux內核版本 3.10.0-693.2.2.el7.x86_64/<code>

一、docker容器的進一步瞭解

按我的理解,docker容器就是一個linux操作系統,裡面的目錄結構應該跟linux一模一樣,只不過它相比真正的linux來說刪除了很多不必要的東西,比如各種linux的命令在容器中是不可用的,只有基本的ls、cd、cat…等命令可以使用,所以是一個輕量級的linux操作系統(也可能理解的不對望指正)。既然如此,那麼怎麼進入容器中呢,我們可以通過如下方式進入:

<code>docker exec -it 容器ID/容器民稱 bash/<code>

    當然還有很多進入的方式,這裡就不贅述了,畢竟我這裡只是學會如何使用即可,進入後,執行ls命令會看到跟linux一樣的目錄結構,如下圖

一篇文章,讓你輕鬆學會docker的使用(安裝、鏡像、掛載)

    我們可以很清楚的看到ll命令顯然是不能使用的,因此我覺得docker容器就是一個輕量級的linux操作系統。正常軟件是安裝在etc的目錄下,比如nginx就是在etc的目錄下

一篇文章,讓你輕鬆學會docker的使用(安裝、鏡像、掛載)

    理論上我們是可以直接在容器內部對nginx的配置文件進行就改,但是因為類似vi這些命令都沒有,所以操作起來很麻煩,那麼我們可以使用掛載的方式,讓宿主機的目錄文件覆蓋掉容器內部的目錄文件。

二、掛載

通過掛載的方式,可以把宿主機的目錄文件覆蓋掉容器中指定的目錄文件,這樣子我們就可以直接修改宿主機的文件即可。下面以nginx為例子,掛載配置文件、日誌文件、html目錄等。

1、在宿主機新建要掛載的目錄

<code>mkdir -p /data/nginx/{conf,conf.d,html,logs}/<code>

-p表示遞歸創建

2、在目錄/data/nginx/conf下新建nginx.conf,內容如下

<code>user  root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html;
}
}
}/<code>

我把多餘不重要的信息刪掉了,主要是看server{}這裡監聽的是80端口,因為我這裡內部容器就是80端口,然後root下面的目錄對應的是容器中nginx的訪問目錄。

4、啟動

用docker啟動nginx容器時,我們要指定掛載的目錄,一般都制定如下目錄


一篇文章,讓你輕鬆學會docker的使用(安裝、鏡像、掛載)


刪除先前的nginx容器後,執行如下命令,掛載用-v選項

<code>docker run --name nginx81 -d -p 81:80 -v /data/nginx/html:/usr/share/nginx/html -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf  -v /data/nginx/logs:/var/log/nginx -v /data/nginx/conf.d:/etc/nginx/conf.d -d docker.io/nginx/<code> 

現在修改宿主機的配置文件以及其他的掛載目錄後,容器中的目錄也就相應的改變了。在linux命令行輸入curl 127.0.0.1:81,就可以返回nginx的歡迎界面。以後除非要修改端口,或者掛載目錄才需要重新創建容器,否則直接啟動和停止即可。




結語

到現在,基本上來說docker的使用已經入門,懂得了docker的安裝,docker拉取鏡像,啟動容器,掛載目錄,以及一些基本的操作命令,按我理解,容器,就是一個輕量級的linux系統,掛載也就是相當於我們不容進入容器中去修改文件,直接在宿主機修改就可以覆蓋掉容器中對應的目錄文件。


分享到:


相關文章: