将正在运行的容器设为自启动
# docker update --restart=always 容器名或容器ID docker update --restart=always <CONTAINER ID> # 例如将tomcat设为自启动 docker update --restart=always tomcat
将自启动的容器取消自启动
# docker update --restart=no 容器名或容器ID docker update --restart=no <CONTAINER ID> # 例如取消tomcat的自启动 docker update --restart=no tomcat
docker-compose命令通过指定文件运行
启动服务 docker-compose -f docker-compose.yml up -d 停止服务 docker-compose -f docker-compose.yml stop 停止并删除服务 docker-compose -f docker-compose.yml down
查看docker占用多少CPU、内存等资源
docker stats
停止、删除所有容器、镜像
docker ps -a -q # 查看所有容器ID docker stop $(docker ps -a -q) # stop停止所有容器
docker ps -a | grep Exited | awk '{print $1}' |xargs docker start #启动所有已停止的容器 docker rm $(docker ps -a -q) # remove删除所有容器
docker rmi $(docker images -q) #删除全部的images
docker rmi 1574f4d271db -f #强制删除镜像文件
docker system df命令,类似于Linux上的df命令,用于查看Docker的磁盘使用情况
docker system df
reclaimable可回收
这个命令将清理整个系统,并且只会保留真正在使用的镜像,容器,数据卷以及网络,因此需要格外谨慎
docker system prune -a -f
用以清理不再使用的docker镜像。执行docker image prune默认会清除"悬空"镜像【就是既没有标签名也没有容器引用的镜像】
docker image prune -a -f
docker inspect
查看容器映射等信息
https://blog.csdn.net/winy_lm/article/details/77980529 查看、删除容器
docker ps -a 查看所有容器
docker rm 删除容器
docker images 查看所有镜像
docker rmi 删除镜像
要先查看该image有无使用才能删除
进入一个容器
docker exec -ti archery /bin/bash
docker inspect 查看容器IP
docker cp test.txt container:/home/
# 将当前目录的test.txt文件复制到container容器的/home目录下
docker cp container:/home/test.txt /home/
# 将container容器内文件复制到宿主机
docker logs mytest -f --tail 30
查看mytest容器最近的30条日志
docker run -it -d -p 8082:8080 -v /usr/web/gaoxi-log:/opt/tomcat/gaoxi-log --network=host --restart=always --name gaoxi-user-1 chaimm/tomcat:1.1
--name:指定容器的名字
-p:指定容器的端口映射 -p 8082:8080 表示将容器的8080端口映射到宿主机的8082端口上 ,映射多个端口使用 -p 8082:8080 -p 8083:8081
-v:指定容器数据卷的映射 xxx:yyy 表示将容器yyy目录映射到宿主机的xxx目录上,从而访问宿主机的xxx目录就相当于访问容器的yyy目录。
chaimm/tomcat:1.1:表示容器所对应的镜像
docker run -it -v /home/java/logs/:/home/java/logs/ -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone --name=matchCenter --restart=always --network=host 镜像名 /etc/rc.local
docker exec -it -u 0 containerId bash
或者
docker exec -it -u root <container_id> /bin/bash
以root身份进入容器
docker run -d --name mysql -v /usr/local/mysql_conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql_data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
-v 挂载宿主机目录和 docker容器中的目录
-d 后台运行
-p 映射容器端口号和宿主机端口号
-e 环境参数
查看容器和宿主机的映射信息
docker inspect 容器名
docker导入导出镜像、容器
镜像
docker save -o /kibana.tar docker.elastic.co/kibana/kibana
docker load < /home/save.tar
容器
docker export <CONTAINER ID> > /home/export.tar
docker import - busybox-1-export:latest
https://www.jianshu.com/p/8408e06b7273
https://blog.csdn.net/guizaijianchic/article/details/78324646
docker 制作镜像
https://www.jianshu.com/p/cf7ccf362a5a
docker commit -m 'my_mysql' mysql8-1 my_mysql:v1.0
关于Docker目录挂载的总结
Docker容器启动的时候,如果要挂载宿主机的一个目录,可以用-v参数指定。
譬如我要启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定:
# docker run -it -v /test:/soft centos /bin/bash
这样在容器启动后,容器内会自动创建/soft的目录。通过这种方式,我们可以明确一点,即-v参数中,冒号":"前面的目录是宿主机目录,后面的目录是容器内目录。
进入容器并执行命令
docker exec myContainer bash -c "cd /home/myuser/myproject && git fetch ssh://gerrit_server:29418/myparent/myproject ${GERRIT_REFSPEC} && git checkout FETCH_HEAD";
卸载docker
yum install list|grep docker
yum remove docker-common.x86_64 -y
yum remove docker-client.x86_64 -y
查看image 镜像修改历史
docker image history --no-trunc +image ID