Docker 是一个开源的应用容器引擎,类似于虚拟机,但是docker比虚拟机更轻更简洁,非常适合快速部署跨平台的应用。
使用
在Ubuntu上做了几个小测试,大体上能够了解Docker怎么用了。
首先安装docker
在Ubuntu上用 apt install docker.io,在其他系统上软件包名字会有所不同构建docker image
docker采用了类似增量构建的方式,一层一层的在base image上添加功能。base image是各个linux发行版的最小镜像,由docker官方提供。我们在base image的基础上实现自己的功能。
docker使用Dockerfile构建image1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35#选择一个基础镜像,alpine是一个体积非常小的linux系统
FROM alpine:3.9
#在构建阶段,在系统里执行命令
#安装软件,alpine的包管理器为apk
#RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
RUN apk update
RUN apk add python
RUN apk add wget
#从其他地方获取文件
RUN wget --no-check-certificate https://github.com/shadowsocksr-backup/shadowsocksr/archive/3.1.2.tar.gz -O /tmp/3.1.2.tar.gz
RUN tar -xf /tmp/3.1.2.tar.gz -C /tmp/
RUN mv /tmp/shadowsocksr-3.1.2/shadowsocks/ /usr/local/
# 设置环境变量,构建时和运行时都有效
ENV port 8888
ENV password 888888888
ENV method aes-256-cfb
ENV protocol auth_aes128_md5
ENV obfs plain
ENV obfs_param []
#设置工作路径
WORKDIR /usr/local/shadowsocks/
#运行时执行的命令
CMD python server.py -p $port -k $password -m $method -O $protocol -o $obfs -G $obfs_param
#构建命令
#docker build -t ssr/alpine:1.0 .
#设置该image的tag为ssr/alpine 版本为1.0,版本不同image不同
#运行
#docker run --restart=always --env password=qwerasd -p 8888:8888 ssr/alpine:1.0
#通过--env传递环境变量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#另一种方式
FROM alpine:3.9
#如果速度慢,替换更新源为阿里云
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
RUN apk update
RUN apk add python
#从本地复制到image内,
#注意copy不会复制最外层目录,只会复制该目录内的内容(文件和文件夹),所有要在destination加一个文件夹
COPY ./shadowsocks/ /usr/local/shadowsocks/
WORKDIR /usr/local/shadowsocks/
#另一种运行方式
ENTRYPOINT ["python", "server.py"]
#运行
#sudo docker run -p 34567:34567 ssr -p 34567 -k 1234567
#使用原生方式设置参数
如果用配置文件的方式设置参数
1 | FROM alpine:3.9 |
- 部署运行容器
可以用自己构建的image为模板部署容器
docker run —restart=always —env password=qwerasd -p 8888:8888 ssr/alpine:1.0
—restart=always 系统重启后,docker也会自动重启容器。否则不会自动启动
也可以从docker hub下载别人构建好的image
docker pull wordpress
docker run wordpress 可以直接run,如果本地没有对应的image则会从hub下载
常用命令
sudo docker images 查看有效的镜像
sudo docker images -a 查看系统中所有镜像
sudo docker rmi xxx 删除ID为xxx镜像
sudo docker rmi ssr/alpine:3.9 使用tag删除镜像
sudo docker ps 查看运行中的容器
sudo docker ps -a 查看所有容器
sudo docker kill xxx 关闭ID为XXX容器
sudo docker rm xxx 删除ID为XXX容器
sudo docker run XXXX 运行容器
替换快速docker源
1 | # 创建或修改 /etc/docker/daemon.json 文件,重启服务 |