一、docker pull 方式
1、使用docker pull 镜像名称从dockerhub上拉取镜像
docker pull swoft/alphp
2、创建容器
docker run -itd --name swoft -v /data/swoft:/var/www/swoft -p 18306:18306 swoft/alphp
二、docker-compose 方式
docker-compose是docker的一种编排工具,通常用于编排一组服务,比如下面,编排了一个nginx,一个consul、三个swoft容器,并使用自定义网络
1、创建docker-compose.yml,如下
vi docker-compose.yml
# 编排php,redis,nginx容器
version: "3.6"
services:
swoft_110: #服务名称
image: swoft
container_name: swoft_110
ports:
- "18110:18306"
networks:
swoft_consul:
ipv4_address: 172.22.22.110
privileged: true
volumes:
- /data/docker-swoft:/var/www/swoft
working_dir: /var/www/swoft
command: php /var/www/swoft/bin/swoft http:start &
swoft_120:
image: swoft
container_name: swoft_120
ports:
- "18120:18306"
networks:
swoft_consul:
ipv4_address: 172.22.22.120
privileged: true
volumes:
- /data/docker-swoft:/var/www/swoft
working_dir: /var/www/swoft
command: php /var/www/swoft/bin/swoft http:start &
swoft_130:
image: swoft
container_name: swoft_130
ports:
- "18130:18306"
networks:
swoft_consul:
ipv4_address: 172.22.22.130
privileged: true
volumes:
- /data/docker-swoft:/var/www/swoft
working_dir: /var/www/swoft
command: php /var/www/swoft/bin/swoft http:start &
nginx:
image: nginx1.17
ports:
- "81:80"
networks:
swoft_consul:
ipv4_address: 172.22.22.20
container_name: nginx1.17
volumes:
- /data/nginx:/nginx
consul:
image: consul1.4
ports:
- "8500:8500"
networks:
swoft_consul:
ipv4_address: 172.22.22.30
container_name: consul1.4
command: ./consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul -node=ali -bind=172.22.22.30 -ui -client=0.0.0.0
networks: # 设置网络模块
swoft_consul: # 自定义网络
driver: bridge
ipam: #定义网段
config:
- subnet: "172.22.22.0/24"
注:这里只是使用实例,使用的镜像image都已经在我的本地拉取好了,如果你也照做的话会报错的,因为你本地没有这些镜像
2、启动编排的容器服务组
# 在docker-compose.yml文件所在目录执行
docker-compose up -d
3、到这里就启动了一组docker容器,可以通过docker ps -a
查看
三、Dockerfile方式
Dockerfile用于构建单个镜像,在Dockerfile中可以通过FROM、RUN、COPY、ADD、EXPOSE、CMD等命令定制一个自己想要的docker镜像。
1、编写Dockerfile
FROM swoft/alphp:fpm
EXPOSE 18306 18307 18308 18309
注:该Dockerfile会构建一个以swoft/alphp:fpm
为基础镜像的镜像,开放18306 18307 18308 18309端口
2、构建镜像
# 在Dockerfile所在目录执行
docker build -t swoft .
# 在构建时可以指定版本号,也就是docker images查看结果
docker build -t swoft:version_1 .
# 如果当前目录有多个Dockerfile,也可以同时指定构建使用的Dockerfile
docker build -t test:version_1 -f ./Dockerfile2 .
注:
-t: 镜像的名字及标签,通常 name:tag 或者 name 格式
-f :指定要使用的Dockerfile路径;
后面一定要跟一个.,这里的这个点的作用是指定构建上下文路径。
docker会使用我们指定的这个上下问路径进行构建镜像,如果是使用远程的Dockerfile,则不能有这个点,比如 docker build -t test:version_1 github.com/creack/docker-firefox
3、创建容器
上面我们通过自己编写Dockerfile定制了一个镜像,下面我们就是创建容器了。
docker run -itd --name swoft swoft/alphp