Docker笔记
一、安装docker
1,卸载旧版本
$ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
2,获取安装脚本,并安装 wget -qO- https://get.docker.com/ | sh
3,将docker配置为开启启动
systemctl enable docker systemctl is-enabled docker
4,启动docker systemctl start docker
5,查询docker版本 docker --version
6,查询docker信息 docker system info
二、镜像
下载镜像: docker image pull <repository>:<tag>
返回废墟镜像: docker image ls --filter dangling=true
移除全部的废墟镜像: docker image prune
过滤查询: docker image ls --filter=reference="*:latest"
在docker hub上搜索镜像: docker search mysql --filter="is-official=true" --limit 100
--filter="is-official=true" :只查询官方的
--limit 100 :返回条数
查看镜像分层: docker image inspect ubuntu:latest
删除镜像: docker image rm alpine:latest
三、容器
启动ubuntu liunx并运行Bash Shell作为其应用: docker container run -it ubuntu /bin/bash
-it 参数可以将当前终端连接到容器的Shell终端之上
Ctrl+PQ 退出容器(没有终止容器)
链接到运行容器的终端中: docker container exec -it <name or id> bash
启动容器: docker container run -d --name webservice -p 80:8080 nigelpoulton/pluralsight-docker-ci
-d 后台运行
-p 80:8080 docker上80端口映射到容器内8080端口
查看容器: docker container ls
-a 查询所有的容器
停止容器: docker container stop 6b4857fe6314
删除容器: docker container rm 6b4857fe6314
启动容器: docker container start percy
重启策略: docker container run -d --name always --restrart always alpine
always:除非明确docker container stop停止该容器,否则该策略会一直尝试重启处于停止状态的容器
unless-stopped:和always的区别是不会再docker daemon重启的时候被启动
on-failure:会在退出容器并且返回值不是0的时候重启容器
清理所有的容器: docker container rm $(docker container ls -aq) -f
四、netcore应用容器化
1,Dockerfile
demo下载:链接: https://pan.baidu.com/s/1tej3V3S6_oqOKhFB5BSMmw 提取码: ia8a
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build WORKDIR /app COPY *.csproj . RUN dotnet restore COPY . . RUN dotnet publish -c Release -o out FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime WORKDIR /app COPY --from=build /app/out ./ EXPOSE 5000 ENTRYPOINT ["dotnet", "netcoremvc_demo.dll"]
FROM:指定要构建的镜像的基础镜像
RUN:在镜像中执行命命令,会创建新的镜像层
COPY:将文件作为新的层添加到镜像中,通常使用COPY将应用代码赋值到镜像中
EXPOSE:声明容器运行的服务端口 EXPOSE 80 443
ENTERPOINT:指定镜像以容器方式启动后默认运行的程序
ENV:设置环境变量 ENV MYSQL_ROOT_PASSWORD 123456
ADD:和COPY一样,支持自动下载和自动解压 ADD https://xxx.com/html.tar.gz /var/www/html
WORKDIR:定位到指定目录(为RUN、CMD、ENTRYPOINT以及COPY和AND设置工作目录)
2,构建docker 镜像
打包镜像: docker image build -t demo:latest .
查询构建过程(size>0的会新建镜像层): docker image history demo:latest
3,将镜像推送到docker hub
登录docker docker login
为镜像重新打一个标签(因为需要推送的到我们自己的docker hub下): docker image tag alpine:latest 962410314/alpine:latest
推送: docker image push 962410314/alpine