目录
一、docker的镜像操作
1、查看docker版本
docker version
2、搜索镜像
格式:docker search 服务名
[root@server1 ~]# docker search nginx
name表示镜像名字
DESCRIPTION 表示该镜像的功能
STARS表示下载热度
3、下载镜像
格式:docker pull 镜像名
[root@server1 ~]# docker pull nginx
4、查看已下载的镜像
[root@server1 ~]# docker images
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID号
SIZE 镜像大小
5、获取镜像的详细信息
格式:docker inspect 镜像ID号
[root@server1 ~]# docker inspect bc9a0695f571
6、添加镜像标签
[root@lserver1 ~]# docker tag nginx:latest nginx:web #类似于别名
7、删除镜像
两种方式删除镜像
注意:删除某一个镜像时,只要有容器在使用某一个镜像,必须先删除容器,才能删除镜像。
(1)删除镜像+标签名
格式:docker rmi 仓库名:TAG标签
[root@server1 ~]# docker rmi nginx:latest
(2)删除镜像id
注意:只有当镜像id对应标签仅剩一个时,才能使用镜像id的方式进行删除;否则会出现报错
或者也可以在最后加上-f选项,一次性删除
格式:docker rmi 仓库名:TAG标签
[root@server1 ~]# docker rmi bc9a0695f571 -f
(3)批量删除镜像
docker rmi `docker images -q` -f ##删除所有镜像
8、导出镜像
存出镜像并命名为httpd,存到/opt目录下
格式:docker save -o 绝对路径 文件名 镜像名
[root@server1 ~]# docker save -o /opt/httpd httpd:latest
9、载入镜像
[root@server1 ~]# docker load < /opt/httpd
10、上传镜像到公有仓库(必须要有docker官方账号,且创建公有仓库)
#登录
docker login
Username: docker
password:
Emall: xxx@xxx. com #输入账号、密码
#上传
docker push 镜像名:标签名(一般公司使用私有仓库)
11、导出镜像dockerfile文件
docker history --format {{.CreatedBy}} --no-trunc=true (images) | sed "s?/bin/sh\ -c\ \#(nop)\ ??g" | sed "s?/bin/sh\ -c?RUN?g" | tac
二、容器的操作
1、创建容器(创建前必须有该镜像)
格式:docker create -it 镜像名 运行程序
[root@server1 ~]# docker create -it httpd:latest /bin/bash
-i 指容器的标准输入保持打开
-t 指Docker分配一个伪终端
2、查看容器运行状态
[root@server1 ~]# docker ps -a
-a:列出所有的容器,包括未运行的容器
Created:已创建
Up:运行中
3、开启容器,关闭容器
格式:docker start 容器ID号
[root@server1 ~]# docker start af255575064f
格式:docker stop 容器ID号
[root@server1 ~]# docker stop af255575064f
关闭所有运行容器
[root@server1 ~]# docker stop $(docker ps -q)
4、docker run命令
docker run命令会执行从创建容器,开启容器,执行命令,关闭容器等一系列过程。如果没有创建容器和镜像,就会从下载镜像开始执行,一直到关闭容器。执行完成后直接关闭,状态为exited(容器可以做一次性的处理,处理完就释放资源,做到了最小成本控制)
命令格式:docker run 镜像名 /bin/bash -c ls /
[root@localhost abc]# docker run mysql /bin/bash -c ls /
注释:
/bin/bash指定运行环境,-c指定执行命令
[root@server1 ~]# docker run mysql /bin/bash -c ls /
Unable to find image 'mysql:latest' locally
latest: Pulling from library/mysql
852e50cd189d: Already exists
...省略内容
b9940f97694b: Pull complete
2f069358dc96: Pull complete
Digest: sha256:4bb2e81a40e9d0d59bd8e3dc2ba5e1f2197696f6de39a91e90798dd27299b093
Status: Downloaded newer image for mysql:latest
bin
boot
dev
docker-entrypoint-initdb.d
entrypoint.sh
etc
home
...省略内容
tmp
usr
var
[root@server1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1d0c6e1883b3 mysql "docker-entrypoint.s…" About a minute ago Exited (0) About a minute ago dazzling_jang
925e9193ca76 nginx:latest "/docker-entrypoint.…" 8 minutes ago Created vigorous_haibt
17cd0a88b42c httpd:latest "httpd-foreground" 11 minutes ago Up 5 minutes 80/tcp relaxed_taussig
5、进入容器与退出容器
进入容器(该容器一定要在Up状态)
格式:docker exec -it 容器ID /bin/bash
[root@localhost abc]# docker exec -it 17cd0a88b42c /bin/bash
exit #退出容器
6、导出、导入容器
导出容器格式为:docker export 容器ID > /路径/定义容器名
[root@server1 opt]# docker export 1d0c6e1883b3 > /opt/mysql:web
注意:导入容器只会生成镜像,而不会创建容器
格式:cat 容器名 | docker import - 镜像:标签
[root@server1 opt]# cat /opt/mysql:web | docker import mysql:web
sha256:b7aed3a79a6a440ef1f81d6cb00c453abb1edc13be9377285b26e3c064a9d764
7、删除容器
容器必须是exited 关闭状态,才能删除
格式:docker rm 容器ID号
[root@server1 ~]# docker rm dc81b1a7e500
8、批量删除容器
第一种:
[root@server1 ~]# dcoker rm `docker ps -aq`
第二种:
[root@server1 ~]# docker ps -a | awk '{print "docker rm"$1}' | bash 不能删除up状态的容器