Docker常用命令

CSDN话题挑战赛第2期
参赛话题:学习笔记

目录

 镜像的常用命令

常用容器命令:

-d 后台运行

进入容器,执行容器中的命令

容器命名

--restart=always 让容器可以随系统自动重启

--rm 容器关闭时,会被系统自动删除

docker cp 在容器和宿主机之间互相复制文件

数据挂载:文件、文件夹、数据卷

数据卷挂载

端口映射

虚拟网络

构建镜像


 镜像的常用命令

# 下载镜像
docker pull 镜像名称

# 镜像列表
docker images

# 为镜像添加新的名称
docker tag redis my-redis:v1
docker tag redis redis-tedu:v2

# 删除镜像的名称
# 删除最后一个名称时,会把镜像磁盘文件一起删除
# remove image
docker rmi my-redis:v1
docker images

# 导出镜像到压缩文件
docker save rabbitmq:management benwang6/cerebro:0.9.4 | gzip > a.gz

# 从压缩文件导入,加载镜像
# 先删除
docker rmi rabbitmq:management benwang6/cerebro:0.9.4
# 再导入
docker load -i a.gz

常用容器命令:

# 启动容器
docker run mariadb

# 在前台启动,占用命令行
docker run redis

# 查看容器
docker ps        # 运行状态的容器
docker ps -a       # all

 -a:显示所有容器,如果不加只显示正在启动运行的容器,停止的不会显示。
 -l:显示最近的启动创建的容器。
 -n=[数字]:显示最近n个容器。

 -q:只显示容器id。经常和-a一起使用,获得当前宿主机所有容器id参数集合。

# 查看镜像中设置的默认启动命令
docker history redis

docker history mariadb

docker history rabbitmq:management

# 覆盖 CMD 设置的默认命令
docker run redis pwd

docker run redis ls -a -l

# -i 交互 -t 终端
docker run -it redis bash

exit

-d 后台运行

docker run -d \
redis

docker ps

docker logs 容器ID前3位

进入容器,执行容器中的命令

docker exec -it cbc pwd

docker exec -it cbc touch a.txt

docker exec -it cbc ls -a -l

docker exec -it cbc bash

exit

docker ps

容器命名

docker run -d --name r1 \
redis

docker run -d --name r2 \
redis

docker ps

docker logs r1

docker stop r1 r2

docker start r1 r2

--restart=always 让容器可以随系统自动重启

服务器重启,或docker系统服务重启,容器默认是退出状态

docker run -d --name r3 \
--restart=always \
redis

docker ps

# 重启docker系统服务
systemctl restart docker

docker ps 

--rm 容器关闭时,会被系统自动删除

启动临时容器

  • 查看容器中的一些默认设置

  • 从容器复制文件到宿主机

# redis容器启动后,容器内有哪些环境变量
docker run --rm redis env

docker cp 在容器和宿主机之间互相复制文件

# 从容器复制文件到宿主机
docker cp r3:/data/dump.rdb ~/

ls

# 从宿主机复制文件到容器
docker cp ~/ip-static r3:/data/ip

# 进入容器查看文件
docker exec -it r3 ls /data/

数据挂载:文件、文件夹、数据卷

# 启动mariadb数据库,挂载宿主机的一个文件夹存放数据文件
# -v挂载会自动创建宿主机目录
docker run -d --name mysql \
-v /opt/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mariadb



# 挂载文件
docker run -d --name r4 \
-v /root/redis.conf:/my.conf \
redis \
redis-server /my.conf


docker rm r1 r2 r3
docker rm -f r1 r2 r3

# 清理所有停止的容器
docker container prune
docker container prune -f

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


# 挂载文件夹
# 组主机的文件夹会自动创建
docker run -d --name r1 \
-v /opt/my-app/:/opt/app \
redis

# 访问容器内的路径,创建文件,实际是创建到宿主机挂载的目录下
docker exec -it r1 touch /opt/app/a.txt

# 查看宿主机文件
ls /opt/my-app/

数据卷挂载

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

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

# 启动数据库容器,挂载my-vol数据卷
docker run -d --name mysql \
-v my-vol:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mariadb

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

# 启动新的容器,my-vol挂载到容器
docker run -d --name r1 \
-v my-vol:/opt/app/ \
redis

docker exec -it r1 touch /opt/app/a.txt

# ls 数据卷的真实路径
ls /var/lib/docker/volumes/my-vol/_data

端口映射

-p 服务器端口:容器端口

# 宿主机的6379,映射到容器的6379
docker run -d --name r2 \
-p 6379:6379 \
redis


docker rm -f mysql

# mysql端口映射到服务器
docker run -d --name mysql \
-e MYSQL_ROOT_PASSWORD=root \
-p 3380:3306 \
mariadb


--net host 让容器直接使用宿主机的网络和端口

docker run -d --name r3 \
--net host \
redis \
redis-server --port 6380

虚拟网络

# 创建网络
docker network create my-net
# 查看网络列表
docker network ls
# 查看网络详情
docker inspect my-net
# 宿主机上创建的虚拟网卡
ifconfig

# 启动容器,连接到my-net网络
docker run -d --name r4 \
--net my-net \
redis

docker run -d --name r5 \
--net my-net \
redis

docker inspect r4
docker inspect r5

# 容器之间和容器与宿主机之间能否互通
ping 172.18.0.2
ping 172.18.0.3

docker exec -it r4 redis-cli -h 172.18.0.3

# 在容器的内部,提供了名字解析环境,可以把容器名,解析成正确的ip
docker exec -it r4 redis-cli -h r5

构建镜像

使用配置文件,来配置环境安装流程。

Dockerfile配置文件:

# 选择基础镜像
FROM redis
# 在新构建的镜像中添加 redis.conf
COPY redis.conf /redis.conf
# 设置新的启动命令:"redis-server redis.conf的路径"
CMD ["redis-server", "/redis.conf"]
# 设置默认文件件,容器启动后会自动切换到这个目录
WORKDIR /
# 设置默认端口,帮助镜像使用者理解这个镜像
EXPOSE 6379


将 Dockerfile 和构建过程中使用的文件,一起放到一个文件夹下

[redis]
    - Dockerfile
    - redis.conf
    
# 准备文件夹和文件
mkdir /root/redis/
vim /root/redis/Dockerfile # 编辑文件, 把上面内容粘进去
# 按键盘i,进入编辑模式
# 按键盘esc,退出编辑模式
# :进入命令模式,输入wq,保存并退出

cp redis.conf /root/redis/
ls /root/redis/


执行构建:

cd /root/redis/

docker build -t my-reids:v1 ./

docker images

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

�欢快↑㎡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值