赞
踩
镜像命令:
docker images ——查看本地仓库所有镜像
docker pull 镜像名:镜像tag(版本) ——从远程仓库拉取该镜像,不写版本默认latest
docker search 镜像名:镜像tag(版本) —— 远程仓库查找该镜像,不写版本默认latest
docker rmi 镜像名:镜像tag(版本) ——删除本地仓库镜像,不写版本默认latest
docker rmi -f 镜像名:镜像tag(版本) ——强制删除本地仓库镜像,不写版本默认latest
docker images -q ——查看所有镜像的id
docker rmi -f $(docker images [镜像名] -q) ——删除所有[镜像名的]镜像
例:docker rmi -f $(docker images tomcat -q) ——删除所有tomcat镜像
容器命令(常用):
docker run -d -p 本机端口号:容器端口号 --name 容器名 镜像id/镜像名:tag ——后台运行一个容器,并设置本地和容器内部的端口映射
例:docker run -d -p 8081:8080 --name tomcat01 tomcat:8.0 ——后台运行tomcat:8.0这个镜像,本机端口8081映射容器内部端口8080,容器名tomcat01。外部访问tomcat01路径:http://本地ip地址:8081
docker stop 容器id/容器名——停止正在运行的容器
docker start 容器id/容器名——启动停止的容器
docker restart 容器id/容器名——重启容器
docker pause 容器id/容器名——暂停一个容器
docker unpause 容器id/容器名——取消暂停
docker rm 容器id/容器名——删除容器
docker rm -f 容器id/容器名——强制删除容器
docker kill 容器id/容器名——杀死容器,和rm的区别是rm会让容器有个缓冲时间再关闭
docker ps -a ——查看所有容器
docker ps -aq ——查看所有容器的id
docker exec -it 容器id/容器名 bash ——进入一个容器内部,bash窗口操作
docker cp 文件 容器id/容器名:路径 —— 将本地文件拷贝到容器中
docker cp 容器id/容器名:文件 本地路径 ——将容器中的文件拷贝到本地
docker top 容器id/容器名——查看容器内运行进程
docker inspect 容器id/容器名——查看容器内部细节
docker run -v 本机绝对路径:容器路径——添加数据卷,清空容器内路径的内容
docker run -v 本机绝对路径:容器路径 ro——添加数据卷、容器内路径只读,清空容器内路径的内容
docker run -v 本机文件夹别名:容器路径——添加数据集、不清空容器内路径的内容
docker commit -m "描述信息" -a "作者" 容器id/容器名 镜像名:tag ——将容器打成镜像
docker save 镜像名:tag -o tar文件名——将镜像打成tar包
docker load -i tar文件——将tar文件加载为镜像
docker run -d -p 3306:3306 --name mysql01 --restart=always -v /home/lzh/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
docker pull mysql:5.7
解释:-d后台运行,-p端口映射,--name给容器起名字,--restart=always容器会随着docker引擎的重启动而重启动,-v设置容器数据卷持久化保存mysql数据,-e MYSQL_ROOT_PASSWORD=123456 设置mysql容器访问账号root密码123456
redisconfig下存放redis.conf 只需配置需要的内容如:
第一种方式:
docker run -d -p 6379:6379 --name redis01 --restart=always -v /home/lzh/data/redis:/data redis:6.08 redis-server --appendonly yes
--appendonly yes 代表使用aof持久化,生成在/data文件夹下,同步到本机/home/lzh/data/redis
第二种方式:
docker run -d -p 6379:6379 --name redis01 --restart=always -v /home/lzh/data/redisconfig:/data redis:6.0 redis-server /data/redis.conf
- appendonly yes #开启aof持久化方案
- appendfilename aa.aof #aof生成文件名
这样就会在本机redisconfig生成aa.aof文件到本机备份了
用处:
容器间通信,当两个容器处于一个网桥上时可以互相发送请求,如:当两个tomcat容器,可以在容器内部使用 curl http://ip或容器名:8080互相访问
docker network create -d bridge 网络名称——创建网桥
docker network ls ——查看网络
docker network inspect 网络名——查看网络细节
docker network rm 网络名——删除网络
docker network prune ——删除没被使用的网络
docker run --network 网络名——运行容器时将容器加入到某个网络
docker network connect 网络名 容器名/容器id ——运行容器后将一个容器加入 一个网络
docker inspect 容器名/容器id 查看容器IP
docker容器启动时默认加入docker0网桥,只有在同一个网络下的容器才能互相访问,默认情况容器启动便可以互相访问。
docker volume create 数据卷别名——创建一个数据卷
docker volume ls——列出全部数据卷
docker volume rm 数据卷名称——删除数据卷
docker volume inspect 数据卷名称——查看数据卷详细信息
Dockerfile就是docker镜像的描述文件
作用:管理容器,一次可以启动多个容器并且管理先后顺序、设置网络。一个正在运行的容器即是一个服务。
下载docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose
添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
启动命令
docker-compose up
编写方式和Dockerfile类似,需要编写docker-compose.yml文件
示例(Dockerfile,docker-compose.yml同时使用):
创建一个最简单的SpringBoot的demo,连接mysql提供一个查询接口。
mysql连接url,其中mysql:3306中的mysql是服务名。
jdbc:mysql://mysql:3306/dockertest?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
Dockerfile:
- FROM openjdk:8-jre
- WORKDIR /home/lzh/
- ADD ./demo-0.0.1-SNAPSHOT.jar ./demo.jar
- EXPOSE 8989
- ENTRYPOINT ["java","-jar"]
- CMD ["demo.jar"]
docker-compose.yml
version:"3.3" services: mysql: #服务名 image: mysql:8.0 ports: - "3306:3306" #端口映射 networks: - demo #设置网桥 environment: MYSQL_ROOT_PASSWORD: 123456 #设置mysql访问账号密码 volumes: "/home/lzh/mysql/bak:/var/lib/mysql" #设置mysql持久化 restart: always #随着docker重启动 demo: #demo服务名 build: ./ #Dockerfile方式构建,指定Dockerfile路径 depends_on: mysql #mysql服务启动差不多了再启动 networks: - demo #和mysql同一个网桥 ports: - "8989:8989" #暴露端口 networks: demo: #docker-compose up执行时会先创建demo网桥
将demo的jar包和Dockerfile,docker-compose.yml放在同一个目录并进入该目录
执行docker-compose up
启动成功。接口也能正常访问。
更多请移步至中文手册:https://www.coonote.com/docker/docker-tutorial.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。