栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Docker学习(二) -- docker原生命令

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker学习(二) -- docker原生命令

1. 帮助启动类命令
# 启动docker
systemctl start docker
# 停止docker
systemctl stop docker
# 重启docker
systemctl restart docker
# 查看docker状态
systemctl status docker
# 开机启动
systemctl enable docker
# 查看docker概要信息
docker info
# 查看docker总体帮助文档
docker --help
# 查看docker命令帮助文档
docker 具体命令 --help
2. 镜像相关命令 2.1 查看本地库镜像
[root@yhx ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    feb5d9fea6a5   5 months ago   13.3kB

其中:

repository:表示镜像的仓库员tag:镜像的标签版本号image id:镜像idcreated:镜像创建时间size:镜像大小

注意:统一仓库源可以有多个tag版本,代表这个仓库源的不同个版本,我们使用repository:tag来定义不同的镜像
如果不指定一个镜像的版本标签,例如只使用ubuntu,docker将默认使用ubuntu:lated镜像

2.2 查找远程库镜像:
[root@yhx ~]# docker search tomcat
NAME                                           DEscriptION                                     STARS     OFFICIAL   AUTOMATED
tomcat                                         Apache Tomcat is an open source implementati…   3282      [OK]       
tomee                                          Apache TomEE is an all-Apache Java EE certif…   94        [OK]       
bitnami/tomcat                                 Bitnami Tomcat Docker Image                     44                   [OK]
arm32v7/tomcat                                 Apache Tomcat is an open source implementati…   11                   
arm64v8/tomcat                                 Apache Tomcat is an open source implementati…   7                    
rightctrl/tomcat                               CentOS , Oracle Java, tomcat application ssl…   7                    [OK]
amd64/tomcat                                   Apache Tomcat is an open source implementati…   3                    
jelastic/tomcat                                An image of the Tomcat Java application serv…   3                    
tomcat2111/pisignage-server                    PiSignage Server                                3                    [OK]
cfje/tomcat-resource                           Tomcat Concourse Resource                       2                    
oobsri/tomcat8                                 Testing CI Jobs with different names.           2                    
chenyufeng/tomcat-centos                       tomcat基于centos6的镜像                              1                    [OK]
tomcatling/jupyterhub_aws                                                                      1                    
tomcat2111/bitbucket-pipelines-elasticsearch   Elasticsearch for Bitbucket's Pipelines         0                    
tomcat2111/phpredisadmin                       This is a Docker image for phpredisadmin        0                    [OK]
store/microsoft/defaultpublisher               Zulu for Azure build of OpenJDK                 0                    
softwareplant/tomcat                           Tomcat images for jira-cloud testing            0                    [OK]
tomcatengineering/pg_backup_rotated            Clone of martianrock/pg_backup_rotated but w…   0                    
s390x/tomcat                                   Apache Tomcat is an open source implementati…   0                    
tomcatengineering/docker_swarm_exporter        Prometheus metrics exporter for Docker Swarms   0                    
tomcat2111/redaxo                              Redaxo                                          0                    
tomcat2111/papercut-mf                         PaperCut MF Application Server                  0                    
tomcat2111/nextcloud                           Nextcloud container with environment variabl…   0                    [OK]
tomcat0823/auto1                                                                               0                    
tomcat2111/piwik                               Matomo (formerly Piwik) image                   0                    
[root@yhx ~]# 

# 只显示点赞数最多的5条
[root@yhx ~]# docker search --limit 5 redis
NAME                     DEscriptION                                     STARS     OFFICIAL   AUTOMATED
redis                    Redis is an open source key-value store that…   10657     [OK]       
bitnami/redis            Bitnami Redis Docker Image                      211                  [OK]
bitnami/redis-sentinel   Bitnami Docker Image for Redis Sentinel         34                   [OK]
circleci/redis           CircleCI images for Redis                       12                   [OK]
bitnami/redis-exporter  

2.3 下载镜像
docker pull 镜像名字
# 上述等价于
docker pull 镜像名字:latest
#或者将上版本号
docker pull 镜像名字 [:tag]
[root@yhx ~]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis
a2abf6c4d29d: Pull complete 
c7a4e4382001: Pull complete 
4044b9ba67c9: Pull complete 
c8388a79482f: Pull complete 
413c8bb60be2: Pull complete 
1abfd3011519: Pull complete 
Digest: sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest
[root@yhx ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
redis         latest    7614ae9453d1   2 months ago   113MB
hello-world   latest    feb5d9fea6a5   5 months ago   13.3kB
2.4 查看镜像、容器、数据卷所占空间
[root@yhx ~]# docker system df 
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          2         1         112.7MB   112.7MB (99%)
Containers      1         0         0B        0B
Local Volumes   0         0         0B        0B
Build Cache     0         0         0B        0B
2.5 删除镜像
docker rmi 镜像名称/镜像id
[root@yhx ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
redis         latest    7614ae9453d1   2 months ago   113MB
hello-world   latest    feb5d9fea6a5   5 months ago   13.3kB
[root@yhx ~]# docker rmi redis
Untagged: redis:latest
Untagged: redis@sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339
Deleted: sha256:7614ae9453d1d87e740a2056257a6de7135c84037c367e1fffa92ae922784631
Deleted: sha256:49c70179bc923a7d48583d58e2b6c21bde1787edf42ed1f8de9e9b96e2e88e65
Deleted: sha256:396e06df5d1120368a7a8a4fd1e5467cdc2dd4083660890df078c654596ddc1c
Deleted: sha256:434d118df2e9edb51238f6ba46e9efdfa21be68e88f54787531aa39a720a0740
Deleted: sha256:2047f09c412ff06f4e2ee8a25d105055e714d99000711e27a55072e640796294
Deleted: sha256:13d71c9ccb39b206211dd1900d06aa1984b0f5ab8abaa628c70b3eb733303a65
Deleted: sha256:2edcec3590a4ec7f40cf0743c15d78fb39d8326bc029073b41ef9727da6c851f
[root@yhx ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    feb5d9fea6a5   5 months ago   13.3kB
# 删除多个
docker rmi -f id1 id2
# 删除全部
docker rmi -f $(docker images -qa)
2.6 导出和导入镜像

此命令很重要,一般用于多台服务器发布,我们只需要将docker文件上传到一个服务器,测试无误后,save此镜像,再scp到其他服务器,在load,就有一个一模一样的镜像了。

save:将镜像转为tar文件load:转入镜像的tar文件

[root@yhx ~]# docker save -o redis.tar 7614ae9453d1
[root@yhx ~]# ls
redis.tar
[root@yhx ~]# rm -rf redis.tar 
[root@yhx ~]# docker save -o redis.tar redis
[root@yhx ~]# ls
redis.tar
[root@yhx ~]# docker load -i redis.tar 
Loaded image: redis:latest
3. 容器相关命令 3.1 启动容器
docker run [options] images [command] [arg...]

options可选参数:

–name:为容器指定一个名称-d:后台运行容器并返回容器id,也即启动守护式容器(后台运行)-i:以交互模式运行容器,通常与-t同时使用-t:为容器重新分配一个伪输入终端,通常与-i同时使用,也即启动交互式容器(前台有伪终端,等待交互)-P:随机端口映射-p:指定端口映射
端口映射:

比如我们想访问redis,但是redis在docker内部,所以我们必须通过一个端口访问docker,docker拿着这个端口对应的端口去内部访问。

写-p 6379:6380,就是docker内部redis暴露的端口是6380,而宿主机对外暴露的端口是6379,要想访问docker内的redis,我们需要访问宿主机的6379端口

交互式终端启动:

可以进入到启动的容器内部

[root@yhx ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
ubuntu        latest    ba6acccedd29   5 months ago   72.8MB
hello-world   latest    feb5d9fea6a5   5 months ago   13.3kB
[root@yhx ~]# docker run -it ubuntu /bin/bash
root@7a24369c5aa1:/# ls
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

# 给容器指定名称
[root@yhx ~]# docker run --name=myU1 ubuntu

3.2 罗列所有正在运行的容器
docker ps [options]

options可选项:

-a:罗列当前所有正在运行的容器+历史上运行过的-l:显示最近创建的容器-n:显示最近n个创建的容器-q:静默模式,只显示容器编号

[root@yhx ~]# docker ps -a
ConTAINER ID   IMAGE         COMMAND       CREATED             STATUS                        PORTS     NAMES
b4f42505a03f   hello-world   "/hello"      6 seconds ago       Exited (0) 5 seconds ago                sad_snyder
7a24369c5aa1   ubuntu        "/bin/bash"   8 minutes ago       Exited (130) 2 minutes ago              charming_carver
1fe574be2d72   ubuntu        "/bin/bash"   about an hour ago   Exited (129) 31 minutes ago             competent_fermat
40b652812796   hello-world   "/hello"      5 hours ago         Exited (0) 5 hours ago                  loving_wilson
3.3 退出容器

如何从容器内部退出?

exit:run进入容器,exit退出,容器停止ctrl+p+q:run进入容器,ctrl+p+q退出,容器不停止

[root@yhx ~]# docker run -it --name=myU2 ubuntu
root@74bc8360c83d:/# exit
exit
[root@yhx ~]# docker ps
ConTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@yhx ~]# docker run -it --name=myU3 ubuntu
root@0de743d939f5:/# 
[root@yhx ~]# docker ps
ConTAINER ID   IMAGE     COMMAND   CREATED         STATUS         PORTS     NAMES
0de743d939f5   ubuntu    "bash"    8 seconds ago   Up 7 seconds             myU3
[root@yhx ~]# 
3.4 重启、停止、删除容器
# 重启容器
docker restart id/容器名
# 停止容器
docker stop id/容器名
# 强制停止容器
docker kill id/容器名
# 删除已经停止的容器
docker rm 容器名称/id
# 强制删除容器
docker rm -f 容器名称/id
3.5 启动守护式容器
docker run -d 容器名

[root@yhx ~]# docker run -d redis
1be58e734dc90fe9178d50b3da86c6dbf3fab2a00ca08728321f544d7bd34f45
[root@yhx ~]# docker ps
ConTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS      NAMES
1be58e734dc9   redis     "docker-entrypoint.s…"   18 minutes ago   Up 18 minutes   6379/tcp   boring_poincare
[root@yhx ~]# 
3.6 查询容器内部信息
# 查看容器日志
docker logs 容器id
# 查看容器内运行的进程
docker top 容器id
# 查看容器内部细节
docker inspect 容器id
3.7 进入正在运行的容器并以命令行交互
# 重新进入正在运行的容器
docker exec -it 容器id bashShell
# 重新进入正在运行的容器, 不建议使用
docker attach 容器id

区别:

attach直接进入容器启动命令的终端,不会启动新的进程,用exit退出,会导致容器的停止exec是在容器中打开新的终端,并且可以启动新的进程,用exit退出,不会导致容器的停止 3.8 文件在容器与主机中互相拷贝

# 从容器中转出
docker cp 容器id:容器目录地址 主机目录地址
# 例
docker cp 371ce72fa7f5:/usr/local/a.txt /home/aaa.txt
3.9 导入和导出容器

export导出容器:将容器的内容留作为一个tar归档文件,备份容器import导入容器:从tar包中的内容创建一个新的文件系统再导入为镜像

# 导出
docker export 容器id > 文件名.tar
# 导入
cat 文件名.tar | docker import -镜像用户/镜像名:版本号
[root@yhx ~]# docker export 1be58e734dc9 > a.tar
[root@yhx ~]# ls
a.tar
[root@yhx ~]# cat a.tar | docker import - a/a
sha256:c4b611df9300f0cddbfe0a1fb61cd4fabc40bf8c7478b7bfbb5d5c5a83b23477
[root@yhx ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED          SIZE
a/a           latest    c4b611df9300   11 seconds ago   109MB
redis         latest    7614ae9453d1   2 months ago     113MB
ubuntu        latest    ba6acccedd29   5 months ago     72.8MB
hello-world   latest    feb5d9fea6a5   5 months ago     13.3kB
[root@yhx ~]# 
3.10 commit制作镜像

docker commit 提交容器副本使之成为一个新的镜像

docker commit -m="提交的描述信息" -a="作者" 容器id 要创建的目标镜像名:[标签名]

进入ubuntu的镜像,可以看到目前不带vim命令:

root@a893f307cfa1:/# vim lib
bash: vim: command not found

安装vim:

apt-get update
apt-get -y install vim

提交我们具备vim命令的ubuntu容器:

[root@yhx ~]# docker commit -m="with vim" -a="yhx" a893f307cfa1  with-vim/with-vim:1.0
sha256:9b6363fb0c60770935be5327e94c19c0ae550bc478a8df7ef4c1978f34ad3e77
[root@yhx ~]# docker images
REPOSITORY          TAG       IMAGE ID       CREATED             SIZE
with-vim/with-vim   1.0       9b6363fb0c60   6 seconds ago       175MB
a/a                 latest    c4b611df9300   about an hour ago   109MB
tomcat              latest    fb5657adc892   2 months ago        680MB
redis               latest    7614ae9453d1   2 months ago        113MB
ubuntu              latest    ba6acccedd29   5 months ago        72.8MB
hello-world         latest    feb5d9fea6a5   5 months ago        13.3kB
[root@yhx ~]# 

接下来启动我们新建的镜像,就可以包括vim功能了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/769787.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号