docker 使用wget后文件消失
发现一个挺有意思的问题,之前一直没发现docker的这个问题,今天在改 Dockerfile 的时候发现,构建后运行容器,进行容器内部发现一个配置文件丢失了。检查命令没有问题,查看日志也没有问题。
build日志如下:
12345678910--2022-03-15 10:02:31-- https://raw.githubusercontent.com/protocol/deployment/master/main_net_config.confResolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.110.133, 185.199.109.133, ...Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... connected.HTTP request sent, awaiting response... 200 OKLeng ...
docker arm架构下安装docker
arm 架构下安装做arm下的应用迁移,包括应用在docker环境下的表现。所以在 centos arm环境安装docker。
更新源
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
安装 docker
yum install -y docker-ce docker-ce-cli containerd.io
开启docker服务
systemctl enable dockersystemctl start docker
验证
docker ps
如果报错,说明当前用户没有权限,给当前用户授权
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
几种修改方式,思路是一样的,就是给权限:
1.加 sudo 执行2.把当前用户修改用户组3.直接改文件归属
sudo chown $USER /va ...
linux-CentOS8 arm64架构 使用Centos8打包报错 No URLs in mirrorlis
起因最近在为应用打包 arm64架构应用环境的docker包。基于:
Linux aarch64 aarch64 aarch64 GNU/Linux
基础镜象使用 CentOS8,过包过程中报错。
报错虽说 CentOS8 已经不维护了,但是很多项目还是基于CentoOS8构建。使用阿里云基于CentOS8构建 CentOS8 镜像构建过程中报错:
#5 5.239 CentOS Linux 8 - AppStream 8.9 B/s | 38 B 00:04#5 5.241 Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist
原因在 Dockerfile 中使用到了yum 进行安装。阿里云官方给出解释:
CentOS 8操作系统版本结束了生命周期(EOL),Linux社区已不再维护该操作系统版本。建议您切换到Anolis或Ali ...
docker--运行纯linux容器并进入
前言这个为什么单独拿出来说,因为这不是运行一个应用,而是运行一个单独的系统,和运行应用的方式不同。一般运行一个docker,都是运行某个应用如 tomcat、nginx等,直接运行的话很少,一般都是为了手动安装一些应用后,再commit成一个新的镜象。
运行linux容器1234# 拉取centosdocker pull centos:centos7docker run -d -i -t <imageID> /bin/bash
注意如果少了/bin/bash的话,Docker会生成一个Container但是马上就停止了,不会一直运行即使有了-d参数。
进入系统容器1docker attach <ContainerID>
docker run 和 start 的区别
1.docker rundocker run 只在第一次运行时使用,将镜像放到容器中,以后再次启动这个容器时,只需要使用命令docker start 即可。docker run相当于执行了两步操作:将镜像放入容器中(docker create),然后将容器启动,使之变成运行时容器(docker start)。
2.docker startdocker start的作用是,重新启动已存在的镜像。也就是说,如果使用这个命令,我们必须事先知道这个容器的ID,或者这个容器的名字,我们可以使用docker ps找到这个容器的信息。
3.查看所有容器而要显示出所有容器,包括没有启动的,可以使用命令docker ps -a
4.重命名1docker rename old_name new_name
5.启停1docker [stop]|[start] name
docker 守护容器
docker 守护式容器守护式容器,是可以长时间运行的容器:
1.能够长期运行,没有交互式会话2.适合运行应用程序和服务
命令:
1docker run -d 镜像名[COMMAND][arg...]
重点是 -d -d -d
1.启动守护式容器1234567docker run --name dc1 -d ubuntu /bin/sh -c "while true ;do echo hello world ; sleep 1 ; done"#非守护式,打印 hello world后就退出docker run ubuntu:15.10 /bin/echo "Hello world"#查看运行中的容器docker psdocker stats
2.再次进入守护式容器 attach1234docker attach [id | name] //查看刚才用 ctrl + P/Q 退出的命令docker attach a54w1a26 //容器还在运行exit / ...
docker 基本操作
最近在研究使用 docker 进行微服务改造,总结了一下常用的命令,docker 这东西,单个用简单,整体配合 k8s 和 spring cloud 坑还是不少,一个一个解决掉以后,他的易用性和高可用的特性确实很棒。
如果是业务日志需要输出到宿主机上,可以使用 -v 挂载。
1.查看 docker 信息 infodorker info
2.运行 docker 容器 rundocker run IMAGE //启动容器docker run ubuntu echo "en heng"这种命令运行完就退出了。
3.启动交互式容器docker run -it IMAGE //交互式,即进入容器docker run -i -t ubuntu /bin/bash //进入容器ps -efexit //退出
4.查看容器 psdocker ps [-a] [-l]docker psdocker ps -a //-a 全部容器
CONTAINER ID //docker为容器分配的id,即守护进程IDNAME // ...
docker-安装docker
CentOS 安装docker这个命令在 CentOS 环境下使用,在ARM架构下也不需要特殊处理。
添加源
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
安装 docker
yum install -y docker-ce docker-ce-cli containerd.io
开启docker服务
systemctl enable dockersystemctl start docker
验证
docker ps
MacOS 安装dockerbrew 安装那肯定是离不开 brew 的。
brew install --cask --appdir=/Applications docker
官网下载安装如果习惯手动安装的话,到官方网站上下载https://docs.docker.com/desktop/mac/install/