docker学习笔记01-安装docker

news/2024/7/23 9:41:55 标签: docker, 容器

1.Docker的概述

        用Go语言实现的开源应用项目(container);克服操作系统的笨重;快速部署;只隔离应用程序的运行时环境但容器之间可以共享同一个操作系统;Docker通过隔离机制,每个容器间是互相隔离,每个容器内都有一个属于自己的文件系统,互不影响

2.重要概念

实际上你可以简单的把image理解为可执行程序,container就是运行起来的进程。

那么写程序需要源代码,那么“写”image就需要dockerfile,dockerfile就是image的源代码,docker就是"编译器"。

因此我们只需要在dockerfile中指定需要哪些程序、依赖什么样的配置,之后把dockerfile交给“编译器”docker进行“编译”,也就是docker build命令,生成的可执行程序就是image,之后就可以运行这个image了,这就是docker run命令,image运行起来后就是docker container。

        基本组成:镜像 image、容器 container、仓库 repository(共有/私有;存放镜像的地方)

3.docker命令


docker version      # 显示docker的版本信息
docker info         # 显示docker的系统信息

镜像命令
	docker images  # 查看所有本地的主机上的镜像
	docker search 镜像名  # 搜索镜像
	docker pull 镜像名[:tag]  # 下载镜像如果不写tag,默认就是latest
	docker rmi -f 镜像ID                 # 删除指定的镜像
	docker rmi -f $(docker images -aq)  # 删除全部的镜像
	
	
容器命令(有了镜像才可以创建容器,直接run就是先创建再启动)
	docker run [可选参数] 镜像ID
	参数说明
        -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

        -d: 后台运行容器,并返回容器ID;

        -i: 以交互模式运行容器,通常与 -t 同时使用;

        -P: 随机端口映射,容器内部端口随机映射到主机的端口

        -p: 指定端口映射,格式为:主机(宿主)端口:容器端口

        -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

        --name="nginx-lb": 为容器指定一个名称;

        -m :设置容器使用内存最大值;

        --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

        --link=[]: 添加链接到另一个容器;

        --expose=[]: 开放一个端口或一组端口;

        --volume , -v: 绑定一个卷
	例如
	docker run -it centos /bin/bash   
	从容器中退回主机

	exit  # 直接停止容器并退出
	Ctrl + P + Q # 不停止容器但退出
	

	docker ps  # 列出当前正在运行的容器
	可选项
	-a # 列出当前正在运行的容器+带出历史运行的容器
	-n=数字 # 显示最近创建的容器
	-q # 只显示容器的编号


删除容器
	docker rm 容器ID                  # 删除指定的容器,不能删除正在运行的容器
	docker rm -f 容器ID               # 强制删除指定的容器
	docker rm -f $(docker ps -aq)    # 删除全部的容器
	docker ps -aq | xargs docker rm  # 删除全部的容器

启动和停止容器的操作
	docker start 容器ID     # 启动容器
	docker start -i 容器ID  # 启动一个已停止的容器,并进入交互界面
	docker restart 容器ID   # 重启容器
	docker stop 容器ID      # 停止当前正在运行的容器
	docker kill 容器ID      # 强制停止当前容器

后台启动容器
	docker run -d 镜像名

查看日志
	docker logs -tf --tail 数字 容器ID
	可选项
		-tf # 显示日志
		--tail 数字 # 显示的日志的条数
docker run -d centos /bin/sh -c "while true;do echo hello world;sleep 1;done"
docker logs -tf --tail 10 容器ID  # 显示10条日志
docker logs -tf --tail 10 容器ID  # 显示所有日志
Ctrl + C # 停止输出日志
查看容器中的进程信息

docker top 容器ID
查看镜像元数据

docker inspect 容器ID
进入当前正在运行的容器

docker exec -it 容器ID /bin/bash    # 进入容器后开启一个新的终端,可以在里面操作(常用)  
    参数说明:

        -d :分离模式: 在后台运行

        -i :即使没有附加也保持STDIN 打开

        -t :分配一个伪终端


文件是在容器内创建的,命令是在主机上执行的。

在容器内时,可以exit退出,因为容器内的文件存在与否和容器是否正在运行没关系。

docker cp 容器ID:容器内路径 目的主机路径
从主机上拷贝文件到容器docker cp 源主机路径 容器ID:容器内路径
拷贝是一个手动过程,未来我们使用“-v”卷的技术,可以实现自动同步

修改容器内存
docker stats 容器ID
Ctrl + C退出
docker update --memory 2G --memory-swap -1 容器ID
mac系统无法设置超过2GiB的内存,Linux系统可以设置为系统能提供的最大内存

4.centos8安装docker


把image理解为可执行程序,container就是运行起来的进程。dockerfile就是image的源代码,docker就是"编译器"

--1.更新国内源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
yum clean all && yum makecache
--2.卸载旧版本的docker
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
--3.增加源
sudo yum install -y yum-utils
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
--4.安装dockerdocker的引擎、操作docker的客户端、docker容器)
--先卸载低版本的runc,要不安装的时候会报错版本低冲突
yum -y remove runc
sudo yum install docker-ce docker-ce-cli containerd.io
--5.启动docker服务,查看是否成功
sudo systemctl start docker
sudo systemctl enable docker
----客户查看docker的版本,也确保一下安装是否成功
docker -v  
----查看有没有下载的镜像images
----因为是新安装的docker,所以是空列表
docker images
--6.配置docker应用镜像加速
--/etc/docker这个目录加入没有的话就自己创建一个
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://kru7klna.mirror.aliyuncs.com"]
}
EOF

重新加载
sudo systemctl daemon-reload
sudo systemctl restart docker


http://www.niftyadmin.cn/n/5291009.html

相关文章

C++ DAY2作业

1.课堂struct练习&#xff0c;用class&#xff1b; #include <iostream>using namespace std;class Stu { private:int age;char sex;int high; public:double score;void set_values(int a,char b,int c,double d);int get_age();char get_sex();int get_high(); }; vo…

Ubuntu Desktop 22.04 桌面主题配置

Ubuntu Desktop 22.04 桌面主题配置 使用这么久 Ubuntu Desktop&#xff0c;本着不折腾的原则&#xff0c;简单介绍下自己的桌面主题配置。 安装 tweaks 安装 GNOME Shell 安装 GNOME theme安装 gnome-tweaks & chrome-gnome-shell sudo apt update # 安装 gnome-tweaks…

【Spring Security】AuthenticationFailureHandler 用户认证失败后处理

文章目录 前言简单介绍官方默认用户认证失败后处理器SimpleUrlAuthenticationFailureHandlerForwardAuthenticationFailureHandlerExceptionMappingAuthenticationFailureHandlerDelegatingAuthenticationFailureHandler 自定义使用SecurityConfiguration 配置 前言 Authentic…

C语言之字符串处理

目录 字符串长度 显示字符串 数字字符的出现次数 大小写字符转换 字符串数组的参数传递 非字符串的字符数组 目前我们所学习到的是围绕字符串的处理&#xff0c;仅仅是生成字符串、读取并显示字符串&#xff0c;下面我学习更加灵活处理字符串的方式。 字符串长度 我们来看…

win32 菜单编程学习1

新建一个Win32空工程; 添加一个main.cpp,添加一个窗口的win32代码; 运行,出来一个窗口,此时没有菜单; 然后在资源中插入菜单; 编辑菜单; 此时自动生成resource.h; 里面包含, #define IDR_MENU1 101 #define ID_TEST1_TEST101 …

一次性带屏电子烟解决方案,基于32位单片机开发

电子烟一般是指液态雾化电子烟&#xff0c;就是加烟油进行雾化的品类。电子烟根据烟油种类、烟雾量及使用情况有不同划分&#xff0c;如一次性小烟、换弹式电子烟、开放式注油电子烟、大烟、CBD雾化器等。一次性电子烟外形小巧&#xff0c;重量轻&#xff0c;便于随身携带&…

雷军的最后一战,就这?

作者 | 魏启扬 来源 | 洞见新研社 2021年3月30日&#xff0c;小米官宣进军电动汽车赛道后的1003天&#xff0c;小米汽车亮相了。 由于是雷军“人生中最后一次重大的创业项目”&#xff0c;押上了雷军“人生所有积累的战绩和声誉”&#xff0c;小米对于造车极为重视&#xff…

“暂存”校验逻辑探讨

1、背景 在业务中可能会遇到这种场景&#xff0c;前端页面元素多且复杂&#xff0c;一次性填完提交耗时很长&#xff0c;中间中断面临着丢失数据的风险。针对这个问题&#xff0c;“暂存”应运而生。 那“暂存”的时候&#xff0c;是否需要对数据校验&#xff0c;如何进行校验…