Docker的安装及使用
记录 Docker 在 CentOS7 下的安装与常用命令
环境:
- CentOS7
安装 Docker
CentOS7 系统 CentOS-Extras 库中已带 Docker,可以直接安装:
非最新版本安装
$ sudo yum install docker
最新版本安装
1 | $ sudo yum install -y yum-utils |
查看 Docker 版本
docker version
docker info
启动 Docker
$ sudo service docker start
设置随系统启动
$ sudo chkconfig docker on
Docker 的基本操作
容器操作
docker [run|start|stop|restart|kill|rm|pause|unpause]
docker run/create [镜像名]
创建一个新的容器并运行一个命令docker start/stop/restart [容器名]
启动/停止/重启一个容器docker kill [容器名]
杀死容器,不等待进程的响应时间docker rm [容器名]
删除已经停止的容器docker pause/unpause [容器名]
暂停/恢复容器中的进程
docker [ps|inspect|exec|logs|export|import]
docker ps [-a]
查看容器列表(默认查看运行时的容器,-a 查看所有容器)docker inspect [容器名]
查看容器配置元数据docker exec -it [容器名] /bin/bash
进入容器环境中交互操作docker logs --since="2021-08-01" -f --tail=10 [容器名]
查看容器日志docker cp path1 [容器名]:path
容器与主机之间的数据拷贝docker export -o test.tar [容器名]
docker export [容器名] >test.tar
文件系统作为一个 tar 归档文件docker import test.tar [镜像名:版本号]
导入归档文件,成为一个镜像
镜像操作
docker images|rmi|tag|build|history|save|load]
docker images
列出本地镜像列表docker rmi [镜像名:版本号]
删除镜像docker tag [镜像名:版本号][仓库]
标记本地镜像,将其归入某一仓库docker build -t [镜像名:版本号] [path]
Dockerfile 创建镜像docker history [镜像名:版本号]
查看指定镜像的创建历史docker save -o xxx.tar [镜像名:版本号]
docker save [镜像名:版本号] > xxx.tar
将镜像保存成 tar 归档文件docker load --input xxx.tar
docker load < xxx.tar
从归档文件加载镜像
交互式创建容器并进入
启动 docker 前台进程docker run -it --name [镜像名:版本号] /bin/bash
退出并关闭容器exit
退出不关闭容器Ctrl + P + Q
启动 docker 后台进程docker run -d --name [镜像名:版本号] /bin/bash
进入已运行的容器docker exec -it [容器名] /bin/bash
Docker 容器的主业
在 Docker 理念中,容器启动时,应当为它指定主业是什么,如 nginx 的容器主业是 nginx 代理服务,tomcat 容器的主业是 web 服务等。
容器创建时,必须指定主业任务,如不指定,则容器退出。
在 dockerfile 打包镜像时,可以使用 cmd 命令来指定一个默认的主业,如:
1 | # base image |
既然镜像里是默认主业,则意味着在创建容器时,可以覆盖此默认命令,如:
1 | docker run -d --name test2 2825bf46c0e8 echo "hello" |
推荐的 ENTRYPOINT 方式
镜像本身应该有稳定的主业,应当指定后不能更改用途,于是引入 ENTRYPOINT,使用 ENTRYPOINT 定义容器入口,它不能被 run 中的 CMD 命令覆盖,如:
1 | # base image |
执行 docker build -t nginxx:v3
手动打包 SpringBoot 镜像
将 SpringBoot 打包好的 jar 包上传
在同级目录下,创建 Dockerfile 文件
1
2
3
4
5[root@localhost web]# vi Dockerfile
FROM openjdk:8 #含 jdk8 的镜像
ADD ["member-1.0.jar", "web.jar"]
EXPOSE 8090
ENTRYPOINT ["java", "-jar", "/web.jar"] #入口命令启动jardockerfile 打包业务镜像
1
2
3
4
5[root@localhost web]# docker build -t member:v1
Sending build context to Docker deamon 17.69 MB
Step 1/4 : FROM openjdk:8
...
Successfully built 10437e588305启动镜像,即得到业务运行
docker run -d -p 8090:8090 --name member member:v1
打开浏览器校验页面