1.对docker的理解
- docker是世界领先的软件容器平台。
- docker技术属于操作系统层面的虚拟化技术。
- 容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
2.为什么要用docker
- 一致的运行环境:docker的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,即保证了开发、测试、生产环境的一致性。
- 迁移方便:可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上。
- 持续交付和部署:使用Docker可以通过定制应用镜像来实现持续集成、持续交付、部署。
- 隔离啊、快速启动等…
3.docker常用命令整理
3.1 docker的启动、停止、重启
service docker start
// 启动service docker stop
// 停止service docker restart
// 重启
3.2 docker对镜像的操作
docker rmi 镜像名:TAG
// 删除镜像名,若有此镜像创建的容器则应先删除容器,才能删除镜像docker images [镜像名]
// 不带镜像名则查询所有镜像docker pull ubuntu:18.04
// 获取ubuntu18.04版本的镜像docker search ubuntu
// 搜索ubuntu镜像 NAME:镜像仓库源的名称,DESCRIPTION:镜像的描述,OFFICIAL:是否docker官方发布
3.3 docker 对容器的操作
docker rm 容器名/容器ID
// 删除容器时,容器必须是停止状态docker ps
// 查看所有正在运行的容器docker ps -a
// 查看所有的容器docker logs -f 容器 ID
// 查看容器的标准输出docker exec -it mysql bash
// 进入运行的mysql容器docker start 容器名/容器ID
// 启动容器(容器名或者ID都行)docker stop 容器名/容器ID
// 停止容器docker restart 容器名/容器ID
// 重启正在运行的容器docker pull ubuntu:18.04
// 获取ubuntu18.04版本的镜像docker search ubuntu
// 搜索ubuntu镜像 NAME:镜像仓库源的名称,DESCRIPTION:镜像的描述,OFFICIAL:是否docker官方发布
4 创建镜像
当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。
- 从已经创建的容器中更新镜像,并且提交这个镜像
- 使用 Dockerfile 指令来创建一个新的镜像
4.1 更新镜像
更新镜像前,需要先使用镜像创建一个容器
root@lr-pc:~$ docker run -t -i ubuntu:15.10 /bin/bash
[root@f52630641520 /]#
按照需要对容器更改后,输入exit 退出容器,然后通过docker commit提交容器副本,以此来保存。
root@lr-pc:~$ docker commit -m=“has update” -a=“lirong” f52630641520 lr/ubuntu:v2
sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8
-m:更新说明,-a:作者信息, f52630641520 :容器ID
4.2 Dockerfile构建新镜像
# Docker image for build file run
# VERSION 0.0.1
# Author: Janche
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER Janche <lirong_xx@qq.com>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD demo.jar app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
# 指定容器需要映射到主机的端口
EXPOSE 8080
最后在Dockerfile文件所在目录下运行构建命令:
docker image build -t 镜像名 .
// 镜像名自己起,注意最后有一个点
5. 创建容器
5.1简单命令:
docker run -i -t ubuntu:15.10 /bin/bash
-t:在新容器内指定一个伪终端或终端。
-i:允许你对容器内的标准输入 (STDIN) 进行交互。
5.2部署项目时常用的命令
docker container run --rm -d -p 8081:8080 --name demo --link mysql:db demo-web
-d
: 在后台运行。-p
: 主机端口映射到容器端口。--rm
: 容器停止后删除此容器。--name
: 为容器起的别名。--link
: 连接其他的容器服务,db是为mysql容器起的别名,若是mysql服务的话,此别名一定得和代码中的数据库IP一致,即将jdbc:mysql://localhost:3306/data
改为jdbc:mysql://db:3306/data
。