您当前的位置:首页 > 计算机 > 云技术 > Docker

Docker基础入门

时间:04-20来源:作者:点击数:
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
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门