Docker镜像与Docker容器的常用操作命令
镜像相关命令
[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