Docker中文手册:
https://vuepress.mirror.docker-practice.com/
查看Docker远程仓库:不需要登录,直接搜软件名称即可。
可以查看都提供了哪些镜像,尽量使用官方镜像
https://hub.docker.com/
相关文章:
http://www.ityouknow.com/docker/2018/03/07/docker-introduction.html
Centos8下的docker常用命令操作:
查看docker服务状态:
systemctl status docker.service
重启docker:
sudo systemctl restart docker
查看docker版本:
docker version
查看docker信息:
docker info
查看帮助:
docker --help
Docker中的镜像操作:
查看本机中所有镜像
docker images
docker images -a
docker image ls
查看指定的镜像
docker images 镜像名称
只查看镜像的Id:
docker images 镜像名称 -q
下载镜像:
docker pull 镜像名称(选择你想安装的版本)
如果不加版本号:
docker pull 镜像名称:latest
eg:
拉取最新版本的镜像:
docker pull redis ---> docker pull redis:latest
拉取指定版本的镜像:(去Docker Hub上查看下都支持哪些版本的镜像)
docker pull redis:7.0.3
docker pull redis:6.2
搜素镜像:
docker search 镜像名称
删除镜像:
正常删除:docker image rm 镜像名称/镜像ID
强制删除:docker image rm -f 镜像名称/镜像ID
批量删除镜像:
docker image rm -f $(docker images 镜像名称 -q )
Docker中的容器操作:
1.查看正在运行的容器
docker ps
2.查看所有容器(running以及stopped状态的)
docker ps -a
3.运行一个镜像构建一个容器(服务):
(设置容器与宿主机端口的映射关系)
运行容器,进行端口映射,后台启动该服务(以守护进程的方式) -d
docker run -d -p 宿主机端口:容器内服务端口 --name 容器名称 镜像名称
4.开启容器:
docker start 容器名称或者容器Id
5.重启容器:
docker restart 容器名称或者容器Id
6.正常停止容器:
docker stop 容器名称或者容器Id
7.立即停止容器:
docker kill 容器名称或者容器Id
8.删除容器:
删除停止的容器:
docker rm 容器名称|容器Id
删除正在运行的容器:
docker rm -f 容器名称|容器Id
删除所有容器:
docker rm -f $(docker ps -aq)
9.查看容器内服务运行日志:
docker logs 容器名称|容器Id
docker logs -f 容器名称|容器Id ---> 实时监控容器内服务的日志
docker logs --tail N()
10.进入容器内部:相当于进入了一个精简版的操作系统
(比如docker安装在Centos上,就可以以操作系统的方式进行操作了)
进入容器,并与容器内命令终端进行交互
docker exec -it 容器名称|容器Id bash
docker run -it 容器名称|容器Id
10.退出容器:exit
11.操作系统与容器之间的文件传输:
从容器复制文件到操作系统:
docker cp 容器唯一标识:(容器Id|容器名称) 容器内资源路径 操作系统文件路径/文件目录
从操作系统复制文件到容器内部:
docker cp 操作系统文件路径/文件目录 容器唯一标识:(容器Id|容器名称) 容器内资源路径
12 查看容器内部细节:
docker inspect 容器Id|容器名称
13 将容器打包成镜像:
Docker中容器之间网络配置:
Docker 允许通过外部访问容器或者容器互联的方式提供网络服务
14.Docker中网络使用:
一般在使用 docker网桥(bridge)实现容器与容器的通信时,都是站在一个应用的角度进行容器通信
docker network --help 查看network命令帮助
1.查看docker网桥配置:
docker network ls
2.创建自定义网桥:
简单写法:
docker network create bridgeName
复杂写法:
docker network create -d bridge bridgeName
在创建容器时,指定自定义的网桥:
启动容器时,明确指定容器使用哪个网络
docker run -d -p 宿主机端口:容器内服务端口 --network 自定义网桥名称 --name 容器名称 镜像名称
eg:
docker run -d --name kafka04 --network walmart -p 9095:9095 -e KAFKA_BROKER_ID=3 -e KAFKA_ZOOKEEPER_CONNECT=IP地址:2181 -e ALLOW_PLAINTEXT_LISTENER=yes -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://IP地址:9095 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9095 -t bitnami/kafka
3.查看某个网络细节:
docker network inspect 网络名称
15.Dockerfile 文件的使用
官网文档:
https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
定义:用来帮助我们自己构建一个自定义镜像
Dockerfile : 镜像构建文件
注意:Dockerfile文件中,如果有n条run指令,前n-1次run生成的都是临时镜像,
而且每run一次都是基于上一次的临时镜像创建新的临时镜像,最后一次run才是最终的
镜像。
Dockerfile的保留命令:全部大写
FROM:指定基础镜像
RUN:构建镜像时需要运行的指令
EXPOSE:当前容器对外暴露出的端口号
WORKDIR:指定在创建容器后,终端默认登录进来的工作目录,一个落脚点
ENV:用来在构建镜像过程中设置环境变量
ADD:将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar包
COPY:类似于ADD,拷贝文件和目录到镜像中,将从构建上下文目录中<原路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
CMD:指定一个容器启动时要运行的命令,Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换
ENTRYPOINT: 指定一个容器启动时要运行的命令,ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及其参数
将asp.net core 程序发布到docker:
https://docs.docker.com/samples/dotnetcore/
https://www.pluralsight.com/blog/software-development/how-to-build-custom-containers-docker
https://www.cnblogs.com/aixinjueluo/articles/13476625.html
https://www.c-sharpcorner.com/article/build-and-deploy-asp-net-webapi-using-docker/
https://www.compilemode.com/2021/05/how-to-deploy-asp-net-core-application-on-docker-linux-container.html
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/docker/building-net-docker-images?view=aspnetcore-6.0
https://www.pluralsight.com/blog/software-development/how-to-build-custom-containers-docker?exp=1