简介
Building and deploying new applications is faster with containers.
Docker containers wrap up software and its dependencies into a standardized unit for software development that includes everything it needs to run: code, runtime, system tools and libraries. This guarantees that your application will always run the same and makes collaboration as simple as sharing a container image.
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
其实感觉上就是emmm
别人把整套环境都配置好打包好了,你直接拿过来用就好了!
反正用起来贼方便就是了。
感觉docker的图标就挺好看的(
安装
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
Windows下下载Docker Desktop
https://www.docker.com/products/docker-desktop
(要登陆)
换源
Linux下,编辑此文件,如果没有则新建。
sudo vim /etc/docker/daemon.json
Windows下文件为:
%programdata%\docker\config\daemon.json
USTC 中科大源(推荐!)
https://lug.ustc.edu.cn/wiki/mirrors/help/docker
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
Azure 中国镜像
{
"registry-mirrors": ["https://dockerhub.azk8s.cn"]
}
DaoCloud 源
https://www.daocloud.io/mirror
{
"registry-mirrors": ["http://f1361db2.m.daocloud.io"]
}
或者 直接执行这个就可以一键修改
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
163网易源
{
"registry-mirrors": [
"http://hub-mirror.c.163.com"
]
}
阿里源
要注册,略。
配置多个镜像
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://dockerhub.azk8s.cn/",
"http://hub-mirror.c.163.com"
]
}
注意遵循json
格式。
配置完之后重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker
检查加速器是否生效
docker info
有如下信息则配置成功。
Portainer
Portainer 是 Docker 的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。功能十分全面,基本能满足中小型单位对容器管理的全部需求。
部署
# 拉取镜像
docker pull portainer/portainer
# 一键部署
docker volume create portainer_data
docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
访问 http://127.0.0.1:9000 即可访问图形化面板。配置好用户名、密码后登录。
连接到Local,登录后的主界面如下。
通过远程访问
需要在防火墙放行9000端口。
Ubuntu:
sudo ufw allow 9000
CentOS:(其实也可以装个 ufw 的)
sudo firewall-cmd --zone=public --add-port=9000/tcp --permanent # 开放端口
sudo systemctl restart firewalld.service # 重启firewall
开机自启
docker update --restart=always portainer
其实在上面的一键部署命令中已经加了,这里不需要了。(记录一下而已)
常用命令
系统相关
查看系统信息
docker info
查看镜像、容器、数据卷所占用的空间
docker system df
容器相关
查看当前容器
docker ps -a
有-a
则显示所有的容器,包括启动的和未启动的。没有-a
的话则只显示运行着的。
创建&使用容器
docker run -it --name 容器名 镜像名/镜像ID /bin/bash
使用 -d
参数运行容器,可以让容器在后台运行而不把STDOUT输出到宿主机上。
(用docker logs [container ID or NAMES]
查看)
当 -i
-t
参数一起使用时,可以看到 Linux 命令提示符,如root@69d137adef7a:/#
。只有 -i
则没有命令提示符。
启动容器
docker start 容器名/容器ID
重启容器
docker restart 容器名/容器ID
终止容器
docker stop 容器名/容器ID
查看容器信息
docker container ls -a
容器统计信息
docker stats
启动已终止容器
docker container start
获取容器的输出信息
docker container logs [container ID or NAMES]
进入容器(连接容器)
docker exec -it 容器名/容器ID /bin/bash
从这个 stdin 中 exit,不会导致容器的停止。(推荐↑)
而下面这个,从这个 stdin 中 exit,会导致容器的停止。
docker attach 容器名/容器ID
删除容器
docker rm 容器名/容器ID
镜像相关
搜索镜像
docker search 关键词
下载镜像
docker pull 镜像名
镜像名:Tag
可以下载不同标签的镜像。
查看已下载镜像
docker images -a
# 或者 docker image ls
删除镜像
docker rmi [Image ID]
端口相关
端口映射
将docker内的80端口映射到宿主机的8000端口上
# 可以使用--name自定义部署的容器名
docker run -d -p 8000:80 --name 容器名 镜像名
# 也可以直接通过镜像部署
docker run -d -p 8000:80 镜像名
(别急,慢慢学好了啦……
拓展阅读
Docker从入门到实践 GitBook https://yeasy.gitbooks.io/docker_practice/content/
Docker-镜像常用命令 https://blog.csdn.net/y472360651/article/details/81289088
Docker温故知新 https://www.sqlsec.com/2019/10/docker2.html