1. docker安装
- 查看环境
查看系统内核
uname -r
内核版本为3.1以上
系统版本
cat /etc/os-release
-安装
可查看官网的帮助文档
https://docs.docker.com/get-started/overview/
(1)卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
(2)设置存储库
安装yum-utils包(提供yum-config-manager 实用程序)并设置稳定存储库。
yum install -y yum-utils \\安装依赖
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
//此处使用的是国外镜像,可搜索国内阿里云镜像,比如下面
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
PS:此处可更新yum包索引
yum makecache fast
(3)安装 Docker 引擎(最新版本)
yum install docker-ce docker-ce-cli containerd.io
(4)启动docker
systemctl start docker
docker version
(5)测试docker命令
docker run hello-world
- 卸载
2. run的流程与docker原理
- run的流程
-底层原理
(1)docker是怎么进行工作的?
docker是一个client-server结构的系统,docker的守护进程(服务)运行在主机上,通过socket从客户端访问
DockerServer接收到Docker-client的指令,就会执行这个命令
(2)docker为什么比虚拟机快
Docker有着比虚拟机更少的抽象层
Docker利用的是宿主机的内核,虚拟机使用的是Guest OS
所以,新建容器不需要像虚拟机一样重新加载一个操作系统的内核,避免引导性操作;虚拟机是加载Guest OS,分钟级别,而docker利用宿主机的内核,省略复杂的过程,秒级!
2.Docker常用命令
2.1帮助命令
docker version #显示docker版本信息
docker info #显示docker的系统信息,包括镜像和容器数量
docker 命令 --help #万能帮助命令
帮助命令的地址:https://docs.docker.com/engine/reference/run/
2.2镜像命令
- 查看镜像
docker images
可选项
-a,--all #列出所有镜像
-q,--quiet #只显示ID
- 搜索镜像
docker search 镜像
也可以通过网站:https://registry.hub.docker.com/搜索
可选项
--filter=STARS=3000 #收藏大于3000的
- 下载镜像
docker pull 镜像
[root@192 wjy]# docker pull mysql #下载mysql
Using default tag: latest #没有指定默认下载最新
latest: Pulling from library/mysql
ffbb094f4f9e: Pull complete #分层下载,Docker image的核心 联合文件系统
df186527fc46: Pull complete
fa362a6aa7bd: Pull complete
5af7cb1a200e: Pull complete
949da226cc6d: Pull complete
bce007079ee9: Pull complete
eab9f076e5a3: Pull complete
8a57a7529e8d: Pull complete
b1ccc6ed6fc7: Pull complete
b4af75e64169: Pull complete
3aed6a9cd681: Pull complete
23390142f76f: Pull complete
Digest: sha256:ff9a288d1ecf4397967989b5d1ec269f7d9042a46fc8bc2c3ae35458c1a26727 #签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #真实地址
PS:(docker pull mysql == docker pull docker.io/library/mysql:latest)
指定版本下载
存在以上版本
docker pull mysql:5.7
- 删除镜像
docker rmi -f imageID #常用
docker rmi -f imageID1 imageID2 imageID3 #删除多个
docker rmi -f $(docker images -aq) #删除全部
2.3容器命令
说明:有了镜像才可以创建容器,下载一个centos镜像来进行学习
docker pull centos
- 新建容器并启动
docker run [-可选项] image
#参数说明
--name="容器名字"
-d 后台方式运行
-it 交互方式运行,进入容器查看内容
-p 指定容器的端口
-p 主机端口:容器端口
-p 容器端口
-P 随机指定端口
例:启动并进入容器
退出命令:exit
- 列出所有的运行的容器
docker ps
-a #列出当前正在运行的容器+带出历史运行过的容器
-n=? #显示最近创建的容器(个数)
-q #只显示编号
- 退出容器
exit #直接容器停止并退出
Ctrl+P+Q #不停止退出 (这种退出用ps可查看)
- 删除容器
docker rm 容器ID
docker rm -f $(docker ps -aq) #删除全部
docker ps -a -q | xargs docker rm
-f #强制删除
- 启动和停止容器的操作
docker start ID
docker restart ID
docker stop ID
docker kill ID
- 常用容器命令
(1)后台启动
docker run -d centos
#使用docker ps时发现没有启动,docker容器使用后台运行时,必须要有前台进程,如果发现没有前台应用,会自动停止
(2)日志查看
docker logs [-可选项]
docker logs -tf --tail 10 04a2b7cce655
--tail 10 #显示条数
-tf #显示全部信息
(3)查看容器中进程信息
docker top ID
(4)查看容器元数据(内部进程信息)
docker inspect ID
(5)进入当前正在运行的容器
通常容器都是后台方式运行的,当我们想修改配置时,需要进入容器
#方式1
docker exec -it ID /bin/bash #进入容器=打开新终端
#方式2
docker attach ID #进入容器=进入正在执行的终端
(6)从容器内拷贝文件到主机上
docker cp ID:/容器地址/文件名 /主机地址
#进入容器
[root@192 桌面]# docker attach eef0b7c52781
[root@eef0b7c52781 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
#进入某文件夹
[root@eef0b7c52781 /]# cd home/
[root@eef0b7c52781 home]# ls
#创建Java文件
[root@eef0b7c52781 home]# touch wjy.java
[root@eef0b7c52781 home]# ls
wjy.java
#退出
[root@eef0b7c52781 home]# exit
exit
#查看桌面
[root@192 桌面]# ll
总用量 0
[root@192 桌面]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eef0b7c52781 centos "/bin/bash" 4 minutes ago Exited (0) 30 seconds ago reverent_bose
[root@192 桌面]# pwd
/home/wjy/桌面
#拷贝文件到主机
[root@192 桌面]# docker cp eef0b7c52781:/home/wjy.java /home/wjy/桌面
[root@192 桌面]# ls
wjy.java
docker命令十分多,以上为常用的docker命令
学习来源:https://www.bilibili.com/video/BV1og4y1q7M4?p=1