前言
这篇文章是我的进行docker学习的时候,发现这些东西一下子记不住,所以写了一篇类似于字典的文章,希望各位可以喜欢
操作系统:centos(其实就是yum包的区别)
正文
docker 命令速查
创建容器
create命令
docker create -it 镜像名
// it 代表着长久持续的镜像
docker -it --name ubuntu-1 ubuntu
// --name 代表着可以指定名称,之后可以通过操作名称处理镜像,如果不指定将会随机生成
查看容器列表
查看容器
docker ps -a
罗列出所有的镜像不管再跑还是没再跑
启动、停止、重启容器
启动容器start
docker start 容器名
// start 直接启动后就可以进入了,除此之外还有restart,和stop
docker stop 容器名
docker restart 容器名
进入容器
进入容器的命令
docker exec -it ubuntu /bin/bash
// -it设置一个长久有效的容器 Ubuntu指定镜像 进入的路径为/bin/bash
退出容器
退出容器命令
exit
如果你不使用-d选项,那么会自动的进入容器的命令行,exit退出之后将会直接退出关闭容器
拉取镜像
拉取镜像使用pull
docker pull 镜像名
删除镜像、容器
// docker 删除容器
docker rm 容器名
// docker 删除镜像
docker rmi --force 镜像名
//或者可以先stop 容器之后再rm也是可以的,这里force参数是一个意思
将镜像保存到本地
镜像保存到本地
docker save -o 打包后的包名 镜像
// -o参数可以指定包名 后面跟需要保存到本地的镜像名称
将本地镜像导入
docker 将本地镜像导入
docker load -i images.tar
//load 命令可以将镜像导入,但是如果docker中存在本镜像那么会自动跳过
在本地命令行输入命令
docker在本地命令行进行操作
docker exec bash -c "命令"
给镜像打一个快照
打镜像使用export
docker export 容器名 > 最终打包的包名
将快照导入回去
docker 导入快照
docker import 快照包名 镜像名称:latest
// 导入之后不是将原来的容器变为镜像,而是创建一个新的容器
查看所有的文件与初试状态相比的改变
docker diff使用
docker diff 容器名
制作一个镜像
docker commit 进行镜像构建
docker commite 容器名 构建镜像的名称
查看一个镜像详情
docker inspect
docker inspect -f "{{json .RootFS.Layers}}" 镜像名 | jq
该命令可以用来查看docker中各种资源的详细信息,当我们使用dcoker inspect查镜像的详细信息时,返回信息中RootFS.Layers字段就表明了镜像的层级关系。同时由于docker inspect返回的信息较多,我们可以使用-f参数配合jq工具,对docker inspect的输出进行过滤和格式化。
制作一个容器
vi Dockerfile
FROM ubuntu:latest
RUN apt-get update
docker build -t 容器名
使用-t来指定build的容器名
dockerfile用法
Dockerfile文件类似于脚本文件,Dockerfile主要支持的命令如下:
FROM 指定基础镜像,必须为第一个命令
LABEL 为镜像添加标签
RUN 构建时执行的命令行指令
ADD 将本地文件添加到容器中,如果为tar类型文件,则会自动解压,可以访问网络资源,类似wget(网络资源不会被解压)
COPY 将本地文件添加到容器中,不会解压,也不可以访问网络资源
CMD 容器启动时执行的命令,只有最后一条可以生效,可以被docker run的启动命令覆盖。
ENTRYPOINT 容器启动时执行的入口,只有最后一条可以生效,一定会被执行,不可以被覆盖。
EXPOSE 设置默认开放的网络端口(后面的实验会涉及到)
VOLUME 设置默认加载的VOLUME卷(后面的实验会涉及到)
ENV 设置环境变量。
WORKDIR 设置默认的工作目录。
USER 设置容器运行时的用户。
ONBUILD 构建触发器,当此镜像被其他镜像用作基础镜像时,触发器会被执行。
ARG 设置构建参数,可以通过docker build --build-arg将参数从外部传到到Dockerfile构建过程中。
查看容器历史记录
docker history ub/commit
使用history来进行查看我们生成的容器历史记录
将镜像传入私有仓库
docker tag
docker tag [本地镜像名] [私有仓库的URL][私有仓库的镜像名称]
docker tag ub/commit 127.0.0.1:5000/ub/commit
docker push 127.0.0.1:5000/ub/commit
同时还可以通过[私有仓库URL]/v2/[镜像名称]/list来查看镜像的版本信息。
curl 127.0.0.1:5000/v2/ub/commit/tags/list
将镜像从私有仓库拉到本地
docker pull [私有仓库的URL][私有仓库的镜像名称]
centos安装docker
首先通过yum安装必要的依赖组件。为了编译后面的配置信息格式化输出,我们同时安装jq工具。
yum install -y yum-utils device-mapper-persistent-data lvm2
yum install -y jq
因为docker安装包不在yum的默认源列表中,因此需要向yum默认源列表中添加docker源的地址。
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
源添加成功后,使用yum list命令查看当前的docker源中支持的安装包版本列表。
yum list docker-ce --showduplicates | sort -r
选择需要的docker版本,通过yum install命令进行安装
yum install -y docker-ce.x86_64 3:20.10.16-3.el7
启动docker和设置开机自启动
systemctl start docker.service
systemctl enable docker.service
查看版本确定是否安装成功
docker version
通过docker拉取镜像时,默认会通过国外的镜像源进行下载,因此可以配置国内的镜像源以加快下载速度。修改docker的镜像源时,我们使用vi编辑文件 /etc/docker/daemon.json 。
vim /etc/docker/daemon.json
进入vim界面之后,按i进入编辑模式。将下列内容添加到文件中。
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
重启docker
systemctl restart docker.service
跑镜像
docker run hello-world
Ubuntu安装docker
Ubuntu Docker 使用官方安装脚本自动安装:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
也可以使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh
卸载旧版本
Docker 的旧版本被称为 docker,docker.io 或 docker-engine 。如果已安装,请卸载它们:
sudo apt-get remove docker docker-engine docker.io containerd runc
网上拉取镜像:(第一次安装无本地image)
sudo docker pull ubuntu:18.04
本地导入镜像:(如果有自己的image)
导入文件:
假设镜像文件【tndl-img:v1.tar】在root/zyklbr/目录需要cd进入当前目录操作 【cd zyklbr】
sudo cat tndl-img:v1.tar | sudo docker import - tndl-img:v1
查看镜像:
sudo docker images
查看所有容器:
sudo docker ps -a
查看正在运行的容器:
sudo docker ps
用镜像生成一个容器:
先尝试使用
sudo docker run -dit --name=tndl-con -p 2200:22 -p 80:80 -p 443:443 tndl-img:v1 /bin/bash
docker宿主机通过top查看进程,发现有agetty进程100%占用CPU资源,这是【–privileged=true /sbin/init】命令导致的,正常开启后,可以停止agetty进程解除cpu的高占用:
在宿主机以及Container中运行下述命令
systemctl stop getty@tty1.service
systemctl mask getty@tty1.service