docker常用命令

docker镜像常用命令:

搜索镜像:docker search 镜像名
拉取镜像:docker pull 镜像名
查看镜像信息:docker images
删除镜像:docker rmi 镜像名或者ID
删除虚悬镜像:docker rmi -f 镜像名或ID
如: docker rmi -f docker.io/centos
docker rmi $(docker images -q -f dangling=true)  # 删除所有虚悬镜像
构建镜像:docker build -t 
镜像打标签:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
镜像打标签例子:docker tag centos centos:v1

Docker容器管理 :

docker run -itd --restart=always --name -h hostname [<镜像名>] [CMD命令]
docker run -itd -P nginx

解释:
-d运行在后台 
-P 大写的P代表随机映射 
nginx 镜像的名称

停止容器:docker stop CONTAINER_ID
导出容器为镜像:docker export CONTAINER_ID > xxx.tar
导入容器:docker import xxx.tar < centos:7.4 或者 cat xxx.tar < docker import - CONTAINER_ID

查看容器:docker ps -a -l 
进入容器:docker exec | docker attach |nsenter 
删除容器:docker rm 
查看容器日志:docker logs CONTAINER ID
查看当前在运行的容器:docker  ps
查看所有容器(所有容器,无论是否在运行的容器):docker  ps  -a
停止所有正在运行的容器
docker stop $(docker ps -a -q)
或者
docker stop `docker ps -a -q`

杀死所有正在运行的容器 
docker kill $(docker ps -a -q)

删除所有容器(只有先停止才可以删除)
docker rm $(docker ps -a -q)
或者
docker rm `docker ps -a -q`

删除正在运行的容器(危险,不给任何提示直接删除)
docker rm -f container_id/container_name

批量停止、删除所有容器
docker ps -a | awk '{print $1}'| egrep -v CONTAINER |xargs docker stop
docker ps -a | awk '{print $1}'| egrep -v CONTAINER |xargs docker rm

删除所有未打 dangling 标签的镜像 
docker rmi $(docker images -q -f dangling=true)

强制删除所有容器
for i in `docker ps -a | sed '1d' | awk '{print $NF}'`;do docker rm -f $i;done

把一台机器上的镜像迁移到另一台机器的时候,需要保存镜像与加载镜像:

导出镜像
docker save docker.io/mysql >/root/mysql.tar
载入镜像
docker load </root/mysql.tar
导出多个镜像合并成一个tar包
docker save [images] [images] > name.tar

docker网络访问:

随机映射:docker run -P
-p hostPort:containerPort  #映射所有接口地址,默认会绑定本地所有接口上的所有地址
-p ip:hostPort:containerPort #映射到指定地址的指定端口
#以上两种比较常用
-p ip::containerPort  #映射到指定地址的宿主机任意端口
-p hostPort:containerPort:udp #默认都是tcp,如果需要udp需要在后面指定
#多端口映射,和多个-v挂载目录一样
-p 81:80 -p 443:443
docker查看容器映射信息

查看具体某个容器的端口映射
[root@docker ~]# docker port mynginx
80/tcp -> 192.168.124.11:81 #看到ip和外部端口81 映射到容器内部的80

多个端口映射
docker run -itd --name nginx2 -p 443:443 -p 82:80 docker.io/nginx
[root@docker ~]# docker ps -l  #-l查看最新启动的一个容器,通过man docker ps 可以查询
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                                      NAMES
27bb7bbd55f0        nginx               "nginx -g 'daemon of…"   About a minute ago   Up About a minute   0.0.0.0:443->443/tcp, 0.0.0.0:82->80/tcp   nginx2

[root@docker ~]# docker port nginx2
443/tcp -> 0.0.0.0:443
80/tcp -> 0.0.0.0:82
docker的神技巧:
因为docker启动的都是前台的进程,所以后台是启动不了的。那么我们 exit退出容器以后,只有docker ps -a(显示所有容器)才能看到。有一个技巧就是退出容器以后,让容器仍然在运行 按住ctrl不放手,然后按一下p,再按一下q
#按住ctrl不放手,按一下p,按一下q
[root@docker ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@docker ~]# docker run -it nginx bash
root@9f3014299322:/# [root@docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
9f3014299322        nginx               "bash"              8 seconds ago       Up 7 seconds        80/tcp              frosty_euclid

 

 

版权声明:
作者:allenjol
链接:https://www.ayunw.cn/archives/548
来源:爱生活,爱运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>