Docker常用命令

常用命令

搜索镜像

可以使用docker search命令搜索存放在Docker Hub中的镜像。例如:
    docker search java
结果:
    NAME               DESCRIPTION                 STARS    OFFCIAL      AUTOMATED
    java            Java is a concurrent,  ...     1281     [OK]
anapsix/alpine-java Oracle Java 8(and 7) ...       190                      [OK]
isuper/java-oracle  This reposity conta ...        48                       [OK]
...
参数:
-NAME: 镜像仓库名称
-DESCRIPTION: 镜像仓库描述
-STARS: 镜像仓库收藏数,表示该镜像仓库的受欢迎程度,类似于GitHub的Stars。
-OFFCIAL: 表示是否为官方仓库,该列标记为[OK]的镜像均为由各软件的官方项目组创建和维护。由结果可知,java这个镜像仓库是官方仓库,而其他的仓库都不是镜像仓库。
-AUTOMATED: 表示是否是自动构建的镜像仓库。

下载镜像命令

使用命令docker pull 命令即可从Docker Registry上下载镜像,例如:
    docker pull java
执行该命令后,Docker会从Docker Hub中的java仓库下在最新的版本的java镜像。若镜像下载缓慢,可配置镜像加速器,
该命令还可指定想要下载的镜像标签以及Docker Registry地址例如:
    docker pull reg.itmuch.com/java:7
这样就可以从指定的Docker Registry中下载标签为7的java镜像

列出镜像

使用docker images命令即可列出已下载的镜像。
执行该命令后,将会看到类似于如下的表格
REPOSITORY      TAG      IMAGE ID            CREATED              SIZE
java           latest   xxxxxxxxx            4 week ago           100.MB
hello-world    latest   xxxxxxxxx            5 months ago         1000.KB
参数:
    -REPOSITORY:镜像所属仓库名称。
    -TAG:镜像标签。默认是latest,表示最新
    -IMAGE ID:镜像ID,表示镜像唯一标识。
    -CREATED:镜像创建时间。
    -SIZE:镜像大小

删除本地镜像

使用docker rmi命令即可删除指定镜像。
例子1:删除指定名称的镜像。
docker rmi hello-world
表示删除hello-world这个镜像。
例子2:删除所有镜像
docker rmi -f $(docker images)
-f 参数表示强制删除

删除本地容器

使用docker rm命令即可删除指定容器
例子1:删除指定名称的容器
docker rm hello-test
该命令只能删除已停止的容器,如需删除正在运行的容器,可使用-f参数。
例子2:
docker rm -f $(docker ps -a -q)

新建并启动容器

使用以下docker run命令即可新建并启动一个容器。
该命令是最常用的命令,他有很多选项,下面将列举一些常用的选项。
-d选项:表示后台运行
-P选项:随机端口映射
-p选项:指定端口映射,有以下四种格式:
    - ip:hostPort:containerPort
    - ip:containerPort
    - hostPort:containerPort
    - containerPort
-- network选项:指定网络模式,该选项有以下可选参数:
- --network=bridge:默认选项,表示连接到默认的网桥
- --network=host:容器使用宿主机的网络。
- --network=container:NAME_or_ID:告诉Docker让新建的容器使用已有容器的网络配置。
- --network=none:不配置该容器的网络,用户可自定义网络配置。
例子1:
    docker run java /bin/echo 'Hello World'
    Hello World
例子2:
    docker run -d -p 91:80 nginx
    这样就能启动一个nginx容器。在本例中,为docker run添加了两个参数,含义如下:
    -d # 后台运行
    -p 宿主机端口:容器端口#开放容器端口到宿主机端口
    访问http://Docker宿主机IP:91/

需要注意的是,使用docker run命令创建容器时,会先检查本地师傅存在指定镜像。如果本地不存在该名称的镜像,Docker就会自动从Docker Hub下载镜像并启动一个Docker容器。

列出容器

使用docker ps命令即可列出运行中的容器。执行该命令后,可看到类似与如下的表格:
CONTAINER_ID   IMAGE  COMMAND              CREATED           STATUS    PORTS      NAMES
78XXXX        nginx  "nginx -g 'daemon off"  20 minutes ago  up     0.0.0.0:91->80/tcp backstabbing_archimedes
参数:
CONTAINER_ID:表示容器ID
IMAGE:表示镜像名称
COMMAND:表示启动容器时运行的命令。
CREATED:表示容器的创建时间。
STATUS:表示容器运行的状态。Up表示运行中,Exited表示已停止。
PORTS:表示容器对外的端口号。
NAMES:表示容器名称。该名称默认有Docker自动生成,也可使用docker run命令的--name选项自行指定。

注意:如需列出所有容器(包括已停止的容器),可使用-a参数。

停止容器

使用docker stop命令,即可停止容器。例如:
    docker stop xxxx

强制停止容器

可使用docker kill 命令发送SIGKILL信号来强制停止容器。例如:
dokcer kill xxxx

启动已停止的容器

使用docker run命令,即可新建并启动一个容器。对于已停止的容器,可使用docker start命令来启动。例如:
    docker start xxxx

重启容器

可使用docker restart 命令来重启容器。该命令实际上是先执行了docker stop命令,然后执行了docker start命令。

进入容器

某场景下,可能需要进入运行中的容器。

使用docker attach命令进入容器。例如:

docker attach xxx
很多场景下,使用docker attach 命令并不方便。当多个窗口同时attach到同一个容器时,所有窗口都会同步显示。同理,如果某个窗口发生阻塞,其他窗口也无法执行操作。

使用nsenter进入容器

nsenter工具包含在util-linux2.23或更高版本中。为了链接到容器,需要找到容器第一个进程的PID,可通过以下命令获取:
docker inspect --format "{{.State.Pid}}" $CONTAINER_ID
或得PID后,就可使用nsenter命令进入容器了:
nsenter --target "$PID" --mount --uts --ipc --net --pid

查看容器日志

docker logs -f -t --tail 行数 容器名
docker 容器的日志目录
1、查看容器详细信息
    docker inspect 容器名
镜像加速器:
常用的镜像加速器有:阿里加速器、DaoCloud加速器等。各厂商镜像加速器的使用方式大致类似,
阿里加速器

注册阿里云账号后,即可在阿里云控制台(http://cr.console.aliyun.com/#/accelerator)

  1. 安装/升级Docker客户端
    推荐安装1.10.0以上版本的Docker客户端,参考文档 docker-ce
  1. 配置镜像加速器
    针对Docker客户端版本大于 1.10.0 的用户

您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-‘EOF’
{
“registry-mirrors”: [“https://n41ytvnb.mirror.aliyuncs.com”]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

参考资料

Docker的命令:https://docs.docker.com/engine/reference/commandline/。
Docker的网络:https://docs.docker.com/engine/userguide/networking/。
SpringCloud与Docker微服务架构实践(周立)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值