- # 添加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
-
安装包下载
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
-
- vi /etc/docker/daemon.json
- {
- "registry-mirrors": ["https://q31hsvmg.mirror.aliyuncs.com"],
- "insecure-registries": ["docker-registry:5000"]
- }
-
- systemctl daemon-reload
- systemctl restart docker
-
- # 服务启停
- service docker start/stop/restart
-
- # 搜索镜像
- 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
-
- # 运行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
-
-
有些许情况下,比如遇到了容器启动不成功的情况,可以通过下面的命令来查看容器运行的日志
- docker logs conatiner_name
-
- # 显示所有容器
- docker ps -a
-
- # 显示当前运行中的容器
- docker ps
-
- # 启动容器
- docker start containerId
-
- # 停止容器
- docker stop containerId
-
- # 重启容器
- docker restart containerId
-
- # 删除容器
- docker rm containerId
-
- # 进入容器
- docker exec -it 容器ID /bin/bash
-
- # 文件拷贝
- # 从主机到容器
- docker cp 文件 容器ID:容器中的路径
- # 从容器到主机
- docker cp 容器ID:容器中的路径 主机上文件的路径
-
用命令: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
-
- ###### 当前路径
- [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
-
-
- # 在容器中查看宿主机操作系统
- 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
-