前言
此篇文章是自己在學(xué)習(xí)Docker的過程中紀(jì)錄的筆記,包括安裝、基本概念理解、基本命令、簡單實(shí)例,適合初學(xué)者對(duì)Docker有個(gè)基本的認(rèn)知,幫助初學(xué)者上手
一、安裝
-
Mac OSX
配置阿里云加速(需要到阿里云申請(qǐng))
設(shè)置位置:preferences-daemon
- Linux--Centos 7
卸載舊版本(如果沒有安裝過則不需要執(zhí)行此步驟)
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2
# 使用阿里云的源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
vim /etc/yum.repos.d/docker-ce.repo
# 運(yùn)行命令 方法(在vim界面執(zhí)行以下替換命令)
%s#https://download-stage.docker.com#http://mirrors.aliyun.com/docker-ce#g
# 安裝docker
yum install docker-ce
問題解決
# 使用官方源,下載會(huì)很慢甚至報(bào)錯(cuò)
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
報(bào)錯(cuò)信息

-
Linux-Centos 7 RPM方式安裝
# 下載 wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm yum install docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm
二、基礎(chǔ)知識(shí)
-
容器技術(shù)
容器是一種輕量級(jí)、可移植、自包含的軟件打包技術(shù)
-
基本概念
- 鏡像(Image)
Docker 鏡像是一個(gè)特殊的文件系統(tǒng),除了提供容器運(yùn)行時(shí)所需的程序、庫、資源、配置等文件外,還包含了一些為運(yùn)行時(shí)準(zhǔn)備的一些配置參數(shù)(如匿名卷、環(huán)境變量、用戶等)。鏡像不包含任何動(dòng)態(tài)數(shù)據(jù),其內(nèi)容在構(gòu)建之后也不會(huì)被改變??梢钥闯芍蛔x模板 - 容器(Container)
容器是鏡像運(yùn)行時(shí)的實(shí)體,容器的實(shí)質(zhì)是進(jìn)程,通過Docker Image啟動(dòng) - 倉庫(Repository)
鏡像倉庫,用來管理docker鏡像,提供Docker鏡像的上傳、下載和瀏覽功能 - 守護(hù)進(jìn)程(Docker Daemon)
接收Docker Client發(fā)來的指令,并對(duì)服務(wù)器進(jìn)行具體的操作(創(chuàng)建、運(yùn)行、監(jiān)控容器。構(gòu)建、存儲(chǔ)鏡像)
- 鏡像(Image)
-
docker架構(gòu)
圖片來源網(wǎng)絡(luò)
-
鏡像的分層結(jié)構(gòu)
圖片來源網(wǎng)絡(luò)
- Docker鏡像采用分層結(jié)構(gòu)
- 容器層與鏡像層,只有容器層是可寫的,容器層下面的所有鏡像層都是只讀的
三、基本操作
-
Docker鏡像搜索
docker search tutorial -
鏡像下載
docker pull learn/tutorial -
鏡像列表
docker images -
刪除鏡像
#刪除指定鏡像 docker rmi image-id #刪除所有鏡像 docker rmi ${docker images -q} -
容器運(yùn)行
docker run -d --name=test-redis -p 8080:80 redis:latest基于最新版的redis鏡像創(chuàng)建一個(gè)名為test-redis的容器,并把容器內(nèi)部的80端口與主機(jī)上的8080端口做映射
實(shí)例
#創(chuàng)建一個(gè)WebServer docker run -d --name=WebServer -p 80:80 nginx #直接訪問機(jī)器的http://localhost可看到NGINX的歡迎界面 #進(jìn)入WebServer的shell docker exec -it WebServer bash #修改歡迎界面,index.html可以改成自己任意想顯示的東西 echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html #退出 exit #查看修改情況 docker diff WebServer -
查看容器
#查看運(yùn)行狀態(tài)的容器 docker ps #查看所有的容器 docker ps -a #查看容器詳細(xì)信息 docker inspect -
容器操作
- 啟動(dòng)
docker container start WebServer,一般也就直接新建了,docker run - 終止
docker container stop WebServer - 重啟
docker container restart WebServer
- 啟動(dòng)
-
刪除容器
docker rm container_name -
保存新的鏡像
docker commit container_name new_name -
顯示鏡像的構(gòu)建歷史
docker history centos-with-vim
四、 Dockerfile方式創(chuàng)建新的鏡像
Dockerfile
FROM centos
RUN yum update && yum install -y vim
創(chuàng)建
docker build -t centos-with-vim .
含義:創(chuàng)建一個(gè)鏡像,名為centos-with-vim,.指明build context為當(dāng)前目錄。Docker默認(rèn)從build context中查找dockerfile,也可以使用-f指定
build context 為鏡像構(gòu)建提供所需要的文件或目錄。COPY、ADD等命令是從build context目錄下找
常用指令
- FROM 指定base鏡像
- RUN 在容器中運(yùn)行指定的命令,樣例:
RUN yum install -y vim - MAINTAINER 設(shè)置鏡像作者
- ENV 設(shè)置環(huán)境變量,可以在下文中使用
- COPY 將文件從build context復(fù)制到鏡像,樣例
COPY ["source", "des"] - ADD 與COPY類似,不過自帶解壓功能,先解壓再copy
- EXPOSE 指定容器中的進(jìn)程會(huì)監(jiān)聽某個(gè)端口,Docker可以將該端口暴露出來
- CMD 容器啟動(dòng)時(shí)運(yùn)行指定的命令,可有多個(gè)指令,但是只有最后一個(gè)生效
五、base鏡像--Centos使用學(xué)習(xí)
base鏡像一般是指不依賴其他鏡像,其他鏡像可以以之為基礎(chǔ)進(jìn)行擴(kuò)展的鏡像,比如Centos等操作系統(tǒng)的鏡像
# 拉取
docker pull centos
# 運(yùn)行并進(jìn)入容器
docker run -it centos
# 查看內(nèi)核
uname -r
# 安裝vim
yum install -y vim
# 退出容器,保存為新的鏡像
exit
docker commit centos centos-with-vim


參考網(wǎng)站
知乎專欄--每天5分鐘玩轉(zhuǎn)Docker容器技術(shù)(三)作者:cloudman6
知乎專欄--每天5分鐘玩轉(zhuǎn)Docker容器技術(shù)(四)作者:cloudman6

