- 安装
- 官方安装文档
- 具体安装步骤
- 1.卸载之前的版本(如果之前未用过忽略该步骤)
- 2.安装相关依赖
- 3.设置docker镜像
- 4.安装docker
- 安装latest版本
- 指定版本安装
- 5.启动docker
- 6.查看docker版本
- 7.运行一个docker hello world
- 8.卸载docker
- 9.配置阿里云镜像加速地址
- docker常用命令
- docker仓库搜索
- 基础命令
- docker版本信息
- docker系统信息
- 镜像命令
- 查看本地主机上所有镜像
- 搜索镜像
- 下载镜像
- 删除镜像
- 批量删除镜像
- 容器命令
- 下载centos进行测试
- 下载
- 启动
- 查看正在运行的docker
- 退出容器
- 删除容器
- 启动和停止
- 常用其他命令
- 查看日志
- 滚动查看日志,并且打印时间
- 查看容器内部进程信息
- 查看docker原信息
- 进入当前运行的容器
- 文件从容器内copy到主机上(手动命令行copy)
- 可视化 Portainer
- 安装
- 具体使用参考文章
- Commit镜像
- 运行一个centos
- 做一些修改 *** 作
- 退出容器
- 提交
- 数据卷使用
- 方式一:直接使用命令挂 -v
- 实战:Mysql数据卷挂载
- 方式二:具名挂载、匿名挂载
- 匿名挂载
- 具名挂载
- 指定目录、具名、匿名三者区别
- volume 容器内卷信息查看
- volume ls 查看所有卷
- volume inspect $VOLUM_NAME 查看卷信息
- 扩展:指定容器内目录权限
地址:https://docs.docker.com/engine/install/centos/
这里使用Linux安装
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine2.安装相关依赖
yum install -y yum-utils3.设置docker镜像
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
阿里云
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo4.安装docker 安装latest版本
yum install -y docker-ce docker-ce-cli containerd.io
这里会默认安装latest版本。
指定版本安装- 查看版本
> yum list docker-ce --showduplicates | sort -r docker-ce.x86_64 3:20.10.9-3.el7 docker-ce-stable docker-ce.x86_64 3:20.10.9-3.el7 @docker-ce-stable docker-ce.x86_64 3:20.10.8-3.el7 docker-ce-stable docker-ce.x86_64 3:20.10.7-3.el7 docker-ce-stable docker-ce.x86_64 3:20.10.6-3.el7 docker-ce-stable docker-ce.x86_64 3:20.10.5-3.el7 docker-ce-stable docker-ce.x86_64 3:20.10.4-3.el7 docker-ce-stable docker-ce.x86_64 3:20.10.3-3.el7 docker-ce-stable ...
- 指定版本安装
sudo yum install docker-ce-docker-ce-cli- containerd.io
example:
docker-ce-18.09.15.启动docker
systemctl start docker6.查看docker版本
> docker version Client: Docker Engine - Community Version: 20.10.9 API version: 1.41 Go version: go1.16.8 Git commit: c2ea9bc Built: Mon Oct 4 16:08:14 2021 OS/Arch: linux/amd64 Context: default Experimental: true Server: Docker Engine - Community Engine: Version: 20.10.9 API version: 1.41 (minimum version 1.12) Go version: go1.16.8 Git commit: 79ea9d3 Built: Mon Oct 4 16:06:37 2021 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.4.11 GitCommit: 5b46e404f6b9f661a205e28d59c982d3634148f8 runc: Version: 1.0.2 GitCommit: v1.0.2-0-g52b36a2 docker-init: Version: 0.19.0 GitCommit: de40ad07.运行一个docker hello world
docker run hello-world8.卸载docker
yum remove docker-ce docker-ce-cli containerd.io rm -rf /var/lib/docker rm -rf /var/lib/containerd9.配置阿里云镜像加速地址
登录阿里云->点击容器镜像服务
点击镜像加速
服务器配置,重启生效
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://${自己的id}.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart dockerdocker常用命令 docker仓库搜索
https://hub.docker.com/search?q=&type=image
基础命令 docker版本信息docker versiondocker系统信息
docker info镜像命令 查看本地主机上所有镜像
[root@test11 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest feb5d9fea6a5 3 weeks ago 13.3kB redis latest 621ceef7494a 9 months ago 104MB # 说明 REPOSITORY 镜像的仓库源 TAG 镜像的标签 IMAGE ID 镜像的id CREATED 镜像创建的时间 SIZE 镜像的大小 # 其他指令 Options: -a, --all 列出所有镜像 -q, --quiet 只显示镜像id搜索镜像
[root@test11 ~]# docker search mysql NAME DEscriptION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 11551 [OK] mariadb MariaDB Server is a high performing open sou… 4398 [OK]下载镜像
docker pull 镜像名[:TAG]
[root@test11 ~]# docker pull mysql Using default tag: latest latest: Pulling from library/mysql b380bbd43752: Pull complete f23cbf2ecc5d: Pull complete 30cfc6c29c0a: Pull complete b38609286cbe: Pull complete 8211d9e66cd6: Pull complete 2313f9eeca4a: Pull complete 7eb487d00da0: Pull complete 4d7421c8152e: Pull complete 77f3d8811a28: Pull complete cce755338cba: Pull complete 69b753046b9f: Pull complete b2e64b0ab53c: Pull complete Digest: sha256:6d7d4524463fe6e2b893ffc2b89543c81dec7ef82fb2020a1b27606666464d87 Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latest
docker pull mysql 与 docker pull docker.io/library/mysql:latest 相同
- 指定版本下载
docker pull mysql:5.7删除镜像
docker rmi -f IMAGEID|镜像名称 #空格可以删除多个镜像批量删除镜像
docker rmi -f ${docker images -qa}容器命令 下载centos进行测试 下载
[root@test11 ~]# docker pull centos Using default tag: latest latest: Pulling from library/centos a1d0c7532777: Pull complete Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177 Status: Downloaded newer image for centos:latest docker.io/library/centos:latest启动
docker run [可选参数] iamge # 参数说明 --name="Name01" 容器名称 app01 app02,用来区分启动的容器 -d 后台方式运行 -it 使用交互方式运行,进入容器查看内容 -p 指定容器的端口 -p 主机端口:容器端口 (常用) -p 容器端口 -P # 启动并进入centos docker run -it 5d0da3dc9764 /bin/bash 或 docker run -it centos /bin/bash #退出容器 exit查看正在运行的docker
docker ps -a 查看历史运行过的docker -n=? 显示最近的容器数量 -q 只显示容器的编号退出容器
exit 退出并停止程序 ctrl + P + Q 容器不停止退出删除容器
docker rm -f 容器id docker rm -f ${docker ps -qa} # -f 可以删除在运行的容器,不使用-f只能删除未在运行的容器启动和停止
docker start 容器id # 启动 docker stop 容器id # 停止 docker restart 容器id # 重启 docker kill 容器id # 强制停止常用其他命令 查看日志
# docker logs --help Usage: docker logs [OPTIONS] ConTAINER Fetch the logs of a container Options: --details Show extra details provided to logs -f, --follow Follow log output --since string Show logs since timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes) --tail string Number of lines to show from the end of the logs (default "all") -t, --timestamps Show timestamps --until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)滚动查看日志,并且打印时间
> docker logs -f --tail 10 -t ${容器id}查看容器内部进程信息
docker top 容器ID查看docker原信息
docker inspect 容器id进入当前运行的容器
方法1(常用)
docker exec -it 容器id /bin/bash # 进入容器后开启一个新的终端
方法2
docker attach 容器id # 进入当前正在执行的终端文件从容器内copy到主机上(手动命令行copy)
docker cp 容器id:容器内路径 目的主机路径可视化 Portainer 安装
docker run -d -p 9000:9000 -v /root/portainer:/data -v /var/run/docker.sock:/var/run/docker.sock --name portainer portainer/portainer具体使用参考文章
点击这里
Commit镜像主要作用是将自己修改过的一些配置、文件等,提交成一个自己的镜像,类似于快照的功能。供自己后续使用。
这里用docker centos进行测试,我们再centos中加一些文件,然后commit成一个新的镜像。
运行一个centosdocker run -it centos /bin/bash做一些修改 *** 作
# 默认没有安装vim [root@f383457af325 /]# vim bash: vim: command not found # 我们安装下vim [root@f383457af325 /]# yum install vim # 再新增一个文件 [root@f383457af325 ~]# echo '123' > commit-test.txt退出容器
ctrl + p + q提交
语法 docker commit [OPTIONS] ConTAINERID [REPOSITORY[:TAG]] OPTIONS说明: -a :提交的镜像作者; -c :使用Dockerfile指令来创建镜像; -m :提交时的说明文字; -p :在commit时,将容器暂停。
[root@test11 ~]# docker commit -a "jast" -m "测试commit" f383457af325 test:v1.0.0 sha256:43f512a896d965ad26f9defb9194b1ce87489d2090f2f72e7ed7f4caef1ae908
commit后查看下提交后的image,此时镜像就提交成功。
[root@test11 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE test v1.0.0 43f512a896d9 29 seconds ago 304MB
启动commit后的镜像进行验证镜像是否为我们提交时的状态
# 运行我们commit的images [root@test11 ~]# docker run -it 43f512a896d9 /bin/bash [root@588a36c75d1e /]# cd # 查看我们保存的文件,发现文件与内容都相同 [root@588a36c75d1e ~]# ls anaconda-ks.cfg anaconda-post.log commit-test.txt original-ks.cfg [root@588a36c75d1e ~]# cat commit-test.txt 123
文件内容都为之前我们保存的内容,说明我们commit生效
数据卷使用将容器内的目录挂在到Linux,例将容器内的数据库数据存储目录放在Linux中,而不是容器中。
方式一:直接使用命令挂 -vdocker run -it -v 主机目录:容器内目录 [-v 主机目录:容器内目录]
1.主机目录不存在则会自动创建
2.修改是双向的,即双向绑定/同步的概念,在linux中直接修改主机目录下的文件,容器内也会同步修改。即便是容器停止,我们再Linux中修改文件,容器再次启动容器内也会修改。
查看容器挂载信息 Mounts
docker inspect 0b1f6a469354 ... "Mounts": [ { "Type": "bind", "Source": "/home/testtest", "Destination": "/home", "Mode": "", "RW": true, "Propagation": "rprivate" } ], ...实战:Mysql数据卷挂载
[root@test11 ~]# docker run -d -p 3333:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7 83f08abd501cf0ae1bdc6adec5f4e3fc247abd081eb9ae0ec1d04d6b370828e8
- 挂载配置文件目录 -v /home/mysql/conf:/etc/mysql/conf.d
- 挂载数据目录 -v /home/mysql/data:/var/lib/mysql
- 指定密码 -e MYSQL_ROOT_PASSWORD=123456
- 执行容器名称 --name mysql01
服务器中测试连接
查看Linux挂载的目录,初始化的数据都存在
[root@test11 data]# ls auto.cnf client-cert.pem ibdata1 ibtmp1 private_key.pem server-key.pem ca-key.pem client-key.pem ib_logfile0 mysql public_key.pem sys ca.pem ib_buffer_pool ib_logfile1 performance_schema server-cert.pem [root@test11 data]# pwd /opt/docker/mysql/data
在mysql中创建数据库test_001,查看linux目录也同时存在,说明数据卷挂载成功
[root@test11 data]# ls auto.cnf client-cert.pem ibdata1 ibtmp1 private_key.pem server-key.pem ca-key.pem client-key.pem ib_logfile0 mysql public_key.pem sys ca.pem ib_buffer_pool ib_logfile1 performance_schema server-cert.pem test_001方式二:具名挂载、匿名挂载 匿名挂载
-v 容器内路径 docker run -d -P --name nginx01 -v /etc/nginx nginx具名挂载
-v 名称:容器内路径 docker run -d -P --name nginx02 -v jmgz:/etc/nginx nginx指定目录、具名、匿名三者区别
-v 容器内路径 # 匿名挂载 -v 卷名:容器内路径 # 具名挂载 -v /Linux路径:容器内路径 # 指定路径挂载(使用volume查看不到) docker run -d -P --name nginx02 -v /home/nginx:/etc/nginx nginx docker run -d -P --name nginx02 -v jmgz:/etc/nginx nginx docker run -d -P --name nginx02 -v /etc/nginx nginx
volume 容器内卷信息查看 volume ls 查看所有卷指定目录以/开头
具名为名称开头
匿名只有一个容器内部的目录
[root@test11 volumes]# docker volume ls DRIVER VOLUME NAME local 9c5d88889544e28e1268853fd91705401b29a80394bae71ebe1243d66d9f9243 local 325c6c6fcb0079b2ef18c573d3e76bf0186b8fdd610269f19f2e83ccfe53d7c8 local b24d3abe53938a464810c298f9c02117c686d7fc06c4917932fd69f7e9ded284 local b35cf901596e7bec2dd6244a28873a3b885fc6e4b429e8e27af9629e74884abe local jmgzvolume inspect $VOLUM_NAME 查看卷信息
[root@test11 volumes]# docker volume inspect jmgz [ { "CreatedAt": "2021-10-21T11:30:13+08:00", "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/jmgz/_data", "Name": "jmgz", "Options": null, "Scope": "local" } ]扩展:指定容器内目录权限
# -v 容器内路径:ro rw 改变读写权限 ro readonly # 只读 rw readwrite # 读写 docker run -d -P --name nginx02 -v jmgz:/etc/nginx:ro nginx docker run -d -P --name nginx02 -v jmgz:/etc/nginx:rw nginx # ro 设置之后容器对容器内的文件只有读的权限,需要修改只能通过Linux中进行 *** 作
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)