-
#mkdir d2
#cd d2
#touch Dockerfile
FROM ubuntu
MAINTAINER smilevt
RUN sed -i 's/archive.ubuntu.com/mirros.ustc.edu.cn/g' /etc/apt/sources.lise
RUN apt-get update
RUN apt-get install -y nginx
COPY index.html /var/www/html
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off"]
EXPOSE 80
#touch index.html
#docker build -t smilevt/hello-nginx .
#docker run -d -p 80:80 smilevt/hello-nginx
#curl http://localhost
Dockerfile語法
FORM????基于鏡像
RUN????執(zhí)行命令
ADD????添加文件,可以是遠(yuǎn)程文件
COPY????拷貝文件
CMD????執(zhí)行命令
EXPOSE????暴露端口
WORKDIR????指定路徑
MAINTAINER????維護(hù)者
ENV????設(shè)定環(huán)境變量
ENTRYPOINT????容器入口,如果和CMD同時存在,則CMD會成為參數(shù)
USER????指定用戶,一般容器不會讓root用戶直接執(zhí)行
VOLUME????mount point 指定容器掛在的卷
查看全部 -
Dockerfile創(chuàng)建鏡像
#mkdir d1
#cd d1
#touch Dockerfile
FROM alpine:latest
MAINTAINER smilevt
CMD echo "Hello Docker!"
#docker build -t hello_docker .
查看全部 -
#docker ps 查看docker進(jìn)程
#docker run -p 8080:80 -d nginx? 啟動nginx服務(wù)
#docker stop 容器ID 停止服務(wù)
#docker cp index.html 177sdafdikdffdd://usr/share/nginx/html
#docker commit -m 'fun' 容器ID nginx-fun? 保存改動生成一個新的鏡像
#docker images? 查看已有鏡像
#docker rmi 鏡像id? 根據(jù)鏡像ID刪除鏡像
#docker ps -a? 查看所有運行過的鏡像
#docker rm 鏡像ID? 刪除鏡像
#docker pull? 獲取鏡像
#docker build? 創(chuàng)建鏡像
查看全部 -
Linux 安裝
查看全部 -
安裝docker命令 :
$ sudo wget -qO-?https://get.docker.com/ | sh
默認(rèn)情況下不能使用非root用戶直接運行Docker命令,將當(dāng)前用戶(your_user)加入docker用戶組:
$?sudo usermod -aG docker your_user
查看全部 -
docker不是虛擬機(jī)
查看全部 -
什么是docker
查看全部 -
國內(nèi)倉庫
daocloud? 時速云? aliyun
查看全部 -
dockerfile:通過編寫簡單的文件自創(chuàng)Docker鏡像
查看全部 -
多APP撘建使用查看全部
-
dockerfile的語法:
查看全部 -
https://docs.docker.com/compose/install/#install-compose
查看全部 -
命令小結(jié)為:
查看全部 -
# Docker 簡介
預(yù)備知識:
Linux命令行
bash
云計算(最好)
粗糙地理解為輕量級的虛擬機(jī)
開掛的 chroot (chroot 對應(yīng)用程序做了文件系統(tǒng)的分離,和 Docker 有相似支持)
確實不是虛擬機(jī)
Mac安裝:下載-安裝-配置
```bash
#?
docker info
# Linux 下載安裝
# wget 下載? -q0 輸出不要那么多??
sudo wget -q0- https://get.docker.com | sh
sudo usermod -aG docker imooc
# 運行
docker run ubuntu echo hello docker
docker run -p 8080:80 -d daocloud.io/nginx
# 獲取 image
docker pull??
# 創(chuàng)建 image
docker build
# 運行 container
docker run nginx
# 查看鏡像 列出本地已有的 image
docker images
# 列出 container ,查找容器的 id ,查看正在運行的程序
docker ps
docker ps -a
# 刪除 container
docker rm?
# 刪除 image
docker rmi
# 在 host 和 container 之間拷貝文件
docker cp
# 保存改動為新的 image
docker commit?
```
> 通過 Dockerfile 創(chuàng)建 docker 鏡像
```bash
# 創(chuàng)建的新鏡像,有一個基礎(chǔ)鏡像
FROM alpine:latest
# 共享的時候告訴其他人這是我寫的
MAINTAINER xbf
# 運行容器產(chǎn)生的效果
CMD echo 'hello docker'
# 使用 Dockerfile 創(chuàng)建 image
docker build -t hello_docker .
docker images hello_docker
docker run hello_docker
```
創(chuàng)建 docker?
```bash
? docker_demo docker build -t hello_docker .
Sending build context to Docker daemon? 2.048kB
Step 1/3 : FROM alpine:latest
latest: Pulling from library/alpine
ff3a5c916c92: Pull complete?
Digest: sha256:e1871801d30885a610511c867de0d6baca7ed4e6a2573d506bbec7fd3b03873f
Status: Downloaded newer image for alpine:latest
?---> 3fd9065eaf02
Step 2/3 : MAINTAINER xbf
?---> Running in acc2605f5a54
Removing intermediate container acc2605f5a54
?---> 6f1e21aef2f8
Step 3/3 : CMD echo 'hello docker'
?---> Running in 2f3cfde96400
Removing intermediate container 2f3cfde96400
?---> 981b1f27eac9
Successfully built 981b1f27eac9
Successfully tagged hello_docker:latest
```
查看創(chuàng)建的 docker 鏡像
```bash
?docker_demo docker images hello_docker
REPOSITORY? ? ? ? ? TAG? ? ? ? ? ? ? ? ?IMAGE ID? ? ? ? ? ? CREATED? ? ? ? ? ? ?SIZE
hello_docker? ? ? ? latest? ? ? ? ? ? ? 981b1f27eac9? ? ? ? 38 seconds ago? ? ? 4.15MB
```
運行 docker
```bash
docker_demo docker run hello_docker
hello docker
```
第二個 Dockerfile?
```bash
FROM ubuntu
MAINTAINER xbf
RUN apt-get update
RUN apt-get install -y nginx
COPY index.html /var/www/html
ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"]
EXPOSE 80
```
Dockerfile 語法
```bash
# 指定 base image
FROM?
# 執(zhí)行命令
RUN
# 添加文件
ADD
# 拷貝文件
COPY
# 執(zhí)行命令
CMD
# 暴露端口
EXPOSE
# 指定路徑
WORKDIR?
# 維護(hù)者
MAINTAINER
# 設(shè)定環(huán)境變量
ENV
# 容器入口
ENTRYPOINT
# 指定用戶
USER
# mount point
VOLUME
```
> 鏡像分層
Dockerfile 中的每一行都產(chǎn)生一個新層。
每一層都有一個特定的獨立的 id
> Volume?
提供獨立于容器之外的持久化存儲。
```bash
docker run -v /usr/share/nginx/html nginx
```
# Registry
鏡像倉庫。
術(shù)語:
```
host? 宿主機(jī)
image 鏡像
container 容器
registry? 倉庫
daemon? 守護(hù)進(jìn)程
client? 客戶端
```
```
# 從遠(yuǎn)程倉庫
# 搜索鏡像
docker search whalesay
# 拉取鏡像
docker pull whalesay
# 推送鏡像
docker push myname/whalesay
```
官方 dockerhub 倉庫。
國內(nèi):
daocloud 、時速云、aliyun
```
# 拉取鏡像
docker pull docker/whalesay?
# 運行 docker/whalesay
docker run docker/whalesay cowsay Docker很Cool!
docker tag docker/whalesay mengcoder/whalesay
docker images # 查看? ?名字不同 id 相同的兩個鏡像
? docker_demo2 docker images
REPOSITORY? ? ? ? ? ?TAG? ? ? ? ? ? ? ? ?IMAGE ID? ? ? ? ? ? CREATED? ? ? ? ? ? ?SIZE
mengcoder/whalesay? ?latest? ? ? ? ? ? ? 6b362a9f73eb? ? ? ? 3 years ago? ? ? ? ?247MB
docker/whalesay? ? ? latest? ? ? ? ? ? ? 6b362a9f73eb? ? ? ? 3 years ago? ? ? ? ?247MB
# 登錄遠(yuǎn)程倉庫
docker login
# 推送鏡像到遠(yuǎn)程倉庫
docker push mengcoder/whalesay
```
> 多容器 app?
Mac 上 docker 已經(jīng)帶了 docker-compose? 。
user ->? nginx ->? ghost app ->? mysql
docker-compose.yaml? ?: 配置文件。
常用命令:
```
build? 本地創(chuàng)建鏡像
command? 覆蓋缺省命令
depends_on? 連接容器
ports? ?暴露端口
volumes? 卷
image? pull鏡像
```
docker-compose 命令
```
up 啟動服務(wù)
stop? 停止服務(wù)
rm? 刪除服務(wù)中的各個容器
logs? 觀察各個容器的日志
ps? 列出服務(wù)相關(guān)的容器
```
# 鏡像與容器
# 多容器 app
# 容器存儲
Docker 介紹
如何制作鏡像
如何分享鏡像
如何持久化容器數(shù)據(jù)(卷掛在)
如何編排一個多容器的應(yīng)用(yaml文件)
查看全部 -
curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname?-s )-$(uname -m) > /usr/local/bin/docker-compose
直接將對應(yīng)平臺的程序下載到本地輸出成為文件
查看全部
舉報