docker学习笔记01-安装docker

2023-12-27 16:42:38

1.Docker的概述

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

2.重要概念

  • dockerfile
  • image
  • container

实际上你可以简单的把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.安装docker(docker的引擎、操作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

文章来源:https://blog.csdn.net/qq_63693805/article/details/135243239
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。