mac Docker基本操作命令

  • 1、docker Images 查看docker 本地镜像
  • 2、docker pull 拉取镜像
  • 3、docker ps 查看docker中运行的容器
  • 4、docker run 启动容器
  • 5、命令列表
  • 6、进入容器
  • 7、如何查看容器的挂载目录
  • 8.删除容器
  • 8.1 先停止所有容器
  • 8.2 删除所容器
  • 9. 删除镜像
  • 9.1 删除单个镜像
  • 9.2 删除所有镜像
  • 10.docker 安装
  • 11.Dockerfile构建镜像出现异常,如何排查?
  • 12. docker 把镜像打包成文件


1、docker Images 查看docker 本地镜像

[lsy@lsyPro /etc ]$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
rabbitmq     latest    32497bcd639d   3 days ago   156MB

REPOSITORY: 仓库中镜像名称
TAG: 镜像的标签信息,比如 5.7、latest 表示不同的版本信息;
IMAGE ID:镜像的 ID, 如果您看到两个 ID 完全相同,那么实际上,它们指向的是同一个镜像,只是标签名称不同罢了;
CREATED:镜像最后的更新时间;
SIZE: 镜像的大小,优秀的镜像一般体积都比较小,这也是我更倾向于使用轻量级的 alpine 版本的原因;

2、docker pull 拉取镜像

[lxx@lsyPro /etc ]$ docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
69692152171a: Pull complete 
49f7d34d62c1: Pull complete 
5f97dc5d71ab: Pull complete 
cfcd0711b93a: Pull complete 
be6172d7651b: Pull complete 
de9813870342: Pull complete 
Digest: sha256:df13abe416e37eb3db4722840dd479b00ba193ac6606e7902331dcea50f4f1f2
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

说明
1、pull的镜像名称均为小写,可以在中央仓库中搜索到
2、 指定版本号

3、docker ps 查看docker中运行的容器

[lxxd@lsyPro /etc ]$ docker ps 
CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS          PORTS                                                                                              NAMES
b1926a54a2e3   rabbitmq   "docker-entrypoint.s…"   25 seconds ago   Up 23 seconds   4369/tcp, 0.0.0.0:5672->5672/tcp, 5671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp   rbmq

4、docker run 启动容器

[lng@lsyPro /etc ]$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete 
Digest: sha256:5122f6204b6a3596e048758cabba3c46b1c937a46b5be6225b835d091b90e46c
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/
For more examples and ideas, visit:
 https://docs.docker.com/get-started/

4.1 说明:

docker run先会去本地镜像仓库查找运行的镜像,找不到,则会去远程仓库拉取镜像,拉取完毕在运行镜像。

4.2 参数说明

参数

全称

说明

-d

–detached==false

指定容器运行于前台还是后台,默认为false( in background)

-h

–hostname=“”

指定容器的主机名

–name

–name=“”

指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字

-p

–publish=[]

(小写p)指定容器暴露的端口

5、命令列表

docker run -i -t <image_name/continar_id> /bin/bash 启动容器并启动bash(交互方式)

docker run -d -it image_name 启动容器以后台方式运行(更通用的方式)

docker ps 列出当前所有正在运行的container

docker ps -a 列出所有的container

docker ps -l 列出最近一次启动的container

docker images 列出本地所有的镜像

docker rmi imagesID 删除指定的镜像id

docker rm CONTAINER ID 删除指定的CONTAINER id

docker diff 镜像名 查看容器的修改部分

docker kill CONTAINER ID 杀掉正在运行的容器

docker logs 容器ID/name 可以查看到容器主程序的输出

docker pull image_name 下载image

docker push image_name 发布docker镜像

docker version 查看docker版本

docker info 查看docker系统的信息

docker inspect 容器的id 可以查看更详细的关于某一个容器的信息

docker run -d image-name 后台运行镜像

docker search 镜像名 查找公共的可用镜像

docker stop 容器名/容器 ID 终止运行的容器

docker restart 容器名/容器 ID 重启容器

docker commit 提交,创建个新镜像

docker build [OPTIONS] PATH | URL | - 利用 Dockerfile 创建新镜像

6、进入容器

docker exec -it 1383f2e49cb7 /bin/bash

7、如何查看容器的挂载目录

docker inspect container_name | grep Mounts -A 20
docker inspect container_id | grep Mounts -A 20

8.删除容器

8.1 先停止所有容器

docker stop $(docker ps -aq)

8.2 删除所容器

docker rm $(docker ps -aq)

9. 删除镜像

9.1 删除单个镜像

docker rmi <image id>

9.2 删除所有镜像

docker rmi $(docker images -q)

10.docker 安装

# 启动所有镜像
docker start $(docker ps -a -q)
 
# stop停止所有容器
docker stop $(docker ps -a -q)
 
# remove删除所有容器
docker rm $(docker ps -a -q)

11.Dockerfile构建镜像出现异常,如何排查?

在构建的过程中会创建分层的镜像,可以通过分层的镜像来创建容器,然后进入容器进行调试

[root@k8smaster redeploy]# docker build -t hub/k8s-redeploy-pod:v1 .
Sending build context to Docker daemon  5.632kB
Step 1/6 : FROM centos:7
 ---> eeb6ee3f44bd
Step 2/6 : ADD kubernetes.repo /etc/yum.repos.d/kubernetes.repo
 ---> Using cache
 ---> e5af21eecaa2
Step 3/6 : RUN yum install kubectl jq -y
 ---> Using cache
 ---> 71da97576b93
Step 4/6 : ADD redeploy.sh /opt/redeploy.sh
 ---> Using cache
 ---> 0c8d3fb2edb6
Step 5/6 : RUN chmod 755 /opt/redeploy.sh
 ---> Using cache
 ---> e7628d1b2ab1
Step 6/6 : CMD ["/opt/redeploy.sh"]
 ---> Using cache
 ---> 79373cff9719
Successfully built 79373cff9719
Successfully tagged hub/k8s-redeploy-pod:v1
[root@k8smaster redeploy]#

如上,在第二步的时候创建了 71da97576b93临时镜像,我们可以用下面的命令用这个临时镜像创建的容器

[root@k8smaster redeploy]# docker run -d 71da97576b93 /bin/bash -c "while true;do sleep 2;echo I_am_a_container;done"
9a9fd93e717919005da8e16734f3de9fc608aea7c139345f011029f959b605e7


docker exec -it 9a9fd93e717919005da8e16734f3de9fc608aea7c139345f011029f959b605e7 /bin/bash

12. docker 把镜像打包成文件

保存镜像为文件

docker save -o 要保存的文件名  要保存的镜像
举例:
[root@iZbp16cdvzk4rhl0vn1gedZ ~]# ls
aaa.cap  install.sh  mobile-1.0.0-SNAPSHOT.jar  sa_recovery.log
[root@iZbp16cdvzk4rhl0vn1gedZ ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
bb                  v1.0                3b8d26737bcb        10 minutes ago      202MB
centos              latest              9f38484d220f        3 weeks ago         202MB
java                latest              d23bdf5b1b1b        2 years ago         643MB
[root@iZbp16cdvzk4rhl0vn1gedZ ~]# docker save -o cc.tar bb:v1.0
[root@iZbp16cdvzk4rhl0vn1gedZ ~]# ls
aaa.cap  cc.tar  install.sh  mobile-1.0.0-SNAPSHOT.jar  sa_recovery.log

导入文件为镜像

[root@iZbp16cdvzk4rhl0vn1gedZ ~]# docker rm -f aa
aa
[root@iZbp16cdvzk4rhl0vn1gedZ ~]# docker rmi centos:latest bb:v1.0
Untagged: bb:v1.0
Deleted: sha256:3b8d26737bcb99aa12ef55c6e9620720b0ad85ecdee9cd52fbb5d5e1a2da2591
Untagged: centos:latest
Untagged: centos@sha256:8d487d68857f5bc9595793279b33d082b03713341ddec91054382641d14db861
Deleted: sha256:9f38484d220fa527b1fb19747638497179500a1bed8bf0498eb788229229e6e1
Deleted: sha256:d69483a6face4499acb974449d1303591fcbb5cdce5420f36f8a6607bda11854

[root@iZbp16cdvzk4rhl0vn1gedZ ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
java                latest              d23bdf5b1b1b        2 years ago         643MB

[root@iZbp16cdvzk4rhl0vn1gedZ ~]# docker load < cc.tar