Docker
Docker的基本组成
docker镜像就好比一个模板,可以通过这个模板来创建容器,eg:tomcat镜像==>run==>tomcat01容器
容器(container):
docker利用容器技术,独立运行一个或一组应用,通过镜像的方式创建
启动,停止,删除,基本命令
仓库(repository):
仓库就是存放镜像的地方
仓库分为共有仓库和私有仓库
Docker安装
安装流程
#1.删除已有docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
#2.下载需要的安装包
yum install -y yum-utils
#3.设置镜像的仓库
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-nightly
#4.docker安装
yum install docker-ce docker-ce-cli containerd.io
#5.启动docker
systemctl start docker
#开机自启
systemctl enable docker
#6.查看docker是否安装成功
docker version
#7.hello docker
docker run hello-world
#8.查看镜像
docker images
# 结果
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d1165f221234 5 months ago 13.3kB
#docker的卸载
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
Docker配置阿里云加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://036bdzy5.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker的常用命令
帮助命令
docker version
镜像命令
# 本地镜像操作
docker images --help
docker images -a
# 仓库 标签 镜像id 创建时间 镜像大小
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d1165f221234 5 months ago 13.3kB
docker images -f
# label:这个是根据标签进行过滤,其中lable的值,是docker在编译的时候配置的或者在Dockerfile中配置的
docker images -f "dangling=true" #dangling:显示标记为空的镜像,值只有true和false
docker images -f 'before=mysql' # 表示某个镜像构建时间之前的镜像列表
docker images -f 'since=mysql' # 表示的是在某个镜像构建之后构建的镜像
docker images -f 'reference=hello*' # reference:这个是添加正则进行匹配
# docker-hub仓库镜像操作
docker search --help
docker search mysql
docker search mysql -f=stars=1000 # 查询收藏数在1000以上的镜像
# 拉取镜像,docker镜像是分层存储的,每一层都可以被不同镜像使用
docker pull --help
docker pull mysql # 默认取最新的版本
docker pull mysql:5 # 指定版本
# 删除镜像
docker rmi --help
docker rmi mysql # 根据 REPOSITORY 来删除镜像
docker rmi mysql:v1 # 根据 REPOSITORY:TAG 来删除镜像
docker rmi 1e1148e4cc2c # 根据 IMAGE ID 来删除镜像,同时会删除所有该镜像的TAG镜像
docker rmi $(docker images -f 'reference=mysql*' -q)
docker命令
说明:有了镜像才可以创建容器,下面利用linux的centos测试
docker pull centos
新建容器
docker run [可选参数] image
# 参数说明
--name="Name" 容器名字 tomcat01 tomcat02 用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
随机端口
docker run -it --name="test" centos /bin/bash # 测试,启动并进入到容器
# ls 查看容器的centos,基础版本,很多命令是不完善的
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
查看容器
docker ps # 查看正在运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
docker ps -a # 查看所有的容器
docker ps -n=? # 显示n个容器的
docker ps -aq # 只显示containerid
退出容器并删除
exit # 从容器中退回主机
ctrl + P + Q # 容器不停止退出
docker rm 容器id # 删除指定容器,不能删除正在运行的容器
docker rm -f ${docker ps -aq} # 删除所有容器
docker ps -a -q|xargs docker rm # 删除所有容器
启动、停止等操作
docker start 容器id # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止容器
docker kill 容器id # 强制停止容器
日志命令
# 命令docker run -d 镜像名/镜像id ,docker使用后台运行,必须有一个前台进程,没有则会自动停止
docker run -d centos /bin/bash -c "while true;do echo zhanghao; sleep 5;done"
#查看日志
docker logs -tf --tail 10 4f5c654e3e38
docker logs -tf -n 10 test
进程命令
docker top test
# 该命令用于检查容器或镜像的详细信息
docker inspect test