Docker入门教程

一、Centos安装docker

官方文档 https://docs.docker.com/install/linux/docker-ce/centos/

  1. 删除历史版本
$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
  1. 安装所需的软件包
$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
  1. 设置仓库
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
  1. 安装 Docker Engine-Community
$ sudo yum install docker-ce docker-ce-cli containerd.io
  1. 启动、开机启动、重启
systemctl start docker
systemctl enable docker
systemctl restart docker
  1. docker 版本
docker version

二、镜像

镜像:未初始化的类

  1. 列出镜像列表
docker images

// REPOSITORY:表示镜像的仓库源
// TAG:镜像的标签
// IMAGE ID:镜像ID
// CREATED:镜像创建时间
// SIZE:镜像大小
  1. 查找镜像
官方镜像仓库
https://hub.docker.com/

docker search nginx
  1. 获取一个镜像
docker pull nginx
  1. 删除一个镜像
docker rmi nginx

docker rmi -f nginx
  1. 设置镜像标签
docker tag 860c279d2fec root/centos:dev

//docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。

三、容器

  1. 新建并启动容器
docker run --name nginx01 -p 8080:80 -d --restart=always nginx

--name nginx01:容器名称。
-p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
-d nginx: 设置容器在在后台一直运行。
--restart=always:无论退出状态是如何,都重启容器;

// 非创建时,更新容器为开机启动
docker update --restart=always $CONTAINER_ID

// 从本地镜像创建

docker run -d -p 8081:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins 1b17598575fe
  1. 列出当前所有正在运行的容器
// 查看所有容器
docker ps

//查看正在运行的容器
docker ps -a

// 查看容器信息
docker inspect $CONTAINER_ID
  1. 退出容器
exit

Ctrl+P+Q
  1. 启动、停止、重启、强制停止容器、删除已经停止的容器
docker start $CONTAINER_ID
docker stop $CONTAINER_ID
docker restart $CONTAINER_ID
docker kill $CONTAINER_ID
docker rm $CONTAINER_ID
  1. 查看容器日志
docker logs -f -t --tail $CONTAINER_ID

-t 加入时间戳
-f 跟随最新的日志打印
--tail 数字 显示最后多少条
  1. 查看容器运行的进程
docker top $CONTAINER_ID
  1. 进入正在运行的容器并以命令行交互
//在容器中打开新的终端,不会启动新的进程
docker exec -it $CONTAINER_ID /bin/bash

//打开新的终端、启动新的进程
docker attach $CONTAINER_ID
  1. 从容器内拷贝文件到主机上
docker cp $CONTAINER_ID:容器内路径  目标主机路径
  1. 资源限制
内存限额:
允许容器最多使用500M内存和100M的Swap,并禁用 OOM Killer:
docker run -d --name nginx03 --memory="500m" --memory-swap=“600m" --oom-kill-disable nginx

CPU限额:
允许容器最多使用一个半的CPU:
docker run -d --name nginx04 --cpus="1.5" nginx

允许容器最多使用50%的CPU:
docker run -d --name nginx05 --cpus=".5" nginx

四、数据卷

  1. volumes
// volumes:Docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)。保存数据的最佳方式。

管理卷:
# docker volume create nginx-vol
# docker volume ls
# docker volume inspect nginx-vol

用卷创建一个容器:
# docker run -d --name=nginx-test -p 8080:80  --mount src=nginx-vol,dst=/usr/share/nginx/html nginx
# docker run -d --name=nginx-test -p 8080:80  -v nginx-vol:/usr/share/nginx/html nginx

清理:
# docker stop nginx-test
# docker rm nginx-test 
# docker volume rm nginx-vol

注意:
1. 如果没有指定卷,自动创建。
2. 建议使用--mount,更通用。
  1. bind mounts
// bind mounts:将宿主机上的任意位置的文件或者目录挂载到容器中;实际使用的是宿主机的目录。

用卷创建一个容器:
# docker run -d -it --name=nginx-test --mount type=bind,src=/app/wwwroot,dst=/usr/share/nginx/html nginx
# docker run -d -it --name=nginx-test -v /app/wwwroot:/usr/share/nginx/html nginx

验证绑定:
# docker inspect nginx-test

清理:
# docker stop nginx-test 
# docker rm nginx-test 

注意:
1. 如果源文件/目录没有存在,不会自动创建,会抛出一个错误。
2. 如果挂载目标在容器中非空目录,则该目录现有内容将被隐藏。
  1. tmpfs
//tmpfs:挂载存储在主机系统的内存中,而不会写入主机的文件系统。如果不希望将数据持久存储在任何位置,可以使用tmpfs,同时避免写入容器可写层提高性能

五、Docker Dockerfile

//核心理念:将正常部署步骤写成脚本,执行,打包
//net core 使用VS自动生成
//PHP 百度模板,根据实际情况修改

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
COPY . .
ENTRYPOINT ["dotnet", "WebApplication1.dll"]

六、仓库

Docker镜像上传至阿里云

https://www.cnblogs.com/chenjiahao9527/p/11980858.html

七、图形界面

  1. 官方网站:https://www.portainer.io/installation/
docker volume create portainer_data
docker run -d -p 8000:8000 -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

八、将容器重新打包成镜像

docker commit -a "runoob.com" -m "my apache" 容器名称或id 打包的镜像名称:标签
OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。




©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容