菜鸟Docker教程
阮一峰的Docker教程
docker技术的应用确保了不同应用程序间,实现进程级别的隔离docker架构如下图所示。
容器是应用程序层的抽象,它将代码和依赖关系打包在一起。 多个容器可以在同一台计算机上运行,并与其他容器共享操作系统内核,每个容器都作为用户空间中的独立进程运行。 容器占用的空间少于虚拟机(容器图像的大小通常为几十MB)并且几乎立即启动。
虚拟机(VMs)是将一台服务器变成多台服务器的物理硬件的抽象。 管理程序允许多台虚拟机在单台机器上运行。 每个VM都包含一个操作系统的完整副本,一个或多个应用程序,必需的二进制文件和占用数十GB的库。
首先参照官网安装docker(最新版本:Docker version 19.03.8,)
How to install docker on Ubuntu 16.04
如果你打算制作或者使用涉及到cuda或者cuddn等与GPU相关的镜像或容器,你需要安装nvidia-docker,请按照repo里的步骤安装nvidia-docker:
How to install nvidia-docker on Ubuntu 16.04
问题1:
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# 查看可安装的包
apt-cache showpkg libcurl3-gnutls
# 安装:
sudo apt-get install libcurl3-gnutls=7.47.0-1ubuntu2
后续待更新……
# 验证安装是否成功
docker --version
docker-compose --version
# 启动docker
systemctl start docker
# 查看docker是否已经启动
ps -ef | grep docker
# 重启docker
systemctl restart docker
# 加入开机启动docker
systemctl enable docker
为了确保docker能快速加载应用程序镜像,配置镜像列表,指向国内的镜像地址。
修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值。(如果该文件不存在,需要新建该文件)
[root@aiserver ~]# vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
默认的docker需要sudo权限才能运行,为了让当前用户可以运行docker,需要把当前用户加到docker组里:
sudo groupadd docker
# 确认环境遍历$USER是否正确,如果不对需要设置正确或者执行下面的命令时把$USER替换成当前的用户名。
echo $USER
sudo usermod -aG docker $USER
列出已经下载的镜像
docker images
在Docker Hub(或阿里镜像)仓库中搜索关键字(如mysql)的镜像
docker search mysql
在docker 官网搜索需要下载的镜像及版本号docker hub官网
docker pull mysql
docker pull tomcat:8.5-alpine
docker images
docker rmi 91dadee7afee
docker build
# 查看帮助信息
docker COMMAND -help
# 查看运行中容器
docker ps
# 查看所有容器包括没有启动的
docker ps -a
普通启动:
docker run --name myTomcat -d tomcat:8.5-alpine
返回值是容器的ID
b3d1907c8c3d085ed3556ca89824d67e2459f6990a00cd78794e9f864d258500
- –name:自定义容器名,不指定时,docker 会自动生成一个名称
- -d:表示后台运行容器
- image-name:指定运行的镜像名称以及 Tag
端口映射启动:
docker run --name myTomcat -d -p 8090:8080 tomcat:8.5-alpine
使用命令:docker run --name container-name:tag -d -p 服务器端口:Docker 端口 image-name:tag
- –name:自定义容器名,不指定时,docker 会随机自动生成一个名称
- -d:表示后台运行容器,等同于-d=true, 容器将会在后台运行,否则退出后便是exit状态了。
- image-name:指定运行的镜像名称以及 Tag
- -p 指定服务器与 Docker 容器的端口映射,默认情况下容器中镜像占用的端口是 Docker 容器中的端口,且与外界是隔绝的,必须进行端口映射才能访问。
容器名为:mycentos2
# 进入容器
docker exec -it 容器id或容器名 /bin/bash
# 查看容器里面的进程
docker top 容器id
# 下载config命令插件
sudo apt-get install -y net-tools
# 退出容器
exit
容器名:myTomcat
# 查看安装docker安装信息
docker info
# 停止容器
docker stop 容器id
# 强制停止容器
docker kill 容器id
# 启动已经停止的容器
docker start 容器id
# 删除已经停止的容器
docker rm 容器id
# 删除正在运行的容器
docker rm -f 容器id
# 查看日志
docker logs myTomcat
# 查看容器日志
docker container logs 容器id或容器名
# 查看容器所有信息
docker inspect 容器id或者容器名
# 容器重命令
docker rename [original name] [new name]
将本地文件上传到容器
docker cp [local file path] [container id]:[container file path]
挂在本地目录到镜像
docker run -v [local folder path]:[container mounted path] --name [container name] -t -i [image ID | repository name] : TAG] /bin/bash