Docker常用命令和高级操作

一、docker常用命令

1、安装命令

sudo apt install docker.io

2、镜像管理

# 查看本地所有镜像
docker images
# 移除指定镜像
docker image rm <image_name>:<tag>/<image_id>

# 其他命令
# dockerhub(https://hub.docker.com/)实在是太慢了
# 创建容器使用本地不存在的镜像时,默认会从dockerhub拉取
docker pull
docker commit
docker tag
docker login
docker push

3、容器管理

# 查看当前运行docker容器
docker ps
# 查看环境中的所有docker容器
docker ps -a

# 指定image创建后台运行容器,进程1为:/bin/bash
docker run -itd --name <container_name> <image_name>:<tag> /bin/bash

# 启动/停止/进入容器
docker start <container_name/id>
docker stop <container_name/id>
docker attach <container_name/id>

# 指定运行容器中的进程
# 使用attach进入容器退出默认会停止容器,可以使用exec运行/bin/bash创建新的交互终端
docker exec -it <container_name/id> /bin/bash

#移除指定容器
docker rm <container_name/id>

# 将本地文件cp到容器内
docker cp <file_local_path> <containe_name/id>:<file_docker_path>
# 将容器内的文件cp到本地
docker cp <containe_name/id>:<file_docker_path> <file_local_path>

4、本地镜像分享

# 从容器导出镜像文件(当前运行容器的快照)
docker export <container_id/name> > <image_name>.tar
# 将镜像文件导入本地
docker import <image_name>.tar <image_name>:<image_tag>

# 将本地镜像导出(包含image的所有数据层,常用于迁移或备份image)
docker save -o <image_name>.tar <image_id/name>
# 将镜像文件导入到本地(不可重命名)
docker load -i <image_name>.tar

二、Docker高级操作

1、取消docker的sudo权限

(1)将当前用户添加到docker组

sudo gpasswd -a ${USER} docker\

(2)更新docker group

newgrp docker

(3)测试验证

docker version
2、使能IPv6网络

(1)vim /etc/docker/daemon.json

{
    "experimental": true,
    "ipv6": true,
    "ip6tables": true,
    "fixed-cidr-v6": "2000::/3"
}

(2)重启docker

sudo systemctl restart docker
3、修改镜像源

(1)vim /etc/docker/daemon.json

{
    "registry-mirrors": [
        "https://hub.docker.com""https://registry.docker-cn.com",
        "https://docker.nju.edu.cn/",
        "other mirror image source"
    ]
}

(2)重启docker

sudo systemctl restart docker
4、在docker容器内使用systemd

(1)指定image创建容器

docker run -it --name <container_name> --privileged <image_name>:<tag> /bin/bash 

(2)更新软件源,部署systemd

# 更新软件源
apt update
# 更新软件
apt upgrade

# 安装systemd
apt install systemd
ln -s /lib/systemd/systemd /usr/sbin/init

# 也可以同时安装其他所需软件
# ...

安装完成后,在container内执行"exit"退出容器。
若需要docker容器支持systemd,需要将/usr/sbin/init设置为1号进程(默认为/bin/bash),因此我们需要将这个容器打包为新的镜像,基于新的镜像再创建支持systemd的新容器。

(3)将当前容器保存为新镜像

docker commit -a "<author>" -m "<commit_info>" <container_name> <image>:<tag>

(4)创建使用支持systemd的容器

# 创建容器
docker run -itd --name <container_name> --privileged <image_with_systemd_name>:<tag> /usr/sbin/init
# 进入容器
docker exec -it <container_name> /bin/bash
5、固定docker容器ip地址

当创建docker容器时固定ip地址,需要创建自定义网络,docker安装后配置的默认网络不支持设置静态ip。
当我们使用安装后默认的网络(比如bridge)设置静态ip时,会看到以下报错:

dev@ubuntu: docker run -it --ip 172.18.0.2 --network bridge --name network_test ubuntu:latest
docker: Error response from daemon: user specified IP address is supported on user defined networks only.
ERRO[0000] error waiting for container:

我们可以使用docker network命令创建自定义网络,用于创建固定ip的容器(实测支持IPv4/IPv6的静态IP设置)。
(1)docker network工具

# 查看命令帮忙
docker network --help

# 查看已存在网络
docker network ls

# 创建自定义网络
docker network create <network_name>
# 移除指定网络
docker network rm <network_name>
# 查看网络的详细信息
docker network inspect <network_name>

(2)创建自定义网络

  • IPv4网络
docker network create --subnet=<ipv4_subnet_addr> <network_name>
  • IPv6网络
docker network create --subnet=<ipv6_subnet_addr> --ipv6 <network_name>

注:创建的默认虚拟网卡名为br-<network-hash>, 可以添加"-o com.docker.network.bridge.name=<br_name>"参数指定虚拟网卡名。

(3)指定网络和IP地址创建容器

  • IPv4网络
docker run -itd --ip <ipv4_address> --network <network_name> --name <container_name> <image_name>:<tag>
  • IPv6网络
docker run -itd --ip6 <ipv6_address> --network <network_name> --name <container_name> <image_name>:<tag>

此时创建的容器已被设置为指定ip地址,可以进入容器查看确认。

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一些常用的 Docker 命令: 1. 镜像管理命令: - `docker images`:列出本地所有镜像。 - `docker pull <image_name>`:从远程仓库拉取镜像。 - `docker push <image_name>`:将本地镜像推送到远程仓库。 - `docker rmi <image_name>`:删除指定的镜像。 2. 容器管理命令: - `docker ps`:列出运行中的容器。 - `docker ps -a`:列出所有容器,包括停止的容器。 - `docker run <image_name>`:创建并运行容器。 - `docker start <container_id>`:启动一个已经停止的容器。 - `docker stop <container_id>`:停止一个运行中的容器。 - `docker restart <container_id>`:重启一个容器。 - `docker rm <container_id>`:删除一个容器。 - `docker exec -it <container_id> <command>`:在运行中的容器中执行命令。 3. 日志和输出命令: - `docker logs <container_id>`:查看容器的日志。 - `docker logs -f <container_id>`:实时查看容器的日志。 - `docker inspect <container_id>`:查看有关容器的详细信息。 4. 网络管理命令: - `docker network ls`:列出可用的网络。 - `docker network create <network_name>`:创建一个自定义网络。 - `docker network connect <network_name> <container_id>`:将容器连接到网络。 - `docker network disconnect <network_name> <container_id>`:将容器从网络中断开连接。 5. 数据卷管理命令: - `docker volume ls`:列出所有数据卷。 - `docker volume create <volume_name>`:创建一个数据卷。 - `docker volume inspect <volume_name>`:查看有关数据卷的详细信息。 这只是一些常用的 Docker 命令,还有许多其他命令可用于更高级用法和配置。你可以使用 `docker --help` 命令来查看完整的命令列表和帮助信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ftswsfb

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

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

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

打赏作者

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

抵扣说明:

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

余额充值