# 启动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 具体命令 --help2. 镜像相关命令 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镜像
[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-exporter2.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.3kB2.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 0B2.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:latest3. 容器相关命令 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 ubuntu3.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_wilson3.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 容器名称/id3.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 容器id3.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.txt3.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功能了



