关键词:
一、docker命令-镜像
1、查看docker版本
docker -v
docker version
decker info #可以查看所有运行容器的镜像数量,运行容器的版本,可以分配的CPU,总的内存等信息.docker的工作目录 /var/lib/decker
[root@ct ~]# docker version
Client: Docker Engine - Community
Version: 20.10.8 #版本
API version: 1.41 #api版本
Go version: go1.16.6 #go语言版本
Git commit: 3967b7d
Built: Fri Jul 30 19:55:49 2021
OS/Arch: linux/amd64
Context: default #映射默认
Experimental: true #实验功能开启
Server: Docker Engine - Community
Engine:
Version: 20.10.8
API version: 1.41 (minimum version 1.12)
Go version: go1.16.6
Git commit: 75249d8 #暂存区里的改动给提交到本地的版本库的id
Built: Fri Jul 30 19:54:13 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.9
GitCommit: e25210fe30a0a703442421b0f60afac609f950a3
runc:
Version: 1.0.1
GitCommit: v1.0.1-0-g4144b63
docker-init:
Version: 0.19.0
GitCommit: de40ad0
[root@ct ~]#
2、搜索镜像
docker search nginx
——》自己制作镜像,然后上传到docker hub 上
优化:有效减少镜像大小,dockerfile 优化方向
也可以直接上官网:
https://hub.docker.com/ 》搜nginx》第一个官方分布》tag》找到目的版本的编号
然后抓取下载docker pull nginx:1.21.0
3 、下载镜像
默认是从docker hub
docker pull 镜像名称
例如:docker pull nginx #不交标签则默认latest,最新版本
4、查看镜像列表
docker images #查看当前docker下的下载镜像信息
[root@ct ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
#镜像仓库 #标签 #镜像id #建立时间 #大小
redis 6.2-alpine3.14 f6f2296798e9 3 days ago 32.3MB
redis v1 f6f2296798e9 3 days ago 32.3MB
busybox latest 42b97d3c2ae9 10 days ago 1.24MB
nginx 1.21 dd34e67e3371 13 days ago 133MB #
nginx v1 dd34e67e3371 13 days ago 133MB
#根据image id,发现与上面的其实是同个镜像,只是标签不同
hello-world latest d1165f221234 5 months ago 13.3kB
centos 7 8652b9f0cb4c 9 months ago 204MB
[root@ct ~]# docker images redis:v1 #单独看一个镜像,REPOSITORY+TAG为一个镜像(唯一性),而tag可以人为指定的
REPOSITORY TAG IMAGE ID CREATED SIZE
redis v1 f6f2296798e9 3 days ago 32.3MB
5 获取镜像信息
docker inspect 镜像ID (或者镜像:标签)
docker inspect redis:
[root@ct ~]# docker inspect nginx:1.21
[
"Id": "sha256:dd34e67e3371dc2d1328790c3157ee42dfcae74afffd86b297459ed87a98c0fb",
"RepoTags": [
"nginx:1.21",
"nginx:v1"
],
"RepoDigests": [
"nginx@sha256:4d4d96ac750af48c6a551d757c1cbfc071692309b491b70b2b8976e102dd3fef"
],
"Parent": "",
....................
[root@ct ~]# docker inspect dd34e67e3371
[
"Id": "sha256:dd34e67e3371dc2d1328790c3157ee42dfcae74afffd86b297459ed87a98c0fb",
"RepoTags": [
"nginx:1.21", #镜像的其他名有两个
"nginx:v1" #另一个镜像名
],
"RepoDigests": [
"nginx@sha256:4d4d96ac750af48c6a551d757c1cbfc071692309b491b70b2b8976e102dd3fef"
],
"Parent": "",
"Comment": "",
"Created": "2021-08-17T11:46:11.370722453Z",
"Container": "c8f4640bdac21c018ff68bfb015ab66f87de0ed066b73eb6607a832a8abf3581",
"ContainerConfig":
"Hostname": "c8f4640bdac2",
6 、添加镜像标签
docker tag 软件名:旧标签 软件名:新标签
[root@ct ~]# docker tag nginx:1.21 nginx:lnmp
[root@ct ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis 6.2-alpine3.14 f6f2296798e9 3 days ago 32.3MB
redis v1 f6f2296798e9 3 days ago 32.3MB
busybox latest 42b97d3c2ae9 10 days ago 1.24MB
nginx 1.21 dd34e67e3371 13 days ago 133MB
nginx lnmp dd34e67e3371 13 days ago 133MB
#旧的镜像不会消失,新改的镜像名虽然不同,但id不变
nginx v1 dd34e67e3371 13 days ago 133MB
hello-world latest d1165f221234 5 months ago 13.3kB
centos 7 8652b9f0cb4c 9 months ago 204MB
7、 删除镜像
docker rmi 镜像:标签
docker rmi `docker images -q` #-q 列出镜像ID,批量删
docker rmi -f 镜像:标签 #强制删除
8、镜像导出和导入
docker save -o 文件名 镜像名 #导出生成文件
docker load < 文件名 #重新导入镜像
docker save -o centos-7 centos:7 #导出生成文件centos-7
docker load <centos-7 #导出文件centos-7
[root@ct ~]# cd /opt/
[root@ct opt]# ls
containerd mysql-5.7.20 mysql-boost-5.7.20.tar.gz
[root@ct opt]# docker save -o centos-7 centos:7 #生成镜像文件
[root@ct opt]# ls
centos-7 containerd mysql-5.7.20 mysql-boost-5.7.20.tar.gz
[root@ct opt]# docker rmi -f centos:7 #删除原有镜像
Untagged: centos:7
Untagged: centos@sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e
Deleted: sha256:8652b9f0cb4c0599575e5a003f5906876e10c1ceb2ab9fe1786712dac14a50cf
[root@ct opt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis 6.2-alpine3.14 f6f2296798e9 3 days ago 32.3MB
busybox latest 42b97d3c2ae9 10 days ago 1.24MB
nginx 1.21 dd34e67e3371 13 days ago 133MB
nginx lnmp dd34e67e3371 13 days ago 133MB
hello-world latest d1165f221234 5 months ago 13.3kB
#没有centos这个镜像了
[root@ct opt]# docker load<centos-7
Loaded image: centos:7
[root@ct opt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis 6.2-alpine3.14 f6f2296798e9 3 days ago 32.3MB
busybox latest 42b97d3c2ae9 10 days ago 1.24MB
nginx 1.21 dd34e67e3371 13 days ago 133MB
nginx lnmp dd34e67e3371 13 days ago 133MB
hello-world latest d1165f221234 5 months ago 13.3kB
centos 7 8652b9f0cb4c 9 months ago 204MB
#重新生成
二、docker命令—容器操作
1、 查询容器
docker ps -a #显示主机上的容器及其状态
docker ps -aq #显示容器的ip
[root@ct ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
57f77cf81738 centos:7 "/bin/bash" 30 hours ago Exited (137) 25 hours ago mystifying_buck
1ce04b9f9cad f6f2296798e9 "docker-entrypoint.s…" 2 days ago Up 2 days 6379/tcp nervous_dirac
914b1af0ecb0 redis:6.2-alpine3.14 "docker-entrypoint.s…" 2 days ago Up 2 days 6379/tcp raide1
886cd3d8c81e nginx:1.21 "/docker-entrypoint.…" 2 days ago Up 2 days 80/tcp socker1
CONTAINER ID:容器ID
IMAGE:镜像版本
CRATED:创建的时间
STATUS:运行的时间
PORTS:暴露的端口
NAMES:名称(可定义)
2、创建容器
docker create -itd nginx:latest /bin/bash
-i 让容器的标准输入保持打开
-t 分配一个伪终端
-d 后台守护进程的方式运行
3、 启动容器
docker start 容器id
docker run centos:7 /usr/bin/bash -c ls /
启动容器(一次性执行)
docker run -itd centos:7 /bin/bash/
#在后台持续进行
4、停止容器
docker stop 容器ID
#状态码0:正常退出,非0值表示非正常退出,137表示主动停止退出
[root@ct ~]# docker stop 57f77cf81738
57f77cf81738
5 、容器持续后台运行
[root@ct ~]# docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"
418050aa42b7e7c182eb484cb9b80519c708c0638d65c9add6ebfc016ce00633
[root@docker ~]# watch -n 2 docker ps -a #每两秒执行
[root@docker ~]# docker rm `docker ps -aq` #不会删除正在运行的
6 、进入容器
使用run
docker run -it nginx:latest /bin/bash #一次性的,退出则关闭
exec(容器必须为开启状态)
docker exec -it 容器ID /bin/bash
PS:
docker run -it 会创建前台进程,但是会在输入exit后终止进程。
docker attach 会通过连接stdin,连接到容器内输入输出流,会在输入exit后终止进程.
docker exec -it 会连接到容器,可以像SSH一样进入容器内部,进行操作,可以通过exit退出容器,不影响容器运行。
[root@ct ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e86cc40e5351 centos:7 "/bin/bash" 3 seconds ago Up 2 seconds great_golick
1ce04b9f9cad f6f2296798e9 "docker-entrypoint.s…" 2 days ago Up 2 days 6379/tcp nervous_dirac
914b1af0ecb0 redis:6.2-alpine3.14 "docker-entrypoint.s…" 2 days ago Up 2 days 6379/tcp raide1
886cd3d8c81e nginx:1.21 "/docker-entrypoint.…" 2 days ago Up 2 days 80/tcp socker1
[root@ct ~]# docker exec -it e86cc40e5351 /bin/bash
[root@e86cc40e5351 /]# ls #centos的容器中也有虚拟文件
anaconda-post.log dev home lib64 mnt proc run srv tmp var
bin etc lib media opt root sbin sys usr
[root@e86cc40e5351 /]# exit #退出
exit
7、 容器导出与导入
docker export 容器ID > 文件名 #导出
docker import 导出的文件名(容器) 指定镜像名称 #导入容器文件,重新生成镜像
[root@ct ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e86cc40e5351 centos:7 "/bin/bash" 5 minutes ago Up 5 minutes great_golick
1ce04b9f9cad f6f2296798e9 "docker-entrypoint.s…" 2 days ago Up 2 days 6379/tcp nervous_dirac
914b1af0ecb0 redis:6.2-alpine3.14 "docker-entrypoint.s…" 2 days ago Up 2 days 6379/tcp raide1
886cd3d8c81e nginx:1.21 "/docker-entrypoint.…" 2 days ago Up 2 days 80/tcp socker1
[root@ct ~]# cd /opt/
[root@ct opt]# docker export 886cd3d8c81e > nginx-1.21 #生成文件
[root@ct opt]# ls
nginx-1.21
[root@ct opt]# docker stop 886cd3d8c81e #停止容器并删除容器
886cd3d8c81e
[root@ct opt]# docker rm 886cd3d8c81e
886cd3d8c81e
[root@ct opt]# docker rmi nginx:1.21 #删除镜像
Untagged: nginx:1.21
Deleted: sha256:0b4bf752f838f3b775546fd465d4afa64dd04ccb9e6ebca10ada8a10aeefef42
Deleted: sha256:109b539aca08b0ca21c16a38493491ee223a75e2b9738ac7145150155eec36db
[root@ct opt]# docker import nginx-1.21 nginx:1.21 #重新注入
sha256:0b4bf752f838f3b775546fd465d4afa64dd04ccb9e6ebca10ada8a10aeefef42
[root@ct opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e86cc40e5351 centos:7 "/bin/bash" 8 minutes ago Up 8 minutes great_golick
1ce04b9f9cad f6f2296798e9 "docker-entrypoint.s…" 2 days ago Up 2 days 6379/tcp nervous_dirac
914b1af0ecb0 redis:6.2-alpine3.14 "docker-entrypoint.s…" 2 days ago Up 2 days 6379/tcp raide1
[root@ct opt]# docker images #镜像重新出现
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx 1.21 8345d48257de 4 seconds ago 132MB
redis 6.2-alpine3.14 f6f2296798e9 4 days ago 32.3MB
busybox latest 42b97d3c2ae9 11 days ago 1.24MB
nginx lnmp dd34e67e3371 2 weeks ago 133MB
8、删除容器
docker rm 容器ID
docker rm -f 容器ID #强制删除
docker ps -a | awk 'print "docker rm "$1' | bash
#批量删除容器
docker rm `docker ps -aq`
#批量删除不在运行的容器,-f则强势删除所有
for i in 'docker ps -a | grep -i exit | awk 'print $1'`; do docker rm -f $i; done
#批量删除"exit"状态的容器
二、docker的网络模式
1、 host模式
容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口
如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。
使用host模式的容器可以直接使用宿主机的IP地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,不需要进行NAT,host最大的优势就是网络性能比较好,但是docker host上已经使用的端口就不能再用了,网络的隔离性不好。
2 container:
创建的容器不会创建自己的网卡、设置IP等,而是和一个指定的容器共享IP、端口范围
这个模式指定新创建的容器和已经存在的一个容器共享一个network namespace,而不是和宿主机共享,新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定地容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表还是隔离的。两个容器的进程可以通过loo网卡设备通信
3、 None模式
该模式关闭了容器的网络功能
这种网络模式下容器只有lo回环网口,没有其他的网卡。none模式可以在容器创建时通过-network=none参数指定
这种类型的网络无法联网,但是封闭的网络能很好的保证容器的安全性
4 、Bridge模式
此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker虚拟网桥,通过docker 0 网桥及iptables的nat,表配置与宿主机通信
当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。
从docker0子网中分配一个IP给容器使用,并设置docker0 的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair 设备,Docker 将 veth pair 设备的一端放在新创建的容器中,并命名为etho(容器的网卡),另一端放在主机中,以vethxxx,这样类似的名字命名,并将这个网络设备加入到docker0 网桥中。可以通过brctl show命令查看。
bridge模式是docker 的默认网络模式,不写-net参数,就是 bridge模式。使用docker run -p时, docker实际是在iptables,做了DNAT规则,实现端口转发功能。可以使用jptables. -t nat -vnL查看。
docker基础命令(代码片段)
Docker常用命令介绍1、docker常用命令命令作用dockersearch查询镜像dockerpull从网上拉取镜像dockercreate创建容器dockerps查看容器进程dockerstart启动容器进程dockerstop终止容器进程dockerlogs查看日志dockerimages查看docker中的镜像dockerrm删除镜像do... 查看详情
docker的基础命令(代码片段)
帮助命令dockerversion查看docker版本dockerinfo显示Docker系统信息,包括镜像和容器数。docker--help展示docker所有命令dockercommand--help更深入的了解指定的Docker命令使用方法。command为你想要的了解命令dockerrun--help案例Usage:dockerrun[OPTIONS]... 查看详情
docker基础命令学习(代码片段)
Docker学习Docker简介虚拟机和Linux容器Docker中基本概念镜像(Image)容器(Container)仓库(Repository)分层存储Docker的安装Centos6安装DockerCentos7安装Docker配置阿里云镜像加速器配置HelloWorld镜像底层运行原理Docker常用命令帮助命令dockerversion---查... 查看详情
docker-基础命令(代码片段)
docker容器,只能启动一个指定的程序,程序结束,容器退出查看命令:docker--help 总得来说,docker的命令为以下几种: 容器生命周期管理— docker[run|start|stop|restart|kill|rm|pause|unpause]容器操作运维— docker[ps|inspect|top|attach|events... 查看详情
docker基础命令(代码片段)
一、docker命令-镜像1、查看docker版本docker-vdockerversiondeckerinfo#可以查看所有运行容器的镜像数量,运行容器的版本,可以分配的CPU,总的内存等信息.docker的工作目录/var/lib/decker[root@ct~]#dockerversionClient:DockerEngine-CommunityVersi 查看详情
docker基础命令(代码片段)
一、docker命令-镜像1、查看docker版本docker-vdockerversiondeckerinfo#可以查看所有运行容器的镜像数量,运行容器的版本,可以分配的CPU,总的内存等信息.docker的工作目录/var/lib/decker[root@ct~]#dockerversionClient:DockerEngine-CommunityVersi 查看详情
docker基础命令(代码片段)
Docker常用命令学习网站:https://yeasy.gitbook.io/docker_practice/查看所有镜像:“dockerimages”删除imagedockerrmiIMAGEID若上步无法删除,则需要先删除运行过该images的container,先利用“dockerps-a”查看退出的container;再利用“dockerrmCONTAINERID... 查看详情
docker基础命令,docker网络模式!!!(代码片段)
docker基础命令,docker网络模式!!!一.docker镜像操作二.docker命令---镜像2.1查看docker版本2.2搜索镜像2.3下载镜像2.4查看镜像列表2.5获取镜像信息2.6添加镜像标签2.7删除镜像2.8镜像导出2.9镜像导入三.docker命令---容器... 查看详情
docker基础命令使用(代码片段)
Docker基础命令本文主要基于上一片篇docker安装,来演示命令使用方法,docker安装。1、DockerHub搜索镜像dockersearch关键字选项:--automated=false:仅显示自动创建的镜像(通过Github或BitBucket仓库自动构建的镜像,直接从仓库复制一份,... 查看详情
关于docker那点事儿——docker基础命令(代码片段)
文章目录前言一、docker安装docker配置文件详解二、常用docker命令1、dockerimage命令2、dockerrun命令3、常用命令三、docker网络1、docker修改默认网段2、不同宿主机下docker互通四、docker数据目录迁移前言官方文档:https://docs.docker.com... 查看详情
docker安装优化与docker基础命令(代码片段)
Docker安装优化与Docker基础命令#个人阿里云镜像加速;登陆阿里云搜索镜像加速,复制链接sudomkdir-p/etc/dockersudotee/etc/docker/daemon.json<<-‘EOF‘"registry-mirrors":["https://ye71id77.mirror.aliyuncs.com"]EOFsudosystemctldaemon-re 查看详情
容器|docker基础命令(代码片段)
dockerversion查看docker版本信息dockersearchnginx查找nginx镜像文件dockerimages查看所有镜像文件dockerpullmysql获取最新版本的mysqldockerpullmysql:5.7.35下载指定版本(5.7.35)的mysqldockerps查看docker进程快照dockerstophello-world停止h 查看详情
docker入门基础篇(代码片段)
查看docker教学视频,请点击《狂神说java》:https://www.bilibili.com/video/BV1og4y1q7M4?p=1记得投币三连呀~~Docker学习Docker概述Docker安装Docker命令镜像命令容器命令操作命令......Docker镜像容器数据卷DockerFileDocker网络原理Idea整合DockerDockerCompose... 查看详情
docker常用的基础命令(代码片段)
docker常用的基础命令镜像命令:搜索镜像:dockersearchimages_name下载镜像:dockerpullimages_name查看当前的所有镜像:dockerimages删除本地镜像:dockerrmiimages_name容器操作:新建容器并启动:#在容器里启动一个/bin/bashshell环境,可以登录... 查看详情
docker基础命令详解——镜像及容器操作(代码片段)
Docker基础命令详解——镜像及容器操作前言?上篇文章介绍了有关Docker的基础与Linux下docker的安装,本文主要讲解安装docker后的基础使用方法以及命令的介绍,主要是docker镜像操作及容器操作命令。?当然,docker的相关命令非常多... 查看详情
docker基础:管理命令(代码片段)
...令管理网络管理容器管理服务管理节点管理插件管理命令dockernetwork:管理网络;dockercontainer:管理容器;dockerservice:管理服务;dockernode:管理Swarm节点;dockerplugin:管理插件;dockerstack:管理堆栈;dockersystem:管理系统信息;d 查看详情
docker基础命令总结(代码片段)
dockerinfo显示docker详细信息dockerpullbusybox拉取镜像dockerpullnginxdockerimagesnginx查看正在运行的镜像dockerrun--namenginx01-d-p8099:80nginx用nginx镜像启动一个容器,命名为nginx01并映射了8099端口这样我们就可以直接访问nginx了:firefox127.0.0.1:8099... 查看详情
docker基础入门安装以及常见命令(代码片段)
1、docker常见命令以及安装知识详解1、docker安装1、安装版本统一:Dockerversion18.03.0-ce,build0520e242、安装方式:使用dockerrepository安装3、sudoapt-getupdate4、InstallpackagestoallowapttousearepositoryoverHTTPSsudoapt-getinstallapt-trans 查看详情