先了解系统版本代号

1
$ sudo lsb_release -cs

移除已安装的docker

1
$ sudo apt-get remove docker docker-engine docker.io

先安装必要的系统工具

1
2
3
4
5
6
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common

安装证书(任选其一)

1
2
3
4
5
6

# docker官方
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# aliyun的
$ curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

添加软件源信息

1
2
3
4
5
6
7
8
9
10
11

$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

# 镜像可以换成阿里云的
# https://download.docker.com/linux/ubuntu
# http://mirrors.aliyun.com/docker-ce/linux/ubuntu

# stable 是季度版本 可以最后添加 edge (每月版) 和 testing (测试版)

安装docker-ce

1
2
3

$ sudo apt-get update
$ sudo apt-get install docker-ce

查看docker版本

1
2

$ docker version

我的显示为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ docker version

Version: 17.06.2-ce
API version: 1.30
Go version: go1.8.3
Git commit: cec0b72
Built: Tue Sep 5 20:00:17 2017
OS/Arch: linux/amd64

Server:
Version: 17.06.2-ce
API version: 1.30 (minimum version 1.12)
Go version: go1.8.3
Git commit: cec0b72
Built: Tue Sep 5 19:59:11 2017
OS/Arch: linux/amd64
Experimental: false

docker使用

命令总结

1
2
3
4
5
6
7
$ docker pull/push # 拉取/推送镜像
$ docker run # 运行容器
$ docker images # 本地镜像列表
$ docker ps -a # 正在运行的镜像 -a:所有
$ docker stop [id] # 停止id这个容器
$ docker rm [id] # 移除id容器
$ docker rmi [name] # 移除name镜像

拉取容器镜像

1
2
$ docker pull mysql:5.6
$ docker pull wordpress:latest

运行容器镜像

1
2
$ docker run --name wp-mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6
$ docker run --name wp-wp --link wp-mysql -p 8080:80 -d wprdpress

–name : 容器命名

-e : 配置环境变量

-d : 让容器在后台运行

-p : 端口映射( 外部端口:内部端口 )

-i-t : 不清楚,一般都是两个一起加( -it )
-v : 挂载目录( 本地目录绝对路径:容器内目录 )
-w : 设置工作目录,执行命令时的当前目录
run 命令 后面还可以加上需要执行的命令及参数,如下

1
$ docker run --name my-node -d -it -v E:/develop/docker/:/home/node -p 8081:8888 -w /home/node node:6.11.3 /usr/local/bin/node ./hello.js

上面的命令就是启动node6.11.3镜像,并且命名为my-node,将(windows)宿主机E:/develop/docker/挂载到容器/home/node目录,并设置为工作目录,创建容器后执行/usr/local/bin/node命令运行/home/node/hello.js

进入容器操作

1
$ docker exec [OPTIONS] [容器id]] [执行命令] [参数]

Options:

-d :分离模式: 在后台运行

-t :分配一个伪终端

demo:

1
2
3
4
5
$ docker ps
CONTAINER ID IMAGE
197489c2c175 wordpress
$ docker exec -it 1974 /bin/bash #进入1974容器执行bash命令
root@197489c2c175:/var/www/html#

容器与宿主机互相复制文件

1
2
3
4
5
# 从docker容器复制到E盘根目录
$ docker cp 19748:/var/www/html/wp-includes/script-loader.php E:/

# 从E盘根目录复制script-loader.php到docker容器/var/www/html/wp-includes
$ docker cp E:/script-loader.php 19748:/var/www/html/wp-includes/

实战用docker制作Hexo博客

Hexo博客是用nodejs写的,所以docker镜像基于node的镜像

先拉取node镜像:

1
$ docker pull node:6.11.3