镜像操作
搜索镜像
docker search 镜像名
拉取镜像
docker pull 镜像名:版本号
#不指定版本号指定拉取最新版
[root@localhost ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
a2abf6c4d29d: Pull complete
a9edb18cadd1: Pull complete
589b7251471a: Pull complete
186b1aaa4aa6: Pull complete
b4df32aa5a72: Pull complete
a0bcbecc962e: Pull complete
Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
查看当前docker有哪些镜像
docker images
把镜像导出做成tar文件
docker load < nginx-latest.tar
查看指定镜像的详细信息
docker inspect 镜像名或ID
修改镜像名称
docker tag 旧镜像名称:标签 新镜像名称:标签
[root@localhost ~]# docker tag nginx:latest mynginx:1
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mynginx 1 605c77e624dd 2 years ago 141MB
nginx latest 605c77e624dd 2 years ago 141MB
删除镜像
docker rmi 镜像名/ID:标签
容器操作
创建容器
在容器中都是会执行任务的,如果任务执行完成,容器就会自动退出
docker create -it --name myname nginx:latest bash
docker create: 命令用于创建一个新的容器。
-it: 这两个选项一起使用,-i 使容器的标准输入保持打开,-t 分配一个伪终端,这样你就可以与容器交互了。
--name myname: 为创建的容器指定一个名称,这里是 myname。如果不指定名称,会随机一个名称
nginx:latest: 指定基础镜像是 nginx 的最新版本 (latest)。
bash: 在容器启动后,执行 bash 命令,让你可以直接进入容器的bash shell进行操作。
查询容器
dockers ps
#查询运行中的容器
docker ps -a
#查询所有存在的容器
docker ps -aq
#只显示所有容器的的ID号
关闭容器
docker stop 容器名/ID
启动容器
docker start 容器名/ID
删除容器
#容器需要停止后才可以进行删除操作
#删除容器
docker rm 容器名/ID
#强制删除容器
docker rm -f 容器名/ID
删除所有容器
#使用for循环一个一个停止删除
for i in $(docker ps -aq);do docker stop $i ; docker rm $i ;done
docker ps -aq | xargs docker stop | xargs docker rm
#docker ps -aq:docker ps 是用来列出所有容器的命令。
#-a 参数表示列出所有容器,包括已经停止的容器。
#-q 参数让输出只包含容器的ID,每个ID一行,这样就得到了一个仅包含容器ID的列表,非常适合用于脚本处理。
#|(管道符号): 管道符号用来将前一个命令的输出作为后一个命令的输入。
#xargs docker stop:xargs 命令读取来自标准输入的数据,并将这些数据转换成命令行参数传递给后面的命令。在这里,它接收了前面docker ps -aq产生的容器ID列表。
#docker stop 命令会停止指定的容器。由于通过管道传递了所有容器ID,此命令会停止所有正在运行的容器。
第二个
#| xargs docker rm:
#再次使用管道和xargs,这次是紧接着前一个命令之后,利用之前停止的所有容器的ID列表。
#docker rm 用于删除一个或多个容器。这里,它会删除所有已被停止的容器(由第一个命令序列停止的那些)。
映射端口
docker -d -P nignx
#-P 随机映射端口
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6a9cb70dd6ac nginx "/docker-entrypoint.…" 4 seconds ago Up 3 seconds 0.0.0.0:32768->80/tcp, :::32768->80/tcp beautiful_mestorf
docker run -d -p 80:80 nignx
#-p 把主机的80端口映射到容器中的80端口
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
622bd7f4fb69 nginx "/docker-entrypoint.…" 6 seconds ago Up 5 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp festive_merkle
创建并启动容器
docker run -it nginx:latest
#docker run 创建并启动容器
在后台运行容器
docker run -d nginx
#-d 在后台运行容器,不占用终端
在容器启动时进入容器内部
docker run -it nginx bash
[root@localhost ~]# docker run -it nginx bash
root@b5549c3650c9:/# exit
exit
关闭容器后删除容器
docker -it --rm nginx sleep 1
#--rm 在容器退出后删除容器
在容器运行中进入容器内部
docker exec -it 容器名称/ID bash
使用容器制作镜像
docker export 容器名/ID > 新镜像名.tar
#docker export e5ae9b8af237 > mynginx.tar
将制作的镜像导入docker
cat 新镜像名.tar | docker import - 新镜像名:标签
#cat mynginx.tar | docker import - mynginx:1.0
数据卷
挂载数据卷到容器中
docker run -d -v /data1 -v /data2 --name web nginx:latest
-v /data1 -v /data2: 这里尝试将主机的两个目录挂载到容器中
把主机中的目录挂载到docker中
docker run -d -v /var/www/:/data1 --name web-1 nginx:latest
#-v /var/www/:/data1 将主机的/var/www挂载到容器中的/data1目录中
继承容器中的数据卷
docker run -it --volumes-from web --name db1 nginx:latest bash
--volumes-from web: 表明新容器将从名为web的容器中继承所有数据卷。这意味着,如果web容器挂载了任何数据卷,db1容器也将拥有对这些数据卷的访问权限。