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軟件包
- 安裝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
- 配置
將用戶加入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 命令篩選出來的容器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:
- 構建dockerfile文件
- 構建dockers鏡像: dockerfile文件+ 指定鏡像名
docker build -f /home/dockertest/dockerfile -t mytomcat-zhaowd .
- 啓動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 表示需要掛在數據卷,第一個參數爲數據卷內的目錄(宿主機),:第二個爲容器裏面的目錄(絕對路徑);實現宿主機與容器數據共享
數據容器卷
專門的容器存儲數據;只要有其他容器依賴於它,這個容器會一直存在;如果其他容器都掛掉,則自動回收數據卷容器。