关于docker:通过20个案例轻松掌握-docker-常用命令

2次阅读

共计 4592 个字符,预计需要花费 12 分钟才能阅读完成。

Docker 容器是当初几天最新兴的技术之一。Docker 容器通常用于 CI / CD (Continuous Integration / Continuous Deployment 继续集成 / 继续部署) 平台中。容器是笨重的 VM (Virtual Machines 虚拟机),可利用根底管理程序资源 (例如 RAM,CPU,HDD 和内核)。

Docker 命令用于通过命令行治理容器和镜像。在本文中,咱们将介绍 Linux 中 20 个有用的 docker 命令示例。我假如您的 Linux 零碎上曾经装置了 docker,并且以后用户曾经增加到 docker 用户组中。

(1) 查看版本

在应用 docker 容器时,第一项重要的工作是晓得你的 docker 版本

$ docker --version
Docker version 20.10.12, build e91ed57
$

(2) 查看零碎范畴内信息

docker info 命令用于查看 docker 的根目录、操作系统版本、内核版本、docker 版本、RAM、CPU、docker 注册表等信息。

$ docker info

(3) 搜寻镜像

应用 docker search 命令,咱们能够从 docker hub 仓库中搜寻镜像。假如咱们想搜寻最新的 nginx 镜像

$ docker search nginx

(4) 下载镜像

docker pull 命令用于从 Docker hub 仓库中下载镜像

docker pull 命令总是尝试下载最新版本的镜像,假如我想下载最新版本的 nginx 镜像

$ docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
5eb5b503b376: Pull complete
1ae07ab881bd: Pull complete
78091884b7be: Pull complete
091c283c6a66: Pull complete
55de5851019b: Pull complete
b559bad762be: Pull complete
Digest: sha256:2834dc507516af02784808c5f48b7cbe38b8ed5d0f4837f16e78d00deb7e7767
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
$

下载基于版本的特定镜像,假如咱们想下载 ubuntu:20.04 镜像

$ docker pull ubuntu:20.04
20.04: Pulling from library/ubuntu
08c01a0ec47e: Pull complete
Digest: sha256:669e010b58baf5beb2836b253c1fd5768333f0d1dbcb834f7c07a4dc93f474be
Status: Downloaded newer image for ubuntu:20.04
docker.io/library/ubuntu:20.04
$

(5) 查看已下载的镜像

家喻户晓,docker 的根目录是 /var/lib/docker,每当咱们应用 docker pull 命令下载镜像时,所有镜像都将保留在 docker 的根目录中。

要查看所有下载的 docker 容器镜像,请执行命令

$ docker image ls
or
$ docker images

(6) 运行容器

应用 docker run 命令启动容器,假如我想从 nginx 镜像 运行一个容器。

$ docker run -it -p 9000:80 --name=myapp nginx

下面将运行一个名称为 myapp 的容器,咱们还设置了 PAT 规定,如果任何申请到 docker 主机上的 9000 端口,则该申请将被重定向到 myapp 容器的 80 端口。执行命令之后咱们间接取得了控制台,输出 exit 能够进行 / 敞开容器,如果想从容器中退出而不进行它,请输出 ctrl+p+q

当初你能够应用 curl 命令拜访 9000 端口上的 nginx 利用了

$ curl http://<Docker-Host-IP-Address>:9000/

(7) 拆散模式运行容器

咱们能够在 docker run 命令中应用 -d 选项以拆散模式运行容器。这里的拆散模式意味着咱们将在执行 docker run 命令后取得命令提示符。

$ docker run -it -d -p 9080:80 --name=myapp2 httpd
f7dc2ece64708a9de5e53f341b0c7d17ac9189fb7c99079ad8744348bc5a6faa
$

(8) 查看所有运行的容器

执行 docker ps 命令查看所有正在运行的容器

$ docker ps

To view all running along with exited or stopped containers, run

要查看所有的容器(包含退出或进行),请运行

$ docker ps -a

(9) 拜访容器控制台

应用 docker exec 命令拜访容器控制台

sysops@linuxtechi:~$ docker exec -it myapp /bin/bash
root@3d5a0eef3e7a:/#

输出 exit 退出控制台

(10) 启动,进行,重启和杀死容器

就像虚拟机一样,咱们能够启动、进行和重启 docker 容器。

进行运行的容器

$ docker stop myapp2
myapp2

重新启动容器

$ docker restart myapp2
myapp2
$

杀死容器

sysops@linuxtechi:~$ docker kill myapp2
myapp2
sysops@linuxtechi:~$

(11) 删除容器

Docker Container is removed or deleted using‘docker rm‘command.‘docker rm’will work only when docker is stopped / shutdown.

应用 docker rm 命令删除容器,仅当容器 进行 / 敞开时,docker rm 能力工作。

$ docker stop test-app
test-app
$ docker rm test-app
test-app
$

To remove a running container forcefully then use‘-f’option in docker rm command. Example is shown is below

应用 -f 选项强制移除一个正在运行的容器

$ docker rm -f nginx-app

(12) 删除镜像

就像容器一样,咱们也能够删除镜像。docker rmi 命令用于删除镜像。

假如咱们想要删除 ubuntu:20.04 镜像

$ docker rmi ubuntu:20.04
Untagged: ubuntu:20.04
Untagged: ubuntu@sha256:669e010b58baf5beb2836b253c14f7c07a4dc93f474be
Deleted: sha256:54c9d81cbb440897908abdcaa98674db831e40a66f704f
Deleted: sha256:36ffdceb4c77bf34325fb695e64ea447f629593310578d2
$

在下面的命令中,咱们能够应用镜像 id 来代替名称

$ docker rmi 54c9d81cbb44

(13) 保留和加载镜像

应用 docker save 命令,将镜像保留到 tar 文件

$ docker save nginx -o mynginx.tar
$ ls -l mynginx.tar
-rw------- 1 sysops sysops 145931776 Feb 5 10:30 mynginx.tar
$

应用 docker load 命令,从 tar 文件加载镜像

$ docker load -i mynginx.tar
Loaded image: nginx:latest
$

留神:当咱们想要将 docker 镜像从一个主机传输到另一个主机时,这些命令会变得很有用。

(14) 将文件 / 目录复制到容器

咱们能够应用 docker cp 命令将文件或目录从 docker 主机复制到容器中。

上面咱们将 mycode 目录复制到 myapp 容器中

$ docker cp mycode myapp:/tmp

(15) 查看镜像构建历史

镜像的历史记录是指在构建镜像时执行了哪些命令,咱们能够应用 docker history 命令来查看历史记录

$ docker history nginx

(16) 从容器中查看日志

咱们能够从容器中查看日志,无需登录,运行 docker logs 命令

$ docker logs myapp

应用 -f 选项查看流动日志

$ docker logs -f myapp

查看某容器最近 10 条日志

$ docker logs --tail 10 myapp

(17) 查看容器资源应用统计信息

应用 docker stats 命令查看所有容器的 CPU,内存和网络 I/O 状况

$ docker stats

查看特定容器的统计信息

$ docker stats myapp

资源应用统计信息,无实时流

$ docker stats --no-stream

应用 docker top 命令显示容器的运行过程

$ docker top myapp

(18) 查看容器 IP 地址

应用 docker inspect 命令显示容器底层信息。咱们能够通过 docker inspect 命令获取容器的 ip 地址

语法如下:

$ docker inspect -f‘{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}’<Container-Name>

实例如下:

$ docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' myapp
172.17.0.2
$

(19) 构建镜像

docker 镜像是应用 docker build 命令构建的,要应用 docker build 命令,首先必须创立 Dockerfile。让咱们假如 Dockerfile 是在 mycode 文件夹下创立的,而后运行以下命令来构建镜像

$ cd mycode
$ docker build -t mynginx:v2 .

(20) 镜像标签

docker tag 命令用于为镜像设置标签

语法如下 :

$ docker tag source_image{:tag} target_image{:tag}

假如将源镜像 mariadb:latest 的标签设置为 mariadb:10.03

$ docker tag mariadb:latest mariadb:10.03
$ docker images | grep -i mariadb
mariadb 10.03 45a5a43e143a 3 days ago 410MB
mariadb latest 45a5a43e143a 3 days ago 410MB
$

如果心愿上传镜像到公有仓库,标签应加上仓库地址,如下所示:

$ docker tag mariadb:latest myregistry:5000/db/mariadb:10.03

应用 docker login 命令登录到公有仓库,运行 docker push 命令上传

$ docker push myregistry:5000/db/mariadb:10.03

我的开源我的项目

  • course-tencent-cloud(酷瓜云课堂 – gitee 仓库)
  • course-tencent-cloud(酷瓜云课堂 – github 仓库)
正文完
 0