阅读目录
CentOS 下 Docker安装
使用脚本安装 Docker
(1)安装docker
sudo yum
install
docker
---------------------------------------------------------------------------------------------------------
*.rpm is not signed解决
1、# yum install qemu*报错如下:Package qemu-kvm-tools-0.12.1.2-2.113.el6.x86_64.rpm is not signed2、解决# vim /etc/yum.repos.d/CentOS-Base.repo把其中的gpgcheck值改为0如果还报错yum加参数--nogpgcheck
yum
install
docker --nogpgcheck
---------------------------------------------------------------------------------------------------------------------------------------
1.软件包 moby-runc-1.0.0~rc10+azure-2.x86_64.rpm 没有签名
2.处理 moby-runc-1.0.0~rc10+azure-2.x86_64 与 runc 的冲突
--> 处理 moby-containerd-1.3.7+azure-1.x86_64 与 containerd 的冲突
--> 解决依赖关系完成
错误:moby-containerd conflicts with containerd.io-1.2.13-3.2.el7.x86_64
错误:moby-runc conflicts with containerd.io-1.2.13-3.2.el7.x86_64
您可以尝试添加 --skip-broken 选项来解决该问题
您可以尝试执行:rpm -Va --nofiles --nodigest
docker -v docker info docker version
yum remove docker
> docker-client
> docker-client-latest
> docker-common
> docker-latest
> docker-latest-logrotate
> docker-logrotate
> docker-engine
sudo yum install -y
rpm -e docker-ce-cli-19.03.12
rm -rf /var/lib/docker/*
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
systemctl status docker.service
---------------------------------------------------------------------------------------------------------------------------------------
(2)启动docker
systemctl start docker.service
(3)配置开机启动
systemctl
enable
docker.service
(4)查看docker版本信息
docker version
(5).net core 创建 Dockerfile
(5)dockerfile
#基于 `microsoft/aspnetcore:2.0` 来构建我们的镜像 FROM microsoft/aspnetcore:2.0 #拷贝项目publish文件夹中的所有文件到 docker容器中的publish文件夹中 COPY . /publish #设置工作目录为 `/publish` 文件夹,即容器启动默认的文件夹 WORKDIR /publish #设置Docker容器对外暴露80端口 EXPOSE 80 #使用`dotnet NetCore2Mvc.dll`来运行应用程序 ENTRYPOINT ["dotnet", "NetCore2Mvc.dll"]
(6)发布项目
将发布的文件拷到centos的core文件夹下
(7)生成镜像
cd 到core文件夹下
sudo docker build -t demo-netcore . (注意:最后空格后面有一个.)。
(9)查看生成的镜像
sudo docker images
因为,刚打包的镜像demo-netcore是基于docker.io/microsoft/aspnetcore镜像的,所以在打包demo-netcore的过程中,会优先从镜像库中拉取docker.io/microsoft/aspnetcore镜像。
(10)运行docker容器
sudo docker run --name democore -d -p 54907:80 demo-netcore
democore 容器的名称。
-d 后台进程。
-p是进行宿主和容器之间端口的映射,(-p 宿主端口:容器端口)
(11)检验docker容器是否运行成功
sudo docker ps -a
(12)因为运行docker容器的时候 进行了 端口映射 所以外部访问端口 为 54907
ip addr
(13)删除镜像
sudo docker rmi (镜像ID)
(14)删除容器
sudo docker rm xxxxxxxxx(容器id)
删除容器之前停止容器
sudo docker stop (容器id)
(15)创建容器
docker commit -p xxxxxxxxxxx(容器id) name(快照名称)
(16)保存本地tar备份
docker save -o ~/xxxxxxxx.tar name(容器名称)
(17)Xftp5物理导出到本地
(18)恢复docker备份
(19)进入docker容器内部
docker exec -it 容器id /bin/bash
(20)退出容器
Ctrl+D 或者 exit
(21)查看docker 日志
docker logs -f -t --since="2017-05-31" --tail=10 alibaba-vica-netapi
docker logs 6dc1e5f74c0
--since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志。
-f : 查看实时日志
-t : 查看日志产生的日期
-tail=10 : 查看最后的10条日志。
alibaba-vica-netapi : 容器名称
项目需要重新发布时:
将发布文件拷到core文件夹下
将之前的容器停掉,
重新build一个镜像demo-netcore2
再次run一个容器democore2 端口映射
就可以看到新发布的内容了
如果想回退到上个版本 只需要停掉当前容器,run demo-netcore镜像
$ sudo docker ps // 查看所有正在运行容器
$ sudo docker stop containerId // containerId 是容器的ID
$ sudo docker ps -a // 查看所有容器
$ sudo docker ps -a -q // 查看所有容器ID
$ sudo docker stop $(docker ps -a -q) // stop停止所有容器
$ sudo docker rm $(docker ps -a -q) // remove删除所有容器