Docker镜像与Docker容器的常用操作命令

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 Docker镜像与Docker容器的常用操作命令,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

镜像相关命令

[root@administrator ~]# docker image -help
unknown shorthand flag: 'e' in -elp
See 'docker image --help'.

Usage:  docker image COMMAND

Manage images

Commands:
  build       Build an image from a Dockerfile
  history     Show the history of an image
  import      Import the contents from a tarball to create a filesystem image
  inspect     Display detailed information on one or more images
  load        Load an image from a tar archive or STDIN
  ls          List images
  prune       Remove unused images
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rm          Remove one or more images
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE

Run 'docker image COMMAND --help' for more information on a command.

搜索镜像

从镜像仓库中查找需要的镜像:docker search 镜像名称

[root@administrator ~]# docker search  tomcat
NAME                                           DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
tomcat                                         Apache Tomcat is an open source implementati…   3377      [OK]       
tomee                                          Apache TomEE is an all-Apache Java EE certif…   97        [OK]       
bitnami/tomcat                                 Bitnami Tomcat Docker Image                     46                   [OK]
arm32v7/tomcat                                 Apache Tomcat is an open source implementati…   11                   
arm64v8/tomcat                                 Apache Tomcat is an open source implementati…   8                    
rightctrl/tomcat                               CentOS , Oracle Java, tomcat application ssl…   7                    [OK]
amd64/tomcat                                   Apache Tomcat is an open source implementati…   4                    
jelastic/tomcat                                An image of the Tomcat Java application serv…   4                    
tomcat2111/pisignage-server                    PiSignage Server                                3                    [OK]
oobsri/tomcat8                                 Testing CI Jobs with different names.           2                    
cfje/tomcat-resource                           Tomcat Concourse Resource                       2                    
chenyufeng/tomcat-centos                       tomcat基于centos6的镜像                              1                    [OK]
ppc64le/tomcat                                 Apache Tomcat is an open source implementati…   1                    
appsvc/tomcat                                                                                  1                    
wnprcehr/tomcat                                                                                0                    
tomcat2111/papercut-mf                         PaperCut MF Application Server                  0                    
softwareplant/tomcat                           Tomcat images for jira-cloud testing            0                    [OK]
semoss/docker-tomcat                           Tomcat, Java, Maven, and Git on top of debian   0                    [OK]
secoresearch/tomcat-varnish                    Tomcat and Varnish 5.0                          0                    [OK]
tomcatengineering/pg_backup_rotated            Clone of martianrock/pg_backup_rotated but w…   0                    
misolims/miso-base                             MySQL 5.7 Database and Tomcat 8 Server neede…   0                    
tomcat2111/phpredisadmin                       This is a Docker image for phpredisadmin        0                    [OK]
tomcat2111/bitbucket-pipelines-elasticsearch   Elasticsearch for Bitbucket's Pipelines         0                    
s390x/tomcat                                   Apache Tomcat is an open source implementati…   0                    
tomcat0823/auto1  
NAME:仓库名称

DESCRIPTION:镜像描述

STARS:用户评价,类似GitHub中start

OFFICIAL:是否是官方镜像

AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的

拉取镜像

从镜像仓库中下载镜像到本地,类似Git的pull命令

docker image pull 镜像名称:版本号 / docker pul 镜像名称:版本号

docker image pull 镜像名称 / docker pull 镜像名称 (默认最新版)

拉取最新tomcat镜像:docker image pull tomcat

[root@administrator ~]# docker image pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
0e29546d541c: Extracting [=================================================> ]  54.03MB/54.92MB
9b829c73b52b: Download complete 
cb5b7ae36172: Download complete 
6494e4811622: Downloading [=================================================> ]  54.07MB/54.57MB
668f6fcc5fa5: Download complete 
dc120c3e0290: Download complete 
8f7c0eebb7b1: Downloading [=====>                                             ]  23.62MB/203.1MB
77b694f83996: Download complete 
0f611256ec3a: Downloading [==========================>                        ]  6.699MB/12.84MB
4f25def12f23: Waiting 

拉取版本是8的tomcat:docker pull tomcat:8

[root@administrator ~]# docker pull tomcat:8
8: Pulling from library/tomcat
0e29546d541c: Already exists 
9b829c73b52b: Already exists 
cb5b7ae36172: Already exists 
6494e4811622: Already exists 
668f6fcc5fa5: Already exists 
dc120c3e0290: Already exists 
8f7c0eebb7b1: Already exists 
77b694f83996: Already exists 
b7c26350ecc2: Pull complete 
7365b3b02e1b: Pull complete 
Digest: sha256:421c2a2c73f3e339c787beaacde0f7bbc30bba957ec653d41a77d08144c6a028
Status: Downloaded newer image for tomcat:8
docker.io/library/tomcat:8

查看镜像

查看镜像:docker images

[root@administrator ~]# docker images
REPOSITORY                                                                     TAG          IMAGE ID       CREATED         SIZE
tomcat                                                                         8            2d2bccf89f53   7 months ago    678MB
tomcat                                                                         latest       fb5657adc892   7 months ago    680MB
REPOSITORY:镜像名称

TAG:镜像标签

IMAGE ID:镜像ID

CREATED:镜像创建日期(不是获取该镜像日期)

SIZE:镜像大小

这些镜像存储在Docker宿主机的/var/lib/docker目录下

[root@administrator ~]# ls /var/lib/docker
buildkit  containers  image  network  overlay2  plugins  runtimes  swarm  tmp  trust  volumes

删除镜像

按镜像ID删除镜像 / 按镜像名:版本号删除镜像

docker rmi 镜像ID  /   docker rmi 镜像名:版本号

docker rmi tomcat:8

[root@administrator ~]# docker rmi tomcat:8
Untagged: tomcat:8
Untagged: tomcat@sha256:421c2a2c73f3e339c787beaacde0f7bbc30bba957ec653d41a77d08144c6a028
Deleted: sha256:2d2bccf89f537fa253f6c5eb4fb42cfb6eb8ff6d60056325ff1d2c48cc1d29c4
Deleted: sha256:f0a503f69c7d06c432c241a1f14573a8cc7831926bf535a20ec82c36204b6a76
Deleted: sha256:4d6f5a116f23efaf86ccf0687fc7e7cbc23b42032a9ebbb2e0c8538dd3643d49

删除所有镜像

docker rmi   `docker images -q` ( ` 不是引号哦,是Esc键下的)

容器相关命令

docker container -help

[root@administrator ~]# docker container -help
unknown shorthand flag: 'e' in -elp
See 'docker container --help'.

Usage:  docker container COMMAND

Manage containers

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  inspect     Display detailed information on one or more containers
  kill        Kill one or more running containers
  logs        Fetch the logs of a container
  ls          List containers
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  prune       Remove all stopped containers
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  run         Run a command in a new container
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  wait        Block until one or more containers stop, then print their exit codes

Run 'docker container COMMAND --help' for more information on a command.

创建与启动容器

创建容器命令:docker run

创建容器常用的参数说明:
 -i:运行容器

 -t:容器启动后会进入其命令行。

-it  容器创建并登录进去。即分配一个伪终端。

 --name :为创建的容器命名。

 -v:目录关系映射。
 	  -v 宿主机目录 :映射到宿主机上的目录
	  -v /usr/local/tomcat:/usr/local/tomcat/webapps
  	  多个-v 做多个目录或文件映射。最好做目录映射,在宿主机上做修改,然后共享到容器上。

 -d:创建一个守护式容器在后台运行,在容器内部exit退出时,容器也不会停止。

 -p:端口映射。
	    -p 宿主机端口:容器内的映射端口
 		-p 8080:8081
 		可以使用多个-p做多个端口映射

1.交互式方式创建容器并自动进入容器

docker run -it --name=容器名称(容器别名) 镜像名称:标签 /bin/bash

docker run -it --name tomcat666 tomcat /bin/bash
[root@administrator ~]# docker run -it --name tomcat666 tomcat /bin/bash
root@38333cef8df3:/usr/local/tomcat#

查看正在运行的容器 docker ps

此时新开一个会话 通过docker ps命令查看,发现可以看到启动的容器,状态为启动状态 
[root@administrator ~]# docker ps
CONTAINER ID   IMAGE                    COMMAND                  CREATED              STATUS         PORTS                    NAMES
38333cef8df3   tomcat                   "/bin/bash"              About a minute ago   Up 3 seconds   8080/tcp                 tomcat666

退出当前容器

exit

再次docker ps 查看,发现没有已启容器

[root@administrator ~]# docker ps
CONTAINER ID   IMAGE                    COMMAND                  CREATED              STATUS         PORTS                    NAMES

2.守护式方式创建容器:

docker run -di --name=容器名称 镜像名称:标签
[root@administrator ~]# docker run -di --name tomcat888 tomcat:latest
b42176cb692620d02792c872f855bc91ffc763e6a7aee3294dca52d68c66d612

登录守护式容器方式:

docker exec -it 容器名称 (或者容器ID)  /bin/bash
[root@administrator ~]# docker exec -it tomcat888 /bin/bash
root@b42176cb6926:/usr/local/tomcat# 

守护式容器方式创建的容器,在exit退出容器后,容器仍然处于运行状态

停止容器:

docker stop 容器名称(或者容器ID)
[root@administrator ~]# docker stop tomcat888
tomcat888

启动容器:

docker start 容器名称(或者容器ID)
[root@administrator ~]# docker start  tomcat888
tomcat888

重启策略

使用--restart=always参数设置容器的重启策略

 no:默认策略,在容器退出时不重启容器
 
 on-failure:在容器非正常退出时(退出状态非0),才会重启容器
 
 on-failure:3 :在容器非正常退出时重启容器,最多重启3次
 
 always:在容器退出时总是重启容器
 
 unless-stopped:容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

设置容器权限

使用--privileged=true 参数设置容器权限,让container内的root拥有真正的root权限

1.使用该参数,container内的root拥有真正的root权限

2.不使用该参数,container内的root只是外部的一个普通用户权限

3.privileged启动的容器,可以看到很多host上的设备,并且可以执行mount,甚至允许在docker容器中启动docker容器

文件拷贝

使用cp命令将文件拷贝到容器内

docker cp 需要拷贝的文件或目录 容器名称:容器目录

docker cp auction.war tomcat666:/usr/local/tomcat/

在这里插入图片描述

将文件从容器内拷贝出来

docker cp 容器名称:容器目录 需要拷贝的文件或目录

docker cp tomcat666:/usr/local/tomcat/README.md ./

在这里插入图片描述

端口映射

将本机8080 端口映射到容器内部的 80 端口。
docker run --name nginx-test -p 8080:80 -d nginx
在这里插入图片描述
浏览器访问
在这里插入图片描述

目录挂载

在创建容器的时候,将宿主机的目录与容器内的目录进行映射,然后就可以通过修改宿主机某个目录的文件从而去影响容器内的文件。

将/usr/local/docker/tomcat1挂载到容器/usr/loacl/tomcat/webapps 目录

 docker run -id --name tomcat666 -p 8081:8080 -v /usr/local/docker/tomcat1:/usr/local/tomcat/webapps tomcat

在这里插入图片描述
这个时候访问 ip:8081,发现无法访问
在这里插入图片描述

这里有个坑,最新版tomcat中有包含两个webapps 文件夹。webapps :该文件夹是空的。webapps.dist:里面有tomcat完整的文件夹和文件。将webapps.dist里文件拷贝到webapps 或者重命名webapps.dist为webapps。

在这里插入图片描述

访问 ip:8081,tomcat启动成功

在这里插入图片描述

在/usr/local/docker/tomcat1上传一个war包并查看,发现war自动解压

在这里插入图片描述

docker中查看webapps目录,发现映射成功!

在这里插入图片描述

查看挂载的war包

在这里插入图片描述

容器的管理

查看所有的容器
docker ps -a

在这里插入图片描述

查看正在运行的容器
docker ps

在这里插入图片描述

查看刚刚运行过的容器
docker ps -l

在这里插入图片描述

查看容器运行日志
docker logs 2048

在这里插入图片描述

容器运行的进程
docker top 2048

在这里插入图片描述

查看容器运行的各种数据
docker inspect 容器名称(容器ID) 

在这里插入图片描述

查看容器信息---格式化  --format
获取容器IP地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)

在这里插入图片描述

获取容器id,容器仓库地址
docker inspect --format='{{.Id}}' nginx
docker inspect --format='{{.RepoDigests}}' nginx

在这里插入图片描述
其实这个获取 ip /id /地址 就是从容器各项参数中获取的
在这里插入图片描述

删除容器

删除指定的容器,先停止容器再删除

docker rm 容器名称(容器ID)

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/137165.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!