Docker实例实践
Docker 容器使用
查看运行的容器
查看正在运行的容器:docker ps 来查看我们正在运行的容器:
使用 docker port 可以查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号。
查看程序日志
docker logs [ID或者名字] 可以查看容器内部的标准输出
查看程序容器的进程
我们还可以使用 docker top 来查看容器内部运行的进程
检查程序的参数
使用 docker inspect 来查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。
停止容器
使用 docker stop
重启容器
已经停止的容器,我们可以使用命令 docker start 来启动。
docker ps -l 查询最后一次创建的容器:
正在运行的容器,我们可以使用 docker restart 命令来重启
移除容器
我们可以使用 docker rm 命令来删除不需要的容器
注:删除容器时,容器必须是停止状态,否则会报如下错误
1.Docker之官方仓库镜像部署
Docker 镜像加速
在学习Docker的过程中,下载镜像速度特别慢,这是因为Docker Hub并没有在国内部署服务器或者CDN,再加上国内的网速慢等原因,镜像下载就十分耗时。为了克服跨洋网络延迟,能够快速高效地下载Docker镜像,最为有效的方式之一就是:使用 国内的Docker镜像源,Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:
网易:https://hub-mirror.c.163.com/
阿里云:https://<你的ID>.mirror.aliyuncs.com
七牛云加速器:https://reg-mirror.qiniu.com
当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务。
对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件):
{“registry-mirrors”:[“https://reg-mirror.qiniu.com/”]}
之后重新启动服务:
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
Docker实例
Docker 安装 Nginx
1、 从Docker Hub上查找nginx镜像,默认是最新版本 nginx:latest
docker search nginx
2、拉取官方的镜像docker pull nginx不指定版本,默认下载最新版本
3、使用docker images nginx命令,查看我们拉取到本地的nginx镜像IMAGE ID
4、运行容器: docker run --name mynginx -p 80:80 -d nginx
参数说明:
-d nginx: 设置容器在在后台一直运行
--name 指定容器名称,此处我指定的是mynginx
-p 指定主机与容器内部的端口号映射关系,格式 –p [宿主机端口号]:[容器内部端口],此处我使用了主机80端口,映射容器80端口
5、使用docker ps命令,可以查看到正在运行的nginx容器
6、安装成功,我们可以通过浏览器可以直接访问 80 端口的 nginx 服务:
7、停止nginx:docker stop mynginx
8、启动nginx:docker start mynginx
9、重启 :docker restart mynginx
Docker 安装 Node.js
1、从Docker Hub上查找node镜像,默认是最新版本 node:latest
docker search node
2、拉取官方的镜像docker pull node不指定版本,默认下载最新版本
3、使用docker images node命令,查看我们拉取到本地的node镜像IMAGE ID
4、运行容器: docker run -itd --name node-test node
参数说明:
-I :以交互模式运行容器,通常与 -t 同时使用;
-t :为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-d :后台运行容器,并返回容器ID;
–name : 指定容器名称,此处我指定的是node-test
5、安装成功,最后进入查看容器运行的 node 版本:
docker exec -it node-test /bin/bash
node -v
Docker之本地构建镜像推送到私有仓库执行部署
linux上将可运行的jar打包为 docker的镜像文件,以/auto-deploy-1.4.2.jar(自动化部署包)为例子
1、我们要有安装了docker环境的机器,把 auto-deploy-1.4.2.jar放入/auto-deploy-1.4.2目录下(此目录任意)
2、创建一个文件来存放打包镜像的命令
touch Dockerfile
使用 vi 或者 vim编辑Dockerfile文件
vim Dockerfile
新增内容到Dockerfile文件中,
FROM openjdk:8-jdk-alpine
RUN echo "Asia/Shanghai" > /etc/timezone
ADD ./auto-deploy-1.4.2.jar app.jar
CMD ["nohup", "java", "-jar", "-Dfile.encoding=UTF-8", "/app.jar", "&"]
FROM 指需要使用的java版本,
RUN 修改时区:以 openjdk-8-jdk-alpine 为基础镜像制作的镜像有时区问题。查资料知道 alpine 本身不带时区信息
ADD 指需要用哪个jar打包镜像,打包后的文件名称是什么,
CMD指,如果当前镜像在容器中启动,执行的命令。
3、build一下:docker build -t auto-deploy1.4.2 .
注:auto-deploy1.4.2 . 指的是镜像名称,注意后面一定要有个点,指当前路径。
4、查看当前拥有的镜像:docker image ls (docker images)
5、给本地镜像auto-deploy1.4.2打上tag
docker tag auto-deploy1.4.2:latest 10.1.152.21/ideploy_auto/auto-deploy1.4.2:latest
6、推送镜像到私有仓库:docker push 10.1.152.21/ideploy_auto/auto-deploy1.4.2:latest
7、在ideploy拉取私有仓库的ideploy_auto/auto-deploy1.4.2执行部署
8、登陆hub:
docker login dockerhub.iflytek.com -u 《用户名》 -p 《密码》
9、拉取镜像
docker pull ideploy_auto/auto-deploy1.4.2:latest
10、执行部署
docker run --name=“test-auto-deploy” -e path=/home/cis -v /config:/config -v /iflytek/zyy-docker/:/iflytek/ap/auto-deploy/log -p 7082:80/TCP -d auto-deploy1.4.2:latest
参数说明:
-d: 设置容器在在后台一直运行
--name :指定容器名称,此处我指定的是test-auto-deploy
-e :设置环境变量
-v :给容器挂载数据卷:Source为外部路径
指定主机与容器内部的端口号映射关系,格式 –p [宿主机端口号]:[容器内部端口],
10、停止:docker stop test-auto-deploy
11、启动:docker start test-auto-deploy
12、重启 :docker restart test-auto-deploy