Docker基础使用
目录
传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
参考链接:https://yeasy.gitbook.io/docker_practice/、https://wudaijun.com/2016/11/docker-basic/#more
使用前配置
无需sudo运行docker
sudo usermod -aG docker ${USER}
su - ${USER}
docker换源
sudo vim /etc/docker/daemon.json
写入:
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
然后重启docker服务即可
基本命令(参考链接)
docker启动相关
启动 systemctl start docker
自启动 systemctl enable docker
守护进程重启 systemctl daemon-reload
重启docker服务 systemctl restart docker
重启docker服务 service docker restart
关闭docker service docker stop
关闭docker systemctl stop docker
镜像相关
- 查找镜像
docker search [ 条件 ]
# 例如查询三颗星及以上名字包含alpine的镜像
docker search -f=stars=3 alpine
- 获取镜像
docker pull [ 仓库 ]:[ tag ]
仓库格式为 [仓库url]/[用户名]/[应用名] , 除了官方仓库外的第三方仓库要指定 url, 用户名就是在对应仓库下建立的账户, 一般只有应用名的仓库代表 官方镜像, 如 ubuntu、tomcat 等, 而 tag 表示镜像的版本号, 不指定时默认为 latest
# 获取alpine Linux 的镜像
docker pull alpine
- 删除本地镜像
docker rmi [ 镜像名 or 镜像 id ]
- 上传镜像
//登录账号
docker login
docker tag "imgID" aidenpearce/imageName:version
docker push aidenpearce/imageName:version
官方仓库很慢,可用阿里云仓库
容器相关
-
创建、启动容器并执行相应的命令
docker run [ 参数 ] [ 镜像名 or 镜像 id ] [ 命令 ] docker run -itd --name [自定义名称] -v [/home/config:/etc/config] -p 80:80 [容器名称] docker exec -it [容器] bash -
查看运行中的容器
docker ps docker ps -a 选项可查看所有的容器 -
开启/停止/重启容器
# 关闭容器(发送SIGTERM信号,做一些'退出前工作',再发送SIGKILL信号) docker stop anyesu-container # 强制关闭容器(默认发送SIGKILL信号, 加-s参数可以发送其他信号) docker kill anyesu-container # 启动容器 docker start anyesu-container # 重启容器 docker restart anyesu-container -
删除容器
docker rm [ 容器名 or 容器 id ] #删除已停止运行的容器 可以指定多个容器一起删除, 加 -f 选项可强制删除正在运行的容器 -
查看容器中正在运行的进程
docker top [ 容器名 or 容器 id ] -
显示容器硬件资源使用情况
docker stats [ 选项 ] [ 0个或多个正在运行容器 ] -
主机与容器之间拷贝文件
docker cp container_name_or_id:/etc/config /home/file
构建镜像
-
从Dockerfile构建镜像:docker build
docker build -t [ 镜像名 ]:[ tag ] -f [ DockerFile 名 ] [ DockerFile 所在目录 ] -
从容器构建镜像:docker commit
docker commit [容器] [镜像名称:版本]
目录挂载
无论宿主机还是容器中的挂载目录是否存在,docker可以自己主动创建出多级目录
-v /home/ubuntu/a/b/c:/root/x/y/z
docker网关
docker0 172.17.0.1