Docker命令学习

251 阅读3分钟

镜像相关

查看本地镜像

docker images

➜  ~ docker images
REPOSITORY                                    TAG       IMAGE ID       CREATED         SIZE
harbor.shopeemobile.com/spex/spgen-compiler   v1.2.0    decac2760cd6   5 months ago    2.22GB
wurstmeister/kafka                            latest    c3b059ede60e   11 months ago   507MB
alpine/git                                    latest    b8f176fa3f0d   12 months ago   25.1MB
harbor.shopeemobile.com/spex/spgen-compiler   v1.0.0    b10415992263   12 months ago   2.24GB
harbor.shopeemobile.com/spex/peg-compiler     3.2       72e4e3b5a87c   14 months ago   2.25GB
wurstmeister/zookeeper                        latest    3f43f72cb283   3 years ago     510MB

获取镜像

docker pull <镜像ID>

➜  ~ docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
40dd5be53814: Pull complete
Digest: sha256:d21b6ba9e19feffa328cb3864316e6918e30acfd55e285b5d3df1d8ca3c7fd3f
Status: Downloaded newer image for ubuntu:18.04
docker.io/library/ubuntu:18.04

删除镜像

docker rmi <镜像ID>

删除镜像前必须先停止并删除容器

容器使用

从镜像启动容器

docker run -it <镜像ID> /bin/bash

➜  ~ docker run -it ubuntu:18.04 /bin/bash
root@08a43713700e:/#

-t:表示终端,让docker分配一个伪终端并绑定到容器的标准输入上,

-i:表示交互式操作,让容器的标准输入保持打开

/bin/bash:放在镜像后的是命令

当利用docker run来创建容器是,docker后台运行的操作包括

  • 检查本地是否存在指定的镜像,不存在就从registry下载
  • 利用镜像创建并启动一个容器
  • 分配一个文件系统,并在只读的镜像外面挂载一层可读写层
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
  • 从地址池配置一个ip地址给容器
  • 执行用户指定的应用程序
  • 执行完毕后容器被终止

-d: 后台运行。docker run -itd <镜像ID> /bin/bash

查看所有的容器

docker ps -a

➜  ~ docker ps -a
CONTAINER ID   IMAGE                    COMMAND                  CREATED         STATUS                       PORTS     NAMES
9cca68cc46ae   wurstmeister/kafka       "start-kafka.sh"         11 months ago   Exited (143) 11 months ago             kafka
bcb549cd5ebd   wurstmeister/zookeeper   "/bin/sh -c '/usr/sb…"   11 months ago   Exited (137) 11 months ago             zookeeper
aa9e6335f5f5   alpine/git               "git clone https://g…"   12 months ago   Exited (0) 12 months ago               repo

启动/停止/重启容器

docker start/stop/restart <容器ID>

删除容器

docker rm <容器ID>

进入容器

在使用-d参数时,容器启动后会进入后台。此时想要进入容器可以通过docker attachdocker exec命令。推荐使用后者,因为使用此命令退出终端时不会导致容器的停止。 docker exec -it <容器ID> /bin/bash

➜  ~ docker exec -it e3e0f49789c6 /bin/bash
root@e3e0f49789c6:/# exit
exit
➜  ~ docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS          PORTS     NAMES
e3e0f49789c6   ubuntu:18.04   "/bin/bash"   11 minutes ago   Up 11 minutes             quizzical_lederberg

容器导出和导入

导出容器快照到本地文件:docker export <容器ID> > ubuntu.tar 从容器快照文件导入为镜像:docker import <文件名> <repository:<tag>>

docker export e3e0f49789c6 > ubuntu.tar
docker import ubuntu.tar test/ubuntu:v1.0

MacOS docker desktop平替 colima

brew install colima
colima start
colima stop