docker的常用命令
启动、开机自启动
systemctl start docker
systemctl enable docker
查看版本
docker version
查看docker启动状态
systemctl status docker
卸载
1、查询docker安装过的包
yum list installed | grep docker
2、删除安装包
yum remove docker-ce.x86_64 ddocker-ce-cli.x86_64 -y
3、删除镜像/容器等
rm -rf /var/lib/docker
docker镜像命令
查看镜像
docker images
搜索镜像
docker search 镜像名
拉取镜像
docker pull 镜像名
docker pull 镜像名:tag
删除镜像
#删除一个
docker rmi -f 镜像名/镜像ID
#删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID
#删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)
强制删除镜像
docker image rm 镜像名称/镜像ID
保存镜像
docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字
加载镜像
docker load -i 镜像保存文件位置
docker容器命令
查看运行的容器
docker ps
查看所有的容器
docker ps -a
运行一个容器
进入到容器内部
docker exec -it 容器id /bin/sh
删除所有容器
docker rm `docker ps -a -q`
查看容器日志
docker logs [选项] 容器名
[
-f #动态查看
-t #显示时间戳
--tail 20 #显示最近的20行
]
docker管理命令
参数 | 说明 |
---|---|
builder | 管理构建 |
config | 码头工人管理配置 |
container | 管理容器 |
engine | 管理docker引擎 |
image | 管理镜像 |
network | 管理网络 |
node | 管理群节点 |
plugin | 管理插件 |
secret | 管理码头工人的秘密 |
service | 管理服务 |
stack | 管理码头工人栈 |
swarm | 管理群 |
system | 管理码头工人 |
trust | 管理Docker映像上的信任 |
volume | 管理卷 |
命令
attach 将本地标准输入、输出和错误流附加到正在运行的容器中
build 从Dockerfile构建一个映像
commit 从容器的更改中创建一个新映像
cp 在容器和本地文件系统之间复制文件/文件夹
create 创建一个新容器
diff 检查容器文件系统上文件或目录的更改
events 从服务器获取实时事件
exec 在正在运行的容器中运行命令
export 将容器的文件系统导出为tar存档文件
history 显示图像的历史
images 图片列表
import 从tarball导入内容以创建文件系统映像
info 显示整个系统的信息
inspect 返回Docker对象的底层信息
kill 杀死一个或多个正在运行的容器
load 从tar存档或STDIN加载图像
login 登录到Docker注册表
logout 从Docker注册表注销
logs 获取容器的日志
pause 暂停一个或多个容器中的所有进程
port 列出容器的端口映射或特定映射
ps 列表容器
pull 从注册表中提取映像或存储库
push 将映像或存储库推入注册表
rename 重命名一个容器
restart 重新启动一个或多个容器
rm 移除一个或多个容器
rmi 删除一个或多个图像
run 在新容器中运行命令
save 将一个或多个图像保存到tar存档文件(默认情况下流到STDOUT)
search 在Docker集线器中搜索图像
start 启动一个或多个停止的容器
stats 显示容器资源使用统计数据的实时流
stop 停止一个或多个正在运行的容器
tag 创建一个引用SOURCE_IMAGE的标记TARGET_IMAGE
top 显示容器的运行进程
unpause 在一个或多个容器中暂停所有进程
update 更新一个或多个容器的配置
version 显示Docker版本信息
wait 阻塞,直到一个或多个容器停止,然后打印它们的退出代
Dockerfile
#分为四部分:
基础镜像信息 维护者信息 镜像操作指令 容器启动时执行的指令
======================================
FROM 设置镜像使用的基础镜像
MAINTAINER 设置镜像的作者
RUN 编译镜像时运行的脚本
CMD 设置容器的启动命令
LABEL 设置镜像的标签
EXPOESE 设置镜像暴露的端口
ENV 设置容器的环境变量
ADD 编译镜像时复制文件到镜像中
COPY 编译镜像时复制文件到镜像中
ENTRPOINT 设置容器的入口程序
VOLUME 设置容器的挂载卷
USER 设置运行RUN CMD ENTRYPOINT的用户名
WORKDOR 设置RUN ENTRPOINT COPY ADD指令的工作目录
ARG 设置编译镜像时加入的参数
ONBUILD 设置镜像的ONBUILD指令
STOPSIGNAL 设置容器的退出信号量
实例:将eureka-server.0.0.1.jar文件制作为镜像的dockerfile
=====================
from java:8
#作者
MAINTAINER author
VOLUME /tmp
#
ADD eureka-server-0.0.1-SNAPSHOT.jar eureka-server.jar
#容器暴露端口
EXPOSE 8761
#自定义环境变量
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/{TZ} /etc/localtime && echo "{TZ}" > /etc/timezone
#应用启动命令
RUN bash -c 'touch /eureka-server.jar'
ENTRYPOINT [ "java","-Xmx512m","-Xms512m","-jar","eureka-server.jar","--spring.profiles.active=ht" ]
===================
将Dockerfile文件和jar包放在同一位置,执行命令
docker build -t eureka-server:1.0 .
打包镜像为一个文件
#实例,保存nginx镜像为base.img文件
docker save nginx > base.img
#加载镜像文件到docker
docker load -i base.img
docker-compose.yaml实例
version: '2.4' #docker-compose版本
services:
nginx: # 服务名称
image: nginx:latest
container_name: nginx #容器名称
networks:
tg_net:
ipv4_address: 172.18.0.2
ports:
- 80:80 # 暴露端口
volumes: # 挂载
- /home/data/nginx/html:/usr/share/nginx/html
- /home/data/nginx/conf:/etc/nginx/ngixn.conf
- /home/data/nginx/log:/var/log/nginx
restart: always
privileged: true # 解决nginx的文件调用权限问题
mysql:
image: mysql:5.7.34
container_name: mysql
networks:
tg_net:
ipv4_address: 172.18.0.3
ports:
- 3306:3306
restart: always
privileged: true # 解决nginx的文件调用权限问题
environment: # 指定用户root的密码
- TZ=Asia/Shanghai
- MYSQL_ROOT_PASSWORD=ht654321
volumes:
- /home/data/mysql/data:/var/lib/mysql
- /home/data/mysql/conf/my.cnf:/etc/mysql/my.cnf
- /home/data/mysql/log:/var/log/mysql
- ./db:/docker-entrypoint-initdb.d #初始化脚本
command: --default-authentication-plugin=mysql_native_password #解决外部无法访问
redis:
image: redis:4.0.9
container_name: redis
networks:
tg_net:
ipv4_address: 172.18.0.4
ports:
- 6379:6379
volumes:
- /home/data/redis/data:/data
- /home/data/redis/conf/redis.conf:/redis.conf
restart: always
privileged: true
command: redis-server
eureka-server:
image: eureka-server:1.0
container_name: eureka-server
hostname: eureka-server
restart: always
privileged: true
volumes:
- ./logs/eureka-server:/home/logs/app/eureka-server
environment:
- SPRING_PROFILES_ACTIVE=ht
networks:
tg_net:
ipv4_address: 172.18.0.5
ports:
- 8761:8761
networks:
test_net:
ipam:
config:
- subnet: 172.18.0.0/16
- gateway: 172.18.0.1
#运行docker-compose编排
#在docker-compose.yaml文件路径下执行命令
docker-compose up -d