天天看點

Docker學習——docker常用指令

Docker常用指令

鏡像相關指令

1. 檢視鏡像

docker images
           

REPOSITORY :鏡像名稱

TAG:鏡像标簽

IMAGE ID:鏡像

ID CREATED:鏡像的建立日期(不是擷取該鏡像的日期)

SIZE:鏡像的大小 鏡像都存在與Ddocker主控端的/var/lib/docker目錄下

2. 搜尋鏡像

docker search  鏡像名稱
           

NAME:倉庫名稱

DESCRIPTION:鏡像描述

STARS:使用者評價,反應鏡像的受歡迎程度

OFFICIAL:是否官方

AUTOMATED:自動建構,表示該鏡像由Docker Hub自動建構流程建立的

3. 拉取鏡像

拉去鏡像就是從 中央倉庫下載下傳鏡像到本地

docker pull 鏡像名稱
           

例如下載下傳centos

docker pull centos
           

4. 删除鏡像

按鏡像ID删除鏡像

docker rmi 鏡像ID
           

5. 删除所有鏡像

容器相關指令

1. 建立與啟動容器

建立容器常用的參數說明:

建立容器指令:

docker run

-i:可表示運作容器

-t:表示容器啟動後會進入其指令行。加入這兩個參數後,容器建立就能登入進去。即配置設定一個僞終端。

--name :為建立的容器命名。

-V:表示目錄映射關系(前者是主控端目錄,後者是映射到主控端上的目錄),可以使用多個- v做多個目錄或檔案映射。注意:最好做目錄映射,在主控端上做修改,然後共享到容器上。

-d:在run後面加上-d參數,則會建立一個守護式容器在後 台運作(這樣建立容器後不會自動登入容器,如果隻加-i-t兩個參數,建立後就會自動進去容器)。

p:表示端口映射,前者是主控端端口,後者是容器内的映射端口。可以使用多個-p做多個端口映射
           
  • 互動式方式建立容器
docker run -it --name=容器名稱 鏡像名稱:标簽/bin/bash
           

這時我們通過ps指令檢視,發現可以看到啟動的容器,狀态為啟動狀态

退出目前容器

exit
           
  • 以守護式方式建立容器
docker run -di --name=容器名稱 鏡像名稱:标簽
           

登陸守護式容器方式:

docker exec -it 容器名稱(或容器ID) /bin/bash

2. 停止與啟動容器

停止容器:

啟動容器:

3. 檢視容器

檢視正在運作的容器

檢視所有容器

docker ps -a
           

檢視最後一次運作的容器

docker ps -l
           

檢視停止的容器

docker ps -f status=exited
           

檔案拷貝

如果我們需要将檔案拷貝到容器内可以使用cp指令

docker cp 需要拷貝的檔案或目錄 容器名稱:容器目錄
           

也可以将檔案從容器内拷貝出來

docker cp 容器名稱:容器目錄 需要拷貝的檔案或目錄
           

目錄挂載

在建立容器的時候,将主控端的目錄與容器内的目錄進行映射,這樣就可以通過修改主控端某個目錄的檔案進而去影響容器。

建立容器 添加-v參數 後邊為 主控端目錄:容器目錄,例如:

docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7
           

如果你共享的是多級的目錄,可能會出現權限不足的提示。

這是因為CentOS7中的安全子產品selinux把權限禁掉了,我們需要添加參數 --privileged=true 來解決挂載的目錄沒有權限的問題

檢視容器IP位址

我們可以通過以下指令檢視容器運作的各種資料

docker inspect 容器名稱(容器ID) 
           

也可以直接執行下面的指令直接輸出IP位址

docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名稱(容器ID)
           

删除容器

删除指定的容器:

docker rm 容器名稱(容器ID)
           

應用部署

MySQL部署

(1)拉取mysql鏡像

docker pull centos/mysql-57-centos7
           

(2)建立容器

docker run -di --name=tensquare_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
           

-p 代表端口映射,格式為 主控端映射端口:容器運作端口

-e 代表添加環境變量 MYSQL_ROOT_PASSWORD 是root使用者的登陸密碼

(3)遠端登入mysql

連接配接主控端的IP ,指定端口為33306

tomcat部署

(1)拉取鏡像

docker pull tomcat:7-jre7
           

(2)建立容器

建立容器 -p表示位址映射

docker run -di --name=mytomcat -p 9000:8080 
-v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7
           

Nginx部署

(1)拉取鏡像

docker pull nginx
           

(2)建立Nginx容器

docker run -di --name=mynginx -p 80:80 nginx
           

Redis部署

(1)拉取鏡像

docker pull redis
           

(2)建立容器

docker run -di --name=myredis -p 6379:6379 redis
           

遷移與備份

容器儲存為鏡像

我們可以通過以下指令将容器儲存為鏡像

docker commit mynginx mynginx_i
           

鏡像備份

我們可以通過以下指令将鏡像儲存為tar 檔案

docker  save -o mynginx.tar mynginx_i
           

鏡像恢複與遷移

首先我們先删除掉mynginx_img鏡像 然後執行此指令進行恢複

docker load -i mynginx.tar
           

-i 輸入的檔案

執行後再次檢視鏡像,可以看到鏡像已經恢複

Dockerfile

什麼是Dockerfile

Dockerfile是由一系列指令和參數構成的腳本,這些指令應用于基礎鏡像并最終建立一個新的鏡像。

1、對于開發人員:可以為開發團隊提供一個完全一緻的開發環境;

2、對于測試人員:可以直接拿開發時所建構的鏡像或者通過Dockerfile檔案建構一個新的鏡像開始工作了;

3、對于運維人員:在部署時,可以實作應用的無縫移植。

常用指令

指令 作用
FROM image_name:tag 定義了使用哪個基礎鏡像啟動建構流程
MAINTAINER user_name 聲明鏡像的建立者
ENV key value 設定環境變量 (可以寫多條)
RUN command 是Dockerfile的核心部分(可以寫多條)
ADD source_dir/file dest_dir/file 将主控端的檔案複制到容器内,如果是一個壓縮檔案,将會在複制後自動解壓
COPY source_dir/file dest_dir/file 和ADD相似,但是如果有壓縮檔案并不能解壓
WORKDIR path_dir 設定工作目錄

使用腳本建立鏡像

步驟:

(1)建立目錄

mkdir –p /usr/local/dockerjdk8
           

(2)下載下傳jdk-8u171-linux-x64.tar.gz并上傳到伺服器(虛拟機)中的/usr/local/dockerjdk8目錄

(3)建立檔案Dockerfile

vi Dockerfile

#依賴鏡像名稱和ID
FROM centos:7
#指定鏡像建立者資訊
MAINTAINER XIAOTIAN
#切換工作目錄
WORKDIR /usr
RUN mkdir  /usr/local/java
#ADD 是相對路徑jar,把java添加到容器中
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/

#配置java環境變量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
           

(4)執行指令建構鏡像

docker build -t='jdk1.8' .
           

注意後邊的空格和點,不要省略

(5)檢視鏡像是否建立完成

docker images
           

Docker私有倉庫

私有倉庫搭建與配置

(1)拉取私有倉庫鏡像(此步省略)

docker pull registry
           

(2)啟動私有倉庫容器

docker run -di --name=registry -p 5000:5000 registry
           

(3)打開浏覽器 輸入位址http://192.168.184.141:5000/v2/_catalog看到

{"repositories":[]}

表示私有倉庫搭建成功并且内容為空

(4)修改daemon.json

vi /etc/docker/daemon.json
           

添加以下内容,儲存退出。

此步用于讓 docker信任私有倉庫位址

(5)重新開機docker 服務

systemctl restart docker
           

鏡像上傳至私有倉庫

(1)标記此鏡像為私有倉庫的鏡像

docker tag jdk1.8 192.168.184.141:5000/jdk1.8
           

(2)再次啟動私服容器

docker start registry
           

(3)上傳标記的鏡像

docker push 192.168.184.141:5000/jdk1.8