Docker初体验

安装docker

# 卸载旧的docker sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine# 安装yum,指定阿里的docker镜像源 sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 安装docker sudo yum install docker-ce docker-ce-cli containerd.io# 启动docker sudo systemctl start docker# 测试 sudo docker run hello-world

基本命令
docker version#查看版本 docker info#查看docker信息

镜像命令
docker images#查看镜像 docker images -a#查看全部镜像 docker images -q#查看镜像id

查找镜像
建议到 dockerhub上查找镜像
# docker search 镜像名 docker search mysql docker search mysql -f stars=3000 #根据条件过滤查找结果

拉取镜像
若需要指定版本镜像,到 dockerhub( https://registry.hub.docker.com/)查找
# docker pull 镜像名 docker pull mysql #默认拉取最新版本镜像 docker pull mysql:5.7 #拉取指定版本镜像

删除镜像
# docker rmi 镜像名/镜像id docker rmi mysql #可指定镜像名或者是镜像id docker rmi -f d1165f221234 d1165f221234 d1165f221234 #移除多个镜像 docker rmi -f $(docker images -aq) #递归删除所有镜像

容器命令
docker pull centos # 有了镜像才能创建容器,linux,下载一个centos镜像docker run [可选参数] images #创建容器并启动,在没有下载该镜像的时候docker会默认下载 # 参数说明 --name="Name"容器名字 tomcat01 tomcat02用来区分容器 -d后台方式运行 -it使用交互的方式运行,进入容器查看内容 -p指定让容器端口-p 8080:8080 -p ip:主机端口:容器端口 -p 主机端口:容器端口(主机) -p 容器端口 容器端口 -P随机指定端口# 测试,启动并进入容器 docker run -it centos /bin/bash #从容器交互中退回主机 exit

列出所有的容器
# docker ps 命令 # 列出当前正在运行的容器 -a# 列出当前正在运行的容器+历史运行过的容器 -n=?# 列出最近船舰的容器 -q# 只列出容器编号

退出容器
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 centos # 后台运行centos # 问题:docker ps 发现centos停止了 # 常见的坑,docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止 # nginx启动后,发现自己没有提供服务,就会立即停止,就是没有程序了

查看日志
docker logs -tf --tail 10 容器id # 查看当前容器的十条日志# 编写一段shell脚本输出日志 docker run -d centos /bin/bash -c "while true; do echo helloworld; sleep 1; done"# 显示日志 -tf# 显示日志 --tail number # 显示日志条数

查看容器中进程信息
# docker top 容器id [root@localhost /]# docker top f395bc735fb6 UIDPIDPPIDCSTIME root1261171260990Aug12 1011261681261170Aug12

查看镜像的元信息
# docker inspect 容器id docker inspect f395bc735fb6

进入一个正在运行的容器
# 命令 # docker exec -it 容器id bashShell # 进入容器后开启一个新的终端,可以在里面操作(常用) # docker attach 容器id # 进入容器正在执行的终端,不回启动新的进程

从容器拷贝文件到主机
# docker cp 容器id:容器内路径 目的地的主机路径 # 测试 docker cp d63481102d0f:/usr/share/nginx/html/index.html /home

    推荐阅读