docker使用篇

docker的安裝

進入docker hub,下載引擎,社區版本,選擇對應的系統
https://hub.docker.com/search/?type=edition&offering=community
centos 的安裝教程步驟
https://docs.docker.com/install/linux/docker-ce/centos/
docker ce/ee:Docker Engine-Community軟件包

  1. 安裝docker引擎:使用docker容器的核心組件
    卸載舊版本
$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

安裝yum工具:

$ sudo yum install -y yum-utils \
      device-mapper-persistent-data \
      lvm2

設置穩定的存儲庫【穩定版本的軟件源】(如果超時可以手動下載傳到對應文件夾)

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

安裝最新版本的Docker Engine-Community和containerd

$ sudo yum install docker-ce docker-ce-cli containerd.io

創建組,啓動docker

$ sudo systemctl start docker

驗證

$ sudo docker run hello-world

運行helloword 程序

$ docker run ubuntu:15.10 /bin/echo "Hello world"

sudo 表示以管理員身份運行

查看版本

$ docker version

查看信息

$ docker info
  1. 配置
    將用戶加入docker用戶組:普通用戶可以執行docker命令
$ sudo usermod -aG docker USER NAME

如果用戶已經添加到了 docker 用戶組(參考上 節),大部分時候都無須管理員權限,
否則需要在命令前使用 sudo 來臨時提升權限。

使用官網地址下載鏡像較慢,可以使用阿里雲的鏡像加速器(需要申請賬號)地址見介紹
1、從linux登錄阿里雲
2、安如下修改即可
3、重啓 service docker restart
我使用centos7配置,使用此方法後,docker daemon啓動報錯:
Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details.

error during connect: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/version: read unix @->/var/run/docker.sock: read: connection reset by peer

原因沒有細研究,TODO 問題待定
解決方法:
只放這一段就好,執行 $ service docker restart 重啓正常,加速器生效

{
  "registry-mirrors": ["https://tuoatiqn.mirror.aliyuncs.com"]
}

這個是我的,可能每個人的地址不一樣https://xxxxx.mirror.aliyuncs.com
在這裏插入圖片描述

常用命令:

$ docker --helper

查看docker 命令的使用方式:docker [OPTIONS] COMMAND
可以看到docker命令分爲3個部分,options參數,管理命令(Management Commands),操作命令(Commands)

幫助命令

命令 描述
docker version 查看版本
docker info 查看docker 信息
docker --helper 幫助信息

鏡像命令

命令 描述
docker images -a 查看鏡像;-a所有鏡像 -q只顯示id
docker search nginx 查找鏡像,stars表示星級,OFFICIAL表示是否官網;找到對應的name再+標籤可下載
docker pull nginx 下載鏡像,不指定標籤,下載最新版本
docker rmi hello-world:latest 刪除鏡像,參數可以跟id;刪除多個,使用空格分割;-f參數強制刪除正在使用中的鏡像(容器中運行);docker rmi -f (dockerimagesq)(docker images -q) 將命令篩選出來的容器id作爲參數
docker tagdocker push 上傳鏡像到倉庫;阿里雲中有具體命令

容器命令

命令 描述
docker run [OPTIONS] IMAGE [COMMAND] [ARG…] 啓動容器;–name 指定容器名;-d後臺運行容器;-i交互式方式運行;-t啓動一個僞終端;-p指定端口映射
docker ps 列出多有運行容器;-a所有容器;-q只顯示容器id
exit 退出容器並停止
ctrl+p+q 退出容器,不停止
docker start 啓動容器
docker restart 重啓容器
docker stop 停止容器
docker rm 刪除容器
docker rm -f $(docker ps -a -q)docker ps -a -q xargs docker rm
docker logs -f -t a9dfa33f3926 查看日誌
docker top a9dfa33f3926 查看容器內進程
docker inspect a9dfa33f3926 查看容器詳細信息
docker exec -it c53447410f92 /bin/bash 進入容器,產生一個新的進程
docker attach c53447410f92 進入容器,不產生新的進程;
docker cp 容器id:容器路徑 主機路徑 從容器中拷貝文件到主機
docker commit 從容器創建鏡像,可以保存容器的臨時數據

示例:
運行
在這裏插入圖片描述
根據容器創建鏡像
在這裏插入圖片描述

dockerfile:

在這裏插入圖片描述

  1. 構建dockerfile文件
  2. 構建dockers鏡像: dockerfile文件+ 指定鏡像名
docker build -f /home/dockertest/dockerfile -t mytomcat-zhaowd .
  1. 啓動docker容器:綁定端口映射+指定容器名+指定數據卷+指定鏡像名
docker run -d -p 9080:8080 --name mytomcat-zhaowd -v /home/dockertest/mytomcat/logs/:/home/dockertest/apache-tomcat-9.0.31/logs mytomcat-zhaowd
命令:
命令 描述
FROM 基礎鏡像
MAINTAINER 維護者信息
RUN 鏡像構建時需要運行的命令
WORKDIR 容器創建後默認在哪個目錄
EXPOSE 當前容器對外暴露的端口
ENV 構建鏡像時的環境變量
ADD/COPY 向容器中添加文件;add命令會自動解壓
VOLUME 容器數據卷:保存數據到主機
CMD 指定容器啓動過程中需要運行的命令,多個只有最後一個生效
ENTRYPOINT 指定容器啓動過程中需要運行的命令,會把docker run 命令後的參數追加到後面
ONBUILD 其他docker指令;以當前鏡像做爲基礎鏡像,去構建其他鏡像時執行

示例:

#基礎鏡像
FROM centos
#維護信息
MAINTAINER zhaowd<[email protected]@>

#創建目錄
RUN mkdir /home/dockertest
#拷貝宿主機文件到容器目錄
COPY hello.text /home/dockertest/hellodocer.text
#拷貝jdk與tomcat 到容器目錄並解壓
ADD jdk-8u221-linux-x64.tar.gz /home/dockertest
ADD apache-tomcat-9.0.31.tar.gz /home/dockertest
#安裝vim
RUN yum -y install vim
#定義環境變量
ENV MYPATH /home/dockertest
#指定工作空間
WORKDIR $MYPATH
#設置環境變量
ENV JAVA_HOME /home/dockertest/jdk1.8.0_221
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /home/dockertest/apache-tomcat-9.0.31
ENV CATALINA_BASE /home/dockertest/apache-tomcat-9.0.31
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:$CATALINA_BASE/lib
#指定監聽端口
EXPOSE 8080
#啓動命令
CMD /home/dockertest/apache-tomcat-9.0.31/bin/startup.sh && tail -f /home/dockertest/apache-tomcat-9.0.31/logs/catalina.out

數據卷的使用

-v 表示需要掛在數據卷,第一個參數爲數據卷內的目錄(宿主機),:第二個爲容器裏面的目錄(絕對路徑);實現宿主機與容器數據共享

數據容器卷

專門的容器存儲數據;只要有其他容器依賴於它,這個容器會一直存在;如果其他容器都掛掉,則自動回收數據卷容器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章