docker

#删除已安装的docker

Uninstall installed docker

sudo yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-selinux
docker-engine-selinux
docker-engine
卸载docker:
yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-selinux
docker-engine-selinux
docker-engine
rm -rf /etc/systemd/system/docker.service.d
rm -rf /var/lib/docker
rm -rf /var/run/docker
rpm -qa|grep docker

#查看docker 版本
yum list docker-ce --showduplicates

#安装docker所需要的依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2

#添加docker yum 源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i -e ‘/mirrors.cloud.aliyuncs.com/d’ -e ‘/mirrors.aliyuncs.com/d’ /etc/yum.repos.d/CentOS-Base.repo


yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#或者使用dnf工具
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
如果不设置镜像源,docker自身的镜像源速度就是乌龟,不,都有点侮辱乌龟了:
设置命令:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装较旧版本(比如Docker 17.03.2) 时需要指定完整的rpm包的包名,并且加上–setopt=obsoletes=0 参数:

Install docker

on a new system with yum repo defined, forcing older version and ignoring obsoletes introduced by 17.06.0

yum install -y --setopt=obsoletes=0
docker-ce-17.03.2.ce-1.el7.centos.x86_64
docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch
安装Docker较新版本(比如Docker 18.03.0)时加上rpm包名的版本号部分:
sudo yum install docker-ce-18.03.0.ce
安装Docker最新版本,无需加版本号:
sudo yum install docker-ce
#安装docker-ce
yum install -y docker-ce-20.10.* docker-ce-cli-20.10.*
#启动docker
systemctl daemon-reload && systemctl enable --now docker

Start docker service

systemctl enable docker
systemctl start docker

可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
yum install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0
yum install # 例如:sudo yum install docker-ce-17.12.0.ce
如果出现 Error: Transaction check error:
解答:这个是因为先装了docker,再装docker-attach后的结果,解决方法是yum remove docker后再yum docker-attach即可
验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
$ docker version

或:
yum install -y docker-ce-18.06.3.ce-3.el7

查看docker状态:
systemctl status docker

docker version 查看docker版本,启动状态才能看到server端信息
docker info 查看运行信息
docker search 搜索镜像,一般下载official官方推荐的镜像

docker images 查看已下载的镜像
docker pull 将镜像下载到本地,如果不指定版本,下载的就是最新的版本,如果要下载公司镜像仓库的镜像,可以指定路径

分为镜像仓库地址(registry)、项目地址(repository)、项目名称、版本号

docker tag centos:7 centos:new-tag 修改tag名称

docker login 直接执行默认登录docker info配置的默认的镜像仓库,如果需要登录其他地址的镜像仓库,需要跟镜像仓库地址

docker push 推送镜像到镜像仓库

docker run -ti 前台启动容器,默认的启动方式。例如:docker run -ti nginx:1.21(镜像名称和tag号),或者docker run -ti nginx bash 添加了bash的进程,没有启动nginx进程,所以说此处的Nginx服务是没有启动起来的,无法访问。也可以-ti --rm 参数,表示前台启动的容器退出后即删除
如果一个镜像需要一直运行,可以使用-d 进行后台启动 docker run -tid nginx bash #也可以使用–restart=always,如果容器异常自动重启
docker run -ti nginx,ctrl+c终止后,会有一个退出的容器,如果想在退出容器的时候并删除这个容器,可以:docker run -ti --rm nginx 就可以了,推荐测试的时候使用–rm参数,不过多让废弃的容器占用机器资源

端口映射:docker run -itd -p 1111:80 nginx:1.21 在后台启动一个Nginx,并且不覆盖他默认的命令,就会启动nginx的服务 #通过宿主机的ip地址访问容器,就需要端口映射,需要加-p,把80端口映射到本机ip地址
netstat -lntupa | grep 1111

docker inspect [容器名称]可以查看容器ipaddress地址,curl [ipadress],可以查看Nginx容器是否能请求Nginx页面,但是本地地址和容器是不通的,此ip地址是内部的ip地址,所以可以通过宿主机ip地址+nginx映射端口号进行本地访问,这里的映射端口号是1111

docker logs -f [容器名称] 查看日志,有些自己的容器是没有日志的,因为此容器的日志没有输出在控制台,而是输出在容器的某一个文件中。如果是云原生,是不推荐把日志写在某个文件中,而是输出在控制台

docker rm 【容器名称】 删除容器

docker ps -q 只显示正在运行的容器的ID

数据持久化:(容器每次启动,都会以最初最干净的状态去启动)
#docker run -ti -p 1111:80 -v /etc/hosts:/etc/hosts nginx bash 可以把本机的某一个目录,映射到容器里面,这样的话在容器种写的数据都可以同步到宿主机,容器无论怎么重启,数据都不会丢失
宿主机挂载路径一定要写绝对路径,不要写相对路径马,否则找不到

docker cp [本地的文件名] [容器名称]:[拷贝到的容器中的路径]

查看新建的用户信息

vim Dockerfile (默认名称)(镜像中不需要写注释,否则可能造成无法识别注释导致无法构镜像,报错:

FROM centos:7 #基础镜像,如果是java,可以设置成jre: jdk: 等,具体的版本号,可以去官方镜像仓库找
MAINTAINER dot #MAINTAINER,指dockerfile作者(镜像作者)此参数已废弃,挪到了LABEL中,可写可不写
RUN useradd dyc
RUN mkdir -p /opt/mnt #生产环境建议写一起,也就是一个RUN后面跟多个命令,减少层的信息,写在一起就是一层,镜像会小一点
USER dyc #指定镜像运行时候的用户
WORKDIR #指定镜像构建运行时,工作目录路径
ENV
ADD #本地的压缩包上传到镜像中,需要解压就用ADD,不需要解压就用COPY,不允许用RUN命令,比如RUN tar -xvf /tmp/133.tar.gz,这样会导致你解压出来的文件是原文件的两倍大!
COPY

已镜像中指定的user用户来运行容器

docker build -t(指定tag版本名称,–tag的缩写)centos:7.6 . (最后这个. 非常重要,是指把当前目录当成工作目录,从其他路径无法复制此路径下的工作木的文件

可以在dockerfile工作目录下,加 -f 指定镜像构建目录,否则默认构建目录还是dockerfile

镜像优化:生产环境不推荐使用centos、ubuntu
推荐使用alpine,可以平替centos

递归删除所有镜像命令:docker rmi -f docker images -qa
解析:docker images -a 是列出所有镜像,-q是只打印镜像ID

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值