Docker常用命令

基本命令

# 测试镜像 hello-world
docker pull hello-world

# 从官方仓库下载镜像
docker pull mariadb

# 查看镜像列表
docker images

# 从镜像运行启动容器
docker run redis
docker run hello-world

# 查看容器
docker ps       #查看运行的容器
docker ps -a    #all,查看全部容器,包括已退出

镜像命令测试

docker tag redis redis:6  # 给镜像添加名称

docker images

docker rmi redis  # 从镜像上把名称撕掉

docker images

# 删除所有容器
docker rm -f $(docker ps -aq)

docker rmi redis:6   # 在撕掉最后一个名称时,会从磁盘删除镜像

docker images

# 导出镜像
docker save benwang6/cerebro:0.9.4 rabbitmq:management | gzip > a.gz
# 导入镜像
docker load -i a.gz

容器命令测试

# 启动的容器中默认执行命令
docker history redis

# 启动新的容器时,覆盖CMD默认命令
# 参数i:交互
# 参数t:终端
docker run redis pwd
docker run redis touch f1.txt
docker run redis ls -a -l
docker run redis env
docker run -it redis bash
redis-server

# redis默认使用6379端口,使用6380端口启动redis
docker run redis redis-server --port 6380

# 覆盖 ENTRYPOINT 和 CMD
# 镜像前面覆盖 ENTRYPOINT
# 镜像后面覆盖 CMD
docker run --entrypoint touch redis f1.txt
docker run --entrypoint ls redis -a -l

# -d后台运行
docker run -d redis

docker ps
docker ps -a

# 进入容器,执行容器内的命令
docker exec -it 84d pwd
docker exec -it 84d ls /
docker exec -it 84d bash

# --name 为容器命名
# --restart=always 服务器或docker系统重启后,容器可以自动跟随系统一起重启
docker run -d --name r1 redis

docker run -d --name r2 --restart=always redis

docker ps
# 重启docker系统服务
systemctl restart docker

docker ps  # r2随系统一起重启

# 手动启动已经停止的容器
docker restart r1
docker restart 84d

# 清理所有容器
docker rm -f $(docker ps -aq)

# --rm 容器停止时,系统自动删除容器
docker run -d --name r1 redis

docker run -d --name r2 --rm redis

# 停止两个容器,r2停止时会被系统自动删除
docker stop r1 r2   # 等待一段时间(10秒),等待容器内的应用执行关闭过程
docker kill r1 r2   # 不等待,直接关闭

# 查看容器
docker ps -a

# 重启 r1 容器
docker restart r1

# 复制文件到r1容器
docker cp 宿主机文件路径  容器文件路径
docker cp 容器文件路径    宿主机文件路径 

docker cp ~/ip-static  r1:/root/
# 进入容器查看
docker exec -it r1 ls /root/

# 从容器向宿主机复制文件
docker cp r1:/usr/local/bin/redis-server ~/

ls


# redis容器持久化文件 dump.rdb 存储到宿主机指定目录,避免文件随容器一起被删除
# -v 宿主机路径:容器路径
# 宿主机目录路径会自动创建
docker run -d --name r2 \
-v /opt/r2:/data \
redis

# 在 r2 中添加数据
docker exec -it r2 redis-cli
set a aa
set b bb
set c cc
save    # 做数据持久化,数据会存储到 dump.rdb文件

# 回到宿主机查看宿主机上的文件
exit
ls /opt/r2

# 删除r2容器,这时不会删除宿主机的文件 /opt/r2/dump.rdb
docker rm -f r2

# 重新运行启动一个新的容器,把dump.rdb挂载到容器,redis可是使用挂载的文件重新恢复数据
docker run -d --name r2 \
-v /opt/r2:/data \
redis

docker exec -it r2 redis-cli
keys *

# 新建数据卷
docker volume create my-vol
# 查看数据卷
docker volume ls
docker inspect my-vol

# 把my-vol数据卷挂载到容器
docker run -d --name r3 \
-v my-vol:/data \
redis

# 查看容器的挂载详情
docker inspect r3

# 清理
docker rm -f $(docker ps -aq)
# 删除数据卷
docker volume rm my-vol


# 启动mysql,把容器的3306端口映射到宿主机的3306端口
docker run -d --name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root \
mariadb

# windows的cmd命令行,连接服务器的mysql容器
mysql -uroot -p -h192.168.xxx.xxx

# 删除容器
docker rm -f mysql
# 用--net host方式,让容器直接使用宿主机端口
docker run -d --name mysql \
--net host \
-e MYSQL_ROOT_PASSWORD=root \
mariadb


# 查看虚拟网络
docker network ls

# 查看默认bridge网络详情:172.17.0.0/16
docker inspect bridge

# 创建自定义的虚拟网络,默认网络参数:172.18.0.0/16
docker network create my-net

docker network ls
docker inspect my-net
# 宿主机上的虚拟网卡,会列在第一个
ifconfig

# 创建容器,连接到网络my-net
# 自动获得的ip是 .2
docker run -d --name r1 \
--net my-net redis

# 自动获得的ip是 .3
docker run -d --name r2 \
--net my-net redis

# 查看容器详情,查看ip地址
docker inspect r1
docker inspect r2

# 测试宿主机、容器之间能否互联互通
ping 172.18.0.2
ping 172.18.0.3
docker exec -it r1 redis-cli -h 172.18.0.3
# 在容器内访问时,使用容器名称连接其他容器,名称可以被自动解析为ip地址
docker exec -it r1 redis-cli -h r2

# 清理
docker rm -f $(docker ps -aq)
docker network rm my-net

构建镜像

构建镜像的过程相当于是一个装机过程
Dockerfile流程配置文件,来配置装机流程
构建一个自己的redis镜像,在其中添加自定义的redis配置文件

编写Dockerfile
# 指定一个基础镜像
# 使用go语言,可以没有底层操作系统,可以FROM scratch
FROM redis
# 把配置文件复制到新构建的镜像中
COPY redis.conf /usr/local/etc/redis/redis.conf
# 设置默认的启动命令,根据自定义配置文件来启东
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]

# 仓库中/笔记/redis 文件夹,上传到服务器的/root/目录
# 执行构建
cd redis
docker build -t my-redis:v1 ./
# 查看容器
docker images

Dockerfile常用指令

  • FROM
  • COPY - 复制文件
  • ADD - 对压缩文件自动解压
  • EXPOSE - 设置暴露的端口,该设置不影响更换应用端口,该设置只是帮助用户了解镜像
  • ENV - 在容器中添加环境变量
  • RUN - 构建过程中会启动临时容器,执行指定的命令
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值