win10机器: docker下载: https://www.docker.com/products/docker#/windows
win10之外的win机器: docker下载: https://www.docker.com/products/docker-toolbox
boot2docker.iso下载地址:https://pan.baidu.com/s/1qYyc0ag
copy到用户/.docker/machine/cache/下
docker version 验证
macos机器: Yosemite 10.10.3+(2014/6)): https://www.docker.com/products/docker#/mac
ubuntu机器:
uname -r
apt-get update
apt-get install -y docker.io
或者安装最新版 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为例安装
1、安装Docker
参见:https://docs.docker.com/engine/installation/linux/centos/
2、直接使用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 服务,并将其设置为开机启动:
- [root@localhost ~]# service docker start
- [root@localhost ~]# chkconfig docker on
(LCTT 译注:此处采用了旧式的 sysv 语法,如采用CentOS 7中支持的新式 systemd 语法,如下:
- [root@localhost ~]# systemctl start docker.service
- [root@localhost ~]# systemctl enable docker.service
)
----国内镜像加速器配置
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