一、本地镜像管理
docker load加载本地tar镜像
--input , -i : 指定导入的文件,代替 STDIN。
--quiet , -q : 精简输出信息。
两种常用的加载命令
[root@master images]# docker load -i httpd_2.2.31.tar b6ca02dfe5e6: Loading layer [==================================================>] 128.9MB/128.9MB 3c83ee2bca50: Loading layer [==================================================>] 2.56kB/2.56kB 557b74aa3e87: Loading layer [==================================================>] 43.54MB/43.54MB 65c42200fe66: Loading layer [==================================================>] 6.129MB/6.129MB e6ab5c565ca5: Loading layer [==================================================>] 3.584kB/3.584kB Loaded image: httpd:2.2.31 [root@master images]# docker load < httpd_2.2.32.tar 0d960f1d4fba: Loading layer [==================================================>] 129.3MB/129.3MB 765c3a355e02: Loading layer [==================================================>] 2.56kB/2.56kB e448038fb71a: Loading layer [==================================================>] 43.84MB/43.84MB daed15381ba8: Loading layer [==================================================>] 6.897MB/6.897MB 05cb14f2b844: Loading layer [==================================================>] 3.584kB/3.584kB Loaded image: httpd:2.2.32
docker rmi 删除镜像
-f :强制删除;
--no-prune :不移除该镜像的过程镜像,默认移除;
[root@master images]# docker rmi httpd:2.2.31 Untagged: httpd:2.2.31 Deleted: sha256:c8a7fb36e3abfc42f15f2a2a9293f1768a5b568fd7ac51546f0055e399c29aef Deleted: sha256:143756fb097f1123c96140b6e48e8ae1062ad4493c1cd6874d430118089517a5 Deleted: sha256:53e8f80ab9b50b00e27dd9376818098feccd7bfdd7f084ff10aca478c90e14ea Deleted: sha256:ac93bbe4ce702e11125f10d20d764b02ed95e4f6521e4a2073ad908069ce21c4 Deleted: sha256:15bee5ebaa7ede5c10e9c1bd24388c2b6b2e50f9006f39ad88a84de554ec58e4 Deleted: sha256:b6ca02dfe5e62c58dacb1dec16eb42ed35761c15562485f9da9364bb7c90b9b3
docker images 列出本地镜像
-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
--digests :显示镜像的摘要信息;
-f :显示满足条件的镜像;
--format :指定返回值的模板文件;
--no-trunc :显示完整的镜像信息;
-q :只显示镜像ID。
[root@master images]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE busybox latest 020584afccce 2 months ago 1.22MB nginx latest 540a289bab6c 2 months ago 126MB
docker tag标记镜像
[root@master images]# docker tag nginx:latest master/nginx:test [root@master images]# docker images master/nginx REPOSITORY TAG IMAGE ID CREATED SIZE master/nginx test 540a289bab6c 2 months ago 126MB
二、镜像仓库操作
docker pull 拉取镜像
[root@slave ~]# docker pull mysql Using default tag: latest latest: Pulling from library/mysql 804555ee0376: Pull complete c53bab458734: Pull complete 7def2a4ede73: Pull complete Digest: sha256:f1df505c4c6e8eae599a0482e3bde3e761cd700c00cbc371a8161648a26817c0 Status: Downloaded newer image for mysql:latest
docker search在线搜索镜像
[root@slave ~]# docker search httpd-cgi NAME DESCRIPTION STARS OFFICIAL AUTOMATED hypoport/httpd-cgi httpd-cgi 0 [OK] actilis/httpd-cgi HTTPD server with CGI support, based on Alpi… 0 [OK] nasoym/httpd-cgi httpd-cgi 0 [OK]
docker push 推送镜像到仓库
[root@master images]# docker tag httpd:2.2.32 192.168.1.10:5000/httpd:test #标记httpd镜像并push推送 [root@master images]# docker push 192.168.1.10:5000/httpd:test The push refers to repository [192.168.1.10:5000/httpd] 05cb14f2b844: Pushed daed15381ba8: Pushed 0d960f1d4fba: Pushed test: digest: sha256:ccc05ac5eee03d1a95d249b7c4a3366f68c38fdf9f877a53abcb9bd25e441496 size: 1366
三、容器使用管理
docker run运行容器
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的高端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-rm:容器退出后随之将其删除,可以避免浪费空间。
--name="nginx": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "hostname": 指定容器的hostname;
-e username="admin": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
--volume , -v: 绑定一个卷,挂载本地文件到容器目录
[root@master images]# docker run -it -d -p 800:80 --name tyh-nginx nginx:latest fac10822e29f05d9a92f038d1057229003d85459108856bfc9e4d9f524e24dcb
测试访问
docker exec 进入容器
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个终端
[root@master /]# docker run -it -d -p 888:80 -v /html:/usr/share/nginx/html --name tyh2-nginx nginx:latest b1bd7b4523214bee72de5aa003c06a064fa0f8053999fa7c49a3e2dc62baefef
#开启一个容器nginx,端口映射外部888,将外部的网页目录挂到容器的目录
[root@master images]# docker exec -it tyh2-nginx bash
#进入容器,查看nginx网页目录
root@ b1bd7b452321:/# id uid=0(root) gid=0(root) groups=0(root) root@b1bd7b452321:/# ls -l /usr/share/nginx/html/ total 456 drwxr-xr-x 20 root root 4096 Jan 17 20:37 alipay drwxr-xr-x 5 root root 100 Jan 17 20:37 alipay2 drwxr-xr-x 2 root root 6 Jan 17 20:37 alipayobject -rw-r--r-- 1 root root 689 Jan 17 20:37 iisstart.htm -rw-r--r-- 1 root root 255252 Jan 17 20:37 index.html -rw-r--r-- 1 root root 184946 Jan 17 20:37 welcome.png
访问效果
docker ps 查看容器进程
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。
[root@master images]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6adf06865702 nginx:latest "nginx -g 'daemon of…" 5 minutes ago Up 2 minutes 0.0.0.0:800->80/tcp tyh-nginx 66df904e9c22 registry:latest "/entrypoint.sh /etc…" 4 hours ago Up 4 hours 0.0.0.0:5000->5000/tcp registry
docker start/stop/restart 容器启动/停止/重启
docker stats/inspect 查看容器资源情况/容器信息
docker rm 删除容器
需先停止容器运行再执行删除
-f 可强制删除
docker export/inport 导出导入容器
#导出容器快照
[root@master /]# docker export tyh3-nginx > tyh-nginx.tar
#导入容器镜像
[root@slave ~]# docker import tyh-nginx.tar tyh3-nginx sha256:c04782dfa85e8a08fe88e258f6419a0aa87469e73f0adc8d73c62a72fd07b183 [root@slave ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE tyh3-nginx latest c04782dfa85e 7 seconds ago 125MB
docker commit 容器构建为镜像
[root@master /]# docker commit -a "tao" -m "for the test" tyh3-nginx test:1 sha256:4404059a3d6ded6f62b1532e0278a938a7998ac7dc8c36e6bd7d27f49d1e13b1 [root@master /]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE test 1 4404059a3d6d 7 seconds ago 126MB