Docker 基本命令
docker服务端是一个服务进程,管理所有容器
docker客户端是服务端的远程控制器,用来控制docker的服务进程
宿主机下载镜像
镜像相关命令
docker search mysql #下载镜像前可以使用 docker search 命令搜索官方共享仓库
docker pull jenkins/inbound-agent #找到想要的镜像,下载
#Digest: sha256:ef3d5dee8a70409083ff64782af1fdb86ceea6907ef8b81ee1e63def5707522c
#Status: Downloaded newer image for jenkins/inbound-agent:latest
#docker.io/jenkins/inbound-agent:latest
docker save -o inbound-agent.tar.gz jenkins/inbound-agent:latest #镜像保存为离线文件
docker tag 旧镜像 新名称:新标签 #为镜像添加标签
docker tag bdde0a469c0b jenkins-slave-latest:v2 #对镜像修改标签
docker images #查看下载到本地的所有镜像
docker rmi 镜像名:标签 #删除镜像
docker load -i jenkins-slave-latest.tar.gz #加载离线镜像至docker镜像
随着本地存出的镜像越来越多,就需要指定专门的仓库存放镜像,默认是上传到Docker Hub
使用docker login 输入用户名密码邮箱完成注册和登录,在上传镜像前还要对本地镜像打标签,然后在docker push 命令进行上传
docker push 仓库名称:标签 #命令格式
启动mysql容器
docker run -itd --name mysql-test -p 127.0.0.1:3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql #安装mysql
# -p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口
#外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
#MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。
-p 宿主机端口:容器端口
登录容器内mysql
mysql -h localhost -uroot -p #本机进入容器内数据库
docker exec -it mysql bash #进入容器
mysql -uroot -p #登录数据库
启动基础容器
docker pull centos:6 #拉取centos6镜像
docker create -it 镜像 /bin/bash #创建新容器
docker run --name alvin -it centos:7 /bin/bash #创建容器并命名和启动
docker rename old_name new_name #容器改名
注意:容器只有创建的时候没有做端口映射之类操作,只有把该容器作为镜像,在开启另一个新的容器使用之前的镜像
针对容器的相关命令
启动停止删除容器
docker ps -a #查看当前所有容器
docker start Alvin(容器名) #启动容器
docker exec -it alvin /bin/bash #进入容器,alvin是容器名称
docker stop Alvina(容器名) #关闭容器
docker rm alvin:标签 #删除容器
docker rm $(docker ps -a -q) #删除所有容器
docker stop $(docker ps -a -q) #停止所有容器
docker update --restart=always 容器名字 #容器自启动
容器的导入导出
不论容器是否在运行,均可导出成文件,传输文件到其他机器,然后使用,实现容器的迁移
docker export 容器ID(或者名称) > 文件名 #导出命令格式
cat 文件名 | docker import -生成的镜像名称:标签 #导入命令格式
docker images | grep 生成的镜像名称 #查看是否存在镜像
资源控制
Cgroup:Linux限制所使用物理资源的机制,包括CPU MEM blkio
docker run --cpu-quota 20000 容器名 #限制CPU使用率,CPU使用率限制在20%(CPU百分比以1000为单位)
docker run -m 512 容器名 #限制MEM使用率,限制容器的内存为512M
注意:一旦容器Cgroup使用的内存超过了限制的容量,Linux内核会尝试收回这些内存,如果仍旧无法控制内存在使用率以内,进程会被杀死
图形化管理docker:
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer #创建portainer
访问你的 IP:9000 即可进入容器管理页面
可视化化管理docker:
$ docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock -v ~/.config/lazydocker:/.config/jesseduffield/lazydocker lazyteam/lazydocker
容器内安装软件
首先需要确认当前容器是什么系统
docker ps -a #查看你要登录的容器的解释器是啥
docker exec -it -u root dda09517cd46 /bin/bash #指定用户root,进入容器
cat /etc/os-release #查看操作系统
centos/redhat软件安装
yum install -y 软件名 #centos/redhat
Alpine软件安装
apk update #软件更新
apk add 软件名 #Alpine
Debian软件安装
包含 Debian,Ubuntu,Deepin,Raspbian 等发行版本
apt update -y #更新软件列表
apt-get 软件名 #ubuntu
apt search 关键字 #搜索软件
apt show 软件包名 #显示软件包详情
apt install 软件包名 #安装软件
apt remove 软件包名 #卸载软件
apt remove 软件包名 --purge #卸载软件并删除配置文件
apt autoremove 软件包名 #卸载软件并移除软件依赖