2025年3月29日 星期六 甲辰(龙)年 月廿八 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 云技术 > Docker

Docker基础入门

时间:04-20来源:作者:点击数:41
1. Docker安装
1.1. Yum安装
  • # 添加Yum安装源镜像
  • yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • # Yum安装最新docker-ce版本
  • # -ce是社区版(免费)
  • # -ee是企业版(收费)
  • yum -y install docker-ce
1.2. 离线安装

安装包下载

https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

Yum本地安装docker18.03

  • yum install -y libtool-ltdl-2.4.2-22.el7_3.x86_64.rpm
  • yum install -y docker-ce-selinux-17.03.1.ce-1.el7.centos.noarch.rpm
  • yum install -y docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm
1.3. 添加Docker镜像中国区域服务器
  • vi /etc/docker/daemon.json
  • {
  • "registry-mirrors": ["https://q31hsvmg.mirror.aliyuncs.com"],
  • "insecure-registries": ["docker-registry:5000"]
  • }
1.4. 重启:
  • systemctl daemon-reload
  • systemctl restart docker
2. docker基础操作
2.1. 通用基础操作
  • # 服务启停
  • service docker start/stop/restart
2.2. 镜像基础操作
  • # 搜索镜像
  • docker search imageName
  • # 拉取搜索出的镜像
  • docker pull imageName
  • # 拉取指定版本的镜像:
  • # 先在站点上搜索镜像 https://hub.docker.com/search?q=&type=image
  • # 然后点击Tag找到对应版本的Tag
  • docker pull imageName:tag
  • # 删除已存在的镜像
  • docker rmi imageName
  • # 修改镜像名
  • docker tag 旧镜像名:tag 新镜像名:tag
  • # 查看当前镜像列表
  • docker images
2.3. 使用镜像运行容器
  • # 运行MySQL,其中:
  • # --name:新建的容器名
  • # -p:端口映射,Docker映射端口号:MySQL原始端口号
  • # -e:运行参数设定
  • # -d:后台运行
  • # mysql:5.7:镜像名:标签名
  • docker run --name mysql_57 -p 30001:3306 -e MYSQL_ROOT_PASSWORD=my_pass -d mysql:5.7
  • # 运行PostgreSQL
  • docker run -it --name pg_10 -p 5432:5432 -e POSTGRES_PASSWORD=postgres -e ALLOW_IP_RANGE=0.0.0.0/0 -d postgres:10
  • # 运行MS SQLServer, 容易出现的错误是密码不满足要求,SQLServer的要求是至少8位且需要由大写字母、小写字母、数字、符号中的至少3种组成
  • docker run --name SQLServer -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Abc12345" -p 1433:1433 -d mcr.microsoft.com/mssql/server
  • # 运行Tomcat,其中:
  • # --name tomcat_MyTest:tomcat_MyTest是新建容器的名字
  • # -p 9090:8080:9090是docker映射的端口号,8080是tomcat的端口号
  • # -d:后台运行
  • # tomcat:8.5-jdk8-corretto:镜像名:Tag名
  • docker run -p 8080:8080 --name tomcat_MyTest tomcat:8.5-jdk8-corretto -d
  • # 运行draw.io
  • # 下载:docker pull fjudith/draw.io
  • # 参数:--restart=always 总是自启动
  • docker run -dit --name=draw.io -p 8080:8080 fjudith/draw.io
2.4. 查看容器日志

有些许情况下,比如遇到了容器启动不成功的情况,可以通过下面的命令来查看容器运行的日志

  • docker logs conatiner_name
2.5. 容器基础操作(对已经启动的镜像操作)
  • # 显示所有容器
  • docker ps -a
  • # 显示当前运行中的容器
  • docker ps
  • # 启动容器
  • docker start containerId
  • # 停止容器
  • docker stop containerId
  • # 重启容器
  • docker restart containerId
  • # 删除容器
  • docker rm containerId
2.6. 宿主机与容器交互
  • # 进入容器
  • docker exec -it 容器ID /bin/bash
  • # 文件拷贝
  • # 从主机到容器
  • docker cp 文件 容器ID:容器中的路径
  • # 从容器到主机
  • docker cp 容器ID:容器中的路径 主机上文件的路径
2.7. 容器导出镜像进行迁移

用命令:docker export/import 直接导出/导入容器,不能保留运行时相关信息,如把war包存放到tomcat,导出时war包会被遗弃。所以正确的迁移方式应该是将容器导出成镜像。步骤如下:

  • # 导出:
  • # 提交当前容器状态,并根据当前容器 生成一个新的镜像:
  • docker commit 容器id 新创建的镜像名称
  • # 将新创建的镜像导出成tar:
  • docker save 新创建的镜像名称 > 镜像名称.tar
  • # 或
  • docker save --output xxxx.tar imageName
  • # 导入:
  • docker load < 镜像名称.tar
  • # 查看容器运行日志
  • docker logs -f -t --tail 显示最后多少行 容器id
2.8. 创建新的镜像
  • ###### 当前路径
  • [root@myhost MyCentOS7Gui]# pwd
  • /root/MyCentOS7Gui
  • ###### 文件准备
  • [root@myhost MyCentOS7Gui]# ll
  • total 8
  • -rw-r--r-- 1 root root 240 Apr 23 15:31 Dockerfile
  • -rw-r--r-- 1 root root 23 Apr 23 15:19 my_file.log
  • ###### Dockerfile文件内容
  • [root@myhost MyCentOS7Gui]# cat Dockerfile
  • # 镜像来源。本地没有时,会自动下载
  • FROM centos:7
  • # 作者
  • MAINTAINER "chenth"
  • # 在镜像中创建目录
  • RUN mkdir -p /home/chenth
  • RUN mkdir /home/chenth/dir1
  • RUN mkdir /home/chenth/dir2
  • # 文件拷贝
  • ADD my_file.log /home/chenth
  • # 卷,将镜像中的目录挂载到宿主机docker安装目录下
  • VOLUME ["/home/chenth/mydir1","/home/chenth/mydir2"]
  • # 添加环境变量
  • # ENV JAVA_HOME /usr/local/jdk1.8.0_141
  • # ENV PATH $PATH:$JAVA_HOME/bin
  • # 镜像启动为容器后自动执行该指令
  • # CMD ["touch /home/chenth/autofile"]
  • ###### 创建镜像
  • [root@myhost MyCentOS7Gui]# docker build -t my_centos7_gui:v1.0 .
  • Sending build context to Docker daemon 3.072kB
  • Step 1/7 : FROM centos:7
  • ---> 8652b9f0cb4c
  • Step 2/7 : MAINTAINER "chenth"
  • ---> Running in 1c034bb48bbe
  • Removing intermediate container 1c034bb48bbe
  • ---> e32fcf644254
  • Step 3/7 : RUN mkdir -p /home/chenth
  • ---> Running in 257b02c355dd
  • Removing intermediate container 257b02c355dd
  • ---> 25074e37aa67
  • Step 4/7 : RUN mkdir /home/chenth/dir1
  • ---> Running in d791690a9527
  • Removing intermediate container d791690a9527
  • ---> 6316c85de61c
  • Step 5/7 : RUN mkdir /home/chenth/dir2
  • ---> Running in 5b83585220b9
  • Removing intermediate container 5b83585220b9
  • ---> 0e6c97b774b0
  • Step 6/7 : ADD my_file.log /home/chenth
  • ---> 991d1e9dadc5
  • Step 7/7 : VOLUME ["/home/chenth/mydir1","/home/chenth/mydir2"]
  • ---> Running in e3c88116a00a
  • Removing intermediate container e3c88116a00a
  • ---> d0d1abb033f4
  • Successfully built d0d1abb033f4
  • Successfully tagged my_centos7_gui:v1.0
  • [root@myhost MyCentOS7Gui]# docker images
  • REPOSITORY TAG IMAGE ID CREATED SIZE
  • my_centos7_gui v1.0 e6487361bc35 7 minutes ago 204MB
  • centos 7 8652b9f0cb4c 5 months ago 204MB
  • # docker run的时候指定卷的宿主机映射目录
  • [root@myhost MyCentOS7Gui]# docker run --name myCentOS7Gui --privileged -p 5901:5901 -v /root/tmp:/home/chenth/mydir1 --ulimit memlock=-1 -td my_centos7_gui:v1.1 /usr/sbin/init
  • 1bb71101568aaf6711fe41639469fe30dcab65694580ec020323235ea6a8595e
  • [root@naeeiot-dev MyCentOS7Gui]# docker ps
  • CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  • 1bb71101568a my_centos7_gui:v1.1 "/usr/sbin/init" 4 seconds ago Up 4 seconds 0.0.0.0:5901->5901/tcp, :::5901->5901/tcp myCentOS7Gui
在这里插入图片描述
2.9. 在容器中安装软件
  • # 在容器中查看宿主机操作系统
  • root@13f4486c2880:/bin# uname -a
  • Linux 13f4486c2880 5.10.25-linuxkit #1 SMP Tue Mar 23 09:27:39 UTC 2021 x86_64 GNU/Linux
  • # 在容器中查看容器操作系统
  • root@13f4486c2880:/bin# cat /etc/issue
  • Debian GNU/Linux 10 \n \l
  • # 因为容器操作系统是Debian,所以安装用apt-get
  • root@13f4486c2880:/bin# apt-get update
  • root@13f4486c2880:/bin# apt-get install vim
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门