docker学习笔记

这是学习Docker的笔记(极简命令版)

额,主要今天有点累,偷个懒,发一下学习docker的命令笔记

须知

什么是docker?
解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术;

CentOS7安装docker

第一步、卸载旧的docker版本

$ sudo yum remove docker \
				  docker-client \
				  docker-client-latest \
				  docker-common \
				  docker-latest \
				  docker-latest-logrotate \
				  docker-logrotate \
				  docker-selinux \
				  docker-engline-selinux \
				  docker-engine

第二步、安装CE版(免费版)docker开始,首先安装docker的仓库

$ sudo yum install -y yum-utils \
	device-mapper-persistent-data \
	lvm2

安装需要的安装包yum-utils

$ sudo yum install -y yum-utils

设置镜像仓库地址,Docker的Yum源:阿里云的镜像仓库地址

$ sudo yum-config-manager \
  --add-repo \
   http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
$ sudo yum-config-manager --enable docker-ce-nightly # 一般不需要执行
$ sudo yum-config-manager --enable docker-ce-test # 一般不需要执行
$ sudo yum-config-manager --disable docker-ce-nightly # 一般不需要执行

更新yum索引

yum makecache fast

安装Docker CE(免费版)

$ sudo yum -y install docker-ce \
	docker-ce-cli \
	containerd.io

配置使用阿里云镜像加速器(去自己的阿里云控制台获取)

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://hcynqs5o.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

查询配置情况:

ps -sf | grep docker
# centos7可通过如下命令,观察Registry即可
docker info

docker的常用命令

启动docker

systemctl start docker

停止docker

systemctl stop docker.socket

帮助命令

验证docker版本

docker version

docker的信息描述,相比于version更全面

docker info

docker的帮助命令

docker --help

镜像命令

列出本地主机上的镜像

docker images [OPTIONS]

​ 执行结果的各个选项说明

REPOSITORYTAGIMAGE IDCREATEDSIZE
表示镜像的仓库源镜像的标签镜像ID镜像创建时间镜像大小

​ 需要注意:同一仓库源可以有多个TAG,代表这个仓库源的不同个版本,我们使用REPOSITORY:TAG来定义不同的镜像。如果你不指定一个镜像的版本标签,例如你只使用ubuntu, docker将默认使用ununtu:latest镜像;

​ 常用参数OPTIONS说明:

-a-q–digests–no-trunc
列出本地所有的镜像(含中间映像层)只显示镜像ID显示镜像的摘要信息显示完整的镜像信息

查询大仓库(https://hub.docker.com)中某个镜像的信息

docker search [OPTIONS] 某个镜像的名字 # 如:docker search tomcat

​ 执行结果的各个选项说明:

NAMEDESCRIPTIONSTARSOFFICIALAUTOMATED
镜像名描述收藏是否官方

​ 常用参数OPTIONS说明:

–filter stars=指定值–no-trunc–automated
列出收藏数不小于指定值的镜像显示完整的镜像描述只列出automated build类型的镜像

下载镜像

docker pull 某个镜像的名字[:TAG] # 如:docker pull tomcat(此时会下载最新版的latest) 或者 docker pull tomcat:8.5.54(此时会下载指定版本的)

删除镜像

docker rmi 本机的某个镜像名[:TAG] # 如 docker rni tomcat(此时会删除本机最新版的latest) 或者 docker rmi tomcat:8.5.54(此时会删除本机指定版本的镜像)

​ 删除单个镜像:docker rmi -f 镜像ID

​ 删除多个镜像:docker rmi -f 镜像名1:TAG 镜像名2:TAG

​ 删除全部镜像:docker rmi -f $(docker images -qa)

运行镜像(在保证docker启动的前提下)

docker run 镜像 # 如:docker run hello-world

容器命令

须知:有镜像才能创建容器,这是根本前提(这里在docker中下载一个CentOS镜像演示)——docker pull centos

新建并启动容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

​ 常用的参数OPTIONS:

–name=“容器新名字”-d-i-t-P-p
为容器指定一个名称后台运行容器,并返回容器ID,也即启动守护式容器以交互模式运行容器,通常与-t同时使用为容器重新分配一个伪输入终端,通常与-i同时使用随机端口映射指定端口映射,有以下四种格式:ip:hostPost:containerPort、ip::containerPort、hostPort:containerPort、containerPort

查询docker中所有正在运行的容器

docker ps [OPTIONS]

​ 常用的参数OPTIONS

-a-l-n-q–no-trunc
列出当前所有正在运行的容器 + 历史上运行过的显示最近创建的容器显示最近n个创建的容器静默模式,只显示容器编号不截断输出

退出容器

方式一、exit此时容器会停止再退出;

方式二、ctrl + P + Q 此时容器不停止退出

启动容器

docker start 容器ID或者容器名

重启容器

docker restart 容器ID或者容器名

停止容器

docker stop 容器ID或者容器名

强转停止容器

docker kill 容器ID或者容器名

删除已停止的容器

docker rm 容器ID

​ 一次性删除所有正在容器

docker rm -f $(docker ps -a -q)

​ 或者

docker ps -a -q | xargs docker rm

*启动守护使容器

docker run -d 容器名

*查看容器日志

docker logs -f -t --tail 容器ID

​ 解释上述的参数:

-t-f–tail 数值
是加入时间戳跟随最新的日志打印数字显示最后多少数值条

*查看容器内运行的进程

docker top 容器ID

*查看容器内部细节

docker inspect 容器ID

*进入正在运行的容器并以命令行交互

docker exec -it 容器ID bashShell # bashShell表示Linux的命令行,即docker内的容器可使用的Linux命令行,如对于一个centos容器,可使用:docker exec -it 容器ID ls -l /tmp

​ 重新进入正在运行的docker容器

docker attach 容器ID

​ 上述两个区别:attach:直接进入容器启动命令的终端,不会启动新的进程;exec:是在容器中打开新的终端,并且可以启动新的进程;

*从容器内拷贝文件到主机上

docker cp 容器ID:容器内路径 目的主机路径

docker镜像的commit操作

提交容器副本使之成为一个新的镜像

docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]

容器数据卷内添加的常用命令

使用命令向容器添加

docker run -it -v /宿主机绝对路径目录:/容器的目录 镜像名

查看数据卷是否挂载成功

docker inspect 容器ID # 通过查看执行结果的KEY为Volumes、VolumesRW的值即可,centos7在Mounts的JSON串中观察

​ *Volumes:*指明该容器的数据卷目录绑定的是宿主机的哪个目录;

​ *VolumesRW:*指明该容器对容器数据卷目录是否可读可写;

*容器和宿主机之间数据共享?*可以

*容器停止退出后,主机修改后数据是否同步?*可以

命令(带权限)

docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名 # 此时容器内的数据卷目录就是只读的

​ 需要注意:此时;如果VolumesRW(Centos版本的是RW为false),表示该容器的数据卷不是读写均可的;

DockerFile添加

通过一个例子展示:

*步骤一:*新建一个目录用来存放DockerFile文件(这里是新建/home/my_dockerFile目录),并在该新建的目录下创建DockerFile文件(这里新建dockerFile1文件),内容如下:

# volume test
FROM centos
VOLUME ["conta_volumeData1", "conta_volumeData2"]
CMD echo "finshed, ----success!!!"
CMD /bin/bash

*步骤二:*使用命令对该DockerFile进行编译以产生新的镜像,如下命令:

docker build -f dockerFile的文件的路径 -t 编译后的镜像名 .

此时就已经构建好一个镜像了:通过docker images 编译后的镜像名命令查看;

*步骤三:*因为在该镜像是通过我们定义DockerFile文件构建的,有我们编写的内容,内部有这样一句话:VOLUME ["conta_volumeData", "conta_volumeData"],表示通过该镜像创建容器时使用的数据卷;此时通过该镜像创建容器并运行,通过如下命令:

docker run -it 编译后的镜像名

此时进入容器后会发现容器中有DockerFile文件内指定好的VOLUME数据卷;

*步骤四:*这些指定好的每一个数据卷目录默认会与宿主机一个的/var/lib/docker/volumes/随机的ID/_data目录进行绑定,其特征与上面使用命令创建的数据卷一样

数据卷容器

重要:容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止!

DockerFile的解析

保留字指令

FROM:基础镜像,当前新镜像基于哪个镜像

MAINTAINER:镜像维护者的姓名和邮箱地址

RUN:镜像构建时需要运行的命令

EXPOSE:当前容器对外暴漏出的端口号

WORKDIR:指定在创建容器后,终端默认登录的进来工作目录,即一个落脚点

ENV:用来在构建镜像过程中设置环境变量

ADD:将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包

COPY

​ 类似ADD命令,拷贝文件和目录到镜像中。

​ 将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内<目标路径>位置;如:

COPY src dest

COPY ["src", "dest"]

VOLUME:容器数据卷,用于数据保存和持久化工作

CMD

​ 指定一个容器启动时要运行的命令;

​ DockerFile中可以有多个CMD指令,但只有最后一个生效,CMD会被 docker run 之后的参数替换

ENTRYPOINT

​ 指定一个容器启动时要运行的命令

​ ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数(多个指令时不会出现覆盖,而是追加到最后)

ONBUILD:当构建一个被继承的DockerFile时运行命令,父镜像在被子继承后父镜像的onbuild被触发

总结图

BUILDBOTHRUN
FROMWORKDIRCMD
MAINTAINERUSERENV
COPYEXPOSE
ADDVOLUME
RUNENTRYPOINT
ONBUILD
.dockerignore

docker的卸载

systemctl stop docker
yum -y remove docker-ce
rm -rf /var/lib/docker
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值