win10機器: docker下載: https://www.docker.com/products/docker#/windowshtml
win10以外的win機器: docker下載: https://www.docker.com/products/docker-toolboxmysql
boot2docker.iso下載地址:https://pan.baidu.com/s/1qYyc0aglinux
copy到用戶/.docker/machine/cache/下nginx
docker version 驗證git
macos機器: Yosemite 10.10.3+(2014/6)): https://www.docker.com/products/docker#/macgithub
ubuntu機器:web
uname -rredis
apt-get updatesql
apt-get install -y docker.iodocker
或者安裝最新版 curl -s https://get.docker.com|sh
docker version
service docker start
docker version
第一個docker鏡像:
docker pull [OPTIONS] NAME[:TAG]
docker images [OPTIONS][REPOSITORY][:TAG]
docker images
docker pull hello-world
docker images
docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]
docker run hello-world
實踐前奏
#持久運行的容器
#前臺掛起&後臺運行
#進入容器內部
docker pull hub.c.163.com/library/nginx:latest
docker run hub.c.163.com/library/nginx:latest
docker run -d hub.c.163.com/library/nginx:latest --後臺啓動
docker ps --查看運行的docker
docker exec -it 9ffb2a bash
docker stop [id號]
Docker網絡
#網絡類型
Bridge Host None
#端口映射
docker run -d -p 80:80 hub.c.163.com/library/nginx:latest
netstat -na|grep 8080
docker容器的commit
docker cp [文件] id://usr/share/nginx/html --複製到docker容器
docker run .........
docker commit -m 'fun' id號 nginx-fun --保存新的image
docker rmi id號 --刪除image
docker stop id號 --中止container
docker ps -a --(歷史??)
docker rm id號 ---刪除container
docker cp --host 與 container 之間 copy
製做本身的鏡像
#Dockerfile
#docker build
#Jpress: http://jpress.io/
Dockerfile語法:
命令 用途
from base image
run 執行文件
add 添加文件(能夠添加遠程文件)
copy 拷貝文件
cmd 執行命令
expose 暴露端口
workdir 指定路徑
maintainer 維護者信息
env 設定環境變量
entrypoint 容器入口
user 指定用戶
volume mount point
vim Dockerfile
from tomcat
MAINTAINER LZP LZP@163.com
COPY Jpress.war /usr/local/tomcat/webapps/
docker build -t jpress:latest .
docker run -d -p 8080:8080 jpress
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=jpress mysql
...
docker restart bf7f65e9d407
volume獨立於容器以外的持久化
1.
docker run -d --name nginx -v /usr/share/nginx/html registry.cn-beijing.aliyuncs.com/opendcp/nginx
docker inspect nginx
macos: screen ~/Library/...../tty
cd ......
linux: cd /var/lib/docker/volumes/6e40d92ac1795827bd6e156962ef99056a58fd1aa9e1ab138c39978feee20712/_data
===> 容器的 /usr/share/nginx/html
2.
mkdir d2
cd d2
docker run -d -p 80:80 -v $PWD/html:/usr/share/nginx/html registry.cn-beijing.aliyuncs.com/opendcp/nginx
curl http://localhost
3.
mkdir d3
cd d3
mkdir data
docker create -v $PWD/data:/var/mydata --name data_container ubuntu
docker run -it --volumes-from data_container ubuntu /bin/bash --it ....... /bin/bash交互的方式運行
mount命令 能夠查看到/var/mydata掛載到當前容器
Registry
鏡像倉庫
host 本機
image 鏡像
container 容器
redistry 倉庫
daemon 守護進程
client 客戶端
docker search whalesay
docker pull whalesay
docker push myname/whalesay
國內的一些倉庫
daocloud
時速雲
aliyun
docker tag xx/xx aa/bb
docker images 查看會多出一個images叫aa/bb的鏡像, 和xx/xx同樣的, 至關有複製
docker login
Username: xxx
Password: xxx
docker push aa/bb
docker-compose 工具安裝
mak/windows: 自帶
Linux: curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod a+x docker-compose
docker-compose --version
mkdir ghost; cd ghost; mkdir ghost nginx data
cd ghost; touch Dockerfile
from ghost
copy ./config.js /var/lib/ghost/config.js
expose 2368
cmd ["npm","start","--production"]
cp ../../backup/ghost/config.js
cd ../nginx; touch Dockerfile
from nginx
copy nginx.conf /etc/nginx/nginx.conf
expose 80
touch nginx.conf
worker processes 4;
event{
worker_connections 1024;
}
http{
server{
listen 80;
location / {
proxy_pass http://ghost-app:2368
}
}
}
cd ..
touch docker-compose.yml
version: '2'
networks:
ghost:
services:
ghost-app:
build: ghost
networks:
- ghost
depends_on:
- db
ports:
- "2368:2368"
nginx:
build: nginx
networks:
- ghost
depends_on:
- ghost-app
ports:
- "80:80"
db:
image: "mysql:5.7.15"
networkds:
- ghost
environment:
MYSQL_ROOT_PASSWORD: mysqlroot
MYSQL_USER: ghost
MYSQL_PASSWORD: ghost
volumes:
- $PWD/data:/var/lib/mysql
ports:
- "3306:3306"
docker-compose up -d
docker-compose stop
docker-compose rm
docker-compose build
docker-compose up -d
docker-compose.yml 經常使用命令:
命令 用途
build 本地建立鏡像
command 覆蓋缺省命令
depends_on 鏈接容器
ports 暴露端口
volumes 卷
image pul鏡像
up 啓動服務
stop 中止服務
rm 刪除服務中的各個容器
logs 觀察各個容器的日誌
ps 列出服務的相關的容器
Redhat & CentOS機器: http://www.imooc.com/article/16448
CentOS7爲例安裝
一、安裝Docker
參見:https://docs.docker.com/engine/installation/linux/centos/
二、直接使用root安裝(更新系統)
yum update
3.配置docker鏡像源
tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
4.安裝docker
yum install docker-engine
root: sudo wget -qO- https://get.docker.com/ | sh
sudo usermod -aG docker [用戶名] --用戶加入docker組
docker version
5.啓動docker
安裝完成後,使用下面的命令來啓動 docker 服務,並將其設置爲開機啓動:
(LCTT 譯註:此處採用了舊式的 sysv 語法,如採用CentOS 7中支持的新式 systemd 語法,以下:
)
----國內鏡像加速器配置
DaoCloud加速器: 首先在http://www.daocloud.io/進行註冊登陸。而後點擊加速器。
阿里雲加速器:
加速器:https://cr.console.aliyun.com/#/accelerator
卸載
1.查詢安裝過的包
yum list installed | grep docker
docker-engine.x86_64 17.03.0.ce-1.el7.centos @dockerrepo
2.刪除安裝的軟件包
yum -y remove docker-engine.x86_64
3.刪除鏡像/容器等
rm -rf /var/lib/docker