万能命令

批量启动 Docker 容器

docker start $(docker ps -aq)     # 启动所有容器

docker start $(docker ps -aq -f status=exited)    # 启动所有状态为exited 的容器,和上面的命令效果一致

centos写脚本实现开机自启

对于有 link 有依赖项的需要先把对应的依赖项先启动,比如说我们有一个 identityserver 的 docker 容器(auth-server),别的容器启动的时候会 link 它,这时候就需要先启动 auth-server 再启动其他容器,这时启动脚本则需要稍加修改

docker start auth-server # 先启动 auth-server 容器

docker start $(docker ps -aq -f status=exited) # 再启动所有状态为exited 的容器

Centos 配置开机启动脚本启动 docker 容器

写一个启动 startup 脚本,在系统启动的时候执行它

在一个你想放启动脚本的地方创建一个 startup.sh,我这里创建在了 /usr/local/scripts/startup.sh

文件内容如下:

#!/bin/bash
# start docker container
docker start auth-server
docker start $(docker ps -aq -f status=exited)
设置文件权限:
sudo chmod +x /usr/local/scripts/startup.sh
设置开机启动
在 /etc/rc.d/rc.local 文件中添加开机启动执行脚本

sudo vi /etc/rc.d/rc.local 编辑文件,添加自定义的启动脚本

cmd docker 启动多个服务 docker批量启动容器_centos

touch /var/lock/subsys/local

/usr/local/scripts/startup.sh # 新增自定义启动脚本

设置文件权限

chmod +x /etc/rc.d/rc.local

重启验证

执行 sudo reboot 重启服务器,稍后重新连接,执行 docker ps 查看在运行的 docker 镜像,有 docker 在运行就说明我们的启动脚本正常执行了~~

把jar包变成docker容器的方法

1、首先下载java镜像

docker pull java:8

2、新建一个工作目录,拷贝jar包进去(我创建在usr/mydocker)

mkdir mydocker

cd mydocker

copy /xxx/app.jar ./

cmd docker 启动多个服务 docker批量启动容器_cmd docker 启动多个服务_02

3、新建一个Dockerfile文件

vi Dockerfile

文件内容如下:

FROM java:8
MAINTAINER freebytes.net
WORKDIR /test
COPY app.jar /test/app.jar
CMD ["java","-jar","app.jar","-Dfile.encoding=utf-8"]

代码解释

FROM java:8 ——表示基于java:8镜像构建

MAINTAINER author——表示构建作者为 author

WORKDIR /test ——表示指定容器内的工作目录为/test

COPY ——拷贝app.jar到容器工作目录/test

CMD ——执行java启动jar的指令。

4、构建镜像

docker build -t app-docker .

cmd docker 启动多个服务 docker批量启动容器_docker_03

表示从当前目录构建镜像,这条命令会把当前目录下文件全部打包发送到docker引擎服务端,然后在服务端根据Dockerfile进行构建操作。

5、构建成功后,启动容器

docker run -it -p 8888:8888 --name app -d my-docker

cmd docker 启动多个服务 docker批量启动容器_jar_04

日志查看

查看运行的容器日志: 

sudo docker logs -f -t --tail 行数 容器名

cmd docker 启动多个服务 docker批量启动容器_centos_05