systemctl start docker// 先启动docker服务
docker run hello-world // 运行hello-world镜像
官网命令帮助地址docker images | Docker Documentation
1,docker version//查看docker版本信息
2,docker info//查看docker系统信息,包括镜像和容器数量
镜像命令
3,docker images//查看所有本地的主机上的镜像
docker images -a//显示所有镜像
docker images -q//只显示镜像id
docker images -aq
4,docker search mysql//在dockerhub上搜索mysql镜像
5,docker pull mysql//默认拉取最新版mysql镜像
[root@localhost ~]# docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql // 分层下载,docker images 核心 联合文件系统
f7ec5a41d630: Pull complete
9444bb562699: Pull complete
6a4207b96940: Pull complete
181cefd361ce: Pull complete
8a2090759d8a: Pull complete
15f235e0d7ee: Pull complete
d870539cd9db: Pull complete
5726073179b6: Pull complete
eadfac8b2520: Pull complete
f5936a8c3f2b: Pull complete
cca8ee89e625: Pull complete
6c79df02586a: Pull complete
Digest: sha256:6e0014cdd88092545557dee5e9eb7e1a3c84c9a14ad2418d5f2231e930967a38 //签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest //真是地址
[root@localhost ~]#
docker pull mysql等价于docker.io/library/mysql:latest
docker pull mysql:5.7//指定版本下载 ,5.7必须在dockerhub上能查到的
6,docker rmi -f 450379344707 //强制删除镜像id为450379344707的镜像,删除多个 就写多个容器id,并用空格隔开
docker rmi -f mysql //也可根据名字来删除
docker rmi -f $(docker images -aq) //组合命令循环删除所有镜像,$() 用来传参,
容器命令
说明:有了镜像才可以创建容器
7,docker pull centos //下载一个最新centos镜像,这个只是个基础版的centos,很多命令都不完善
新建容器并启动:docker run [可选参数] image
参数说明:
-- name="name" // 给容器取一个名字 ,tomcat01、tomcat02 用来区分容器
-d //后台方式运行容器
-it //使用交互方式运行容器,进入容器查看日志等内容
-p //指定容器的端口 -p 8080:8080
-p ip:主机端口:容器端口(常用)
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
-P //随机指定端口
8,docker run -it centos /bin/bash //启动centos容器并进入容器
9,exit //从容器退回到主机 并停止运行容器
ctrl + p +q // 退出容器但不停止容器
10,docker ps //查看正在运行的容器
docker ps -a // 查看正在运行的容器+历史运行过的容器
docker ps -a -n 1 // -n 数字 只显示最近多少条
docker ps -q // -q只显示容器id
11,docker rm 容器id // 根据容器id删除容器,删不除运行中的容器
docker rm -f 容器id //强制删除容器
docker rm -f $(docker ps -aq) //删除所有容器
12,docker start 容器id //启动容器
docker restart 容器id // 重启容器
docker stop 容器id//停止容器
docker kill 容器id// 强制停止容器
13,docker run -d centos //后台启动centos容器
问题: docker ps 发现centos停止了
原因:docker容器使用后台运行就必须有一个前台进程,docker发现没有应用就会自动停止
13.1 ,
设置开机启动比如mysql:
docker update mysql --restart=always
开机启动比如mysql:
docker update mysql --restart=no
14,docker logs -f -t --tail 10 容器id // 查看容器最近10条日志,注意--tail 后面要跟一个数字参数
测试:
docker run -d centos /bin/sh -c "while true;do echo hahahahahhahaha;sleep 1;done"
docker logs -f -t --tail 5 2307b72f5e75
15,docker top 容器id //查看容器内部进程信息
UID:用户id
PIID:进程id
16,docker inspect 容器id //查看容器的元数据
17,进入容器
方式一:
docker exec -it 容器id /bin/bash // 进入容器开启一个新的终端,可以在里面操作(常用)
方式二:docker attach 容器id //进入执行的终端,不会启动新的进程
18,docker cp 容器id:/home/testCopy.java /home //将容器内/home路径下的testCopy.java文件拷贝到主机的home目录下
安装docker可视化管理看板portainer
docker run -d -p 8088:9000 \
> --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
然后访问ip:8088会出现一个登录页面然后让你创建一个账号密码,然后登进去会看到如下界面,比如容器、镜像数量等等信息:
19.自己的JAVA项目制作镜像
(1)先将自己的项目打成jar包demo-0.0.1-SNAPSHOT.jar,编写Dockerfile文件例如:
FROM openjdk:8-jdk-alpine WORKDIR /home/ ENV RUN_ENV="pro" ENV JAVA_OPTS="" ENV JAVA_OPTS_INNER=" -Xmx2048m -Xms2048m -Xmn768m " ADD demo-0.0.1-SNAPSHOT.jar app.jar ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS_INNER $JAVA_OPTS -Dspring.profiles.active=${RUN_ENV} -jar app.jar" ]
生成名称为demo,版本为v0的镜像:
docker build -t demo:v0 .
启动容器:
docker run -d --name demo -p 8083:8082 demo:v0
备注:8082为代码里的端口,8083为容器映射到宿主机的端口,-d为后台启动。
访问:服务器地址如http://192.168.64.131:8083/hello/h
20.导入导出镜像到本地
例:
导出hello word镜像
docker save d1165f221234 > /home/helloword.tar // 这种导入后看不见镜像名称和tag(参考docker 镜像导入导出_IChen.的博客-优快云博客_docker 导出镜像)
导出刚才导出的镜像
docker load < /home/helloword.tar
最后查看验证镜像
docker images