[安装]
$ sudo yum install -y yum-utils
//阿里云镜像
$ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
$ sudo yum makecache fast
$ sudo yum install docker-ce docker-ce-cli containerd.io
[启动]
$ sudo systemctl start docker
$ sudo docker version
$ sudo docker run hello-world
$ sudo docker images //查看镜像
[卸载]
$ sudo yum remove docker-ce docker-ce-cli containerd.io
$ sudo rm -rf /var/lib/docker
$ sudo rm -rf /var/lib/containerd
[搜索镜像]
docker search 镜像名
docker search 镜像名 --filter STARS=3000
[下载镜像]
docker pull 镜像名:tag
[删除镜像]
docker rmi -f 镜像id 镜像id 镜像id ...
docker rmi -f $(docker images -aq)
[利用镜像启动一个容器]
docker run [可选参数] images
docker run -it centos /bin/bash 启动并进入容器
docker ps -aq
ctrl +p +q 不停止容器并退出
[删除容器]
docker rm 容器id
docker rm -f 容器id // -f 强制删除。比如该容器正在运行
docker rm -f $(docker ps -aq)
[后台启动]
docker run -d
[停止容器]
docker stop id
docker kill id
docker stop $(docker ps -aq)
[重启容器]
docker restart id
[日志]
docker logs -f -t --tail 10 facd55b6f260
[容器内进程]
docker top 容器id
[查看容器元数据]
docker inspect facd55b6f260
[进入正在运行的容器]
docker exec -it facd55b6f260 /bin/bash //开启新终端
docker attach facd55b6f260 //进入容器正在执行的终端
[从容器内拷贝文件]
docker cp 容器id:容器内路径 目的地
docker cp facd55b6f260:/root/aaa.txt /root/bbb.txt
[安装nginx]
docker run -d --name nginx01 -p 8000:80 nginx
curl localhost:8000
[安装tomcat]
docker pull tomcat
docker run -it --name tomcat01 -p 8000:8080 tomcat
docker run -it --rm tomcat:9.0 //用完就删除
[查看进程]
docker stats [可选参数:容器id]
[可视化面板 portainer]
docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
[commit]
docker commit -m='提交的描述信息' -a='作者' 容器ID 目标镜像名:[tag]
-------------------------------------------------------------
[挂载卷]
docker run -it -p 8000:8080 -v /home/tomcat/public_html:/usr/local/tomcat/webapps tomcat:9.0 /bin/bash
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
docker run -d -P --name nginx02 -v juming-volume:/etc/nginx nginx
-P 随机指定端口
匿名挂载 -v 容器内路径
具名挂载 -v 卷名:容器内路径
指定路径挂载 -v 宿主机路径:容器内路径
docker run -d -P --name nginx02 -v juming-volume:/etc/nginx:ro nginx //ro readonly 只能从宿主机改变
docker run -d -P --name nginx02 -v juming-volume:/etc/nginx:rw nginx //rw readwrite
[Dockfile]
//下面的内容写入文件dockerfile1
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "-----end-----"
CMD /bin/bash
//共享挂载
docker build -f dockerfile1 -t lzh-centos .
docker run -it --name docker02 --volumes-from docker01 lzh-centos:1.0
docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-from mysql01 mysql:5.7
容器间配置信息的传递,数据容器的生命周期一直持续到没有容器使用为止。
但是一旦持久化到了本地,本地的数据是不会被删除的
Docker File步骤
1.编写Dockerfile
2.docker build 构建成一个镜像
3.docker run 运行镜像
4.docker push 发布
[DockerFile 命令]

1. 所有指令必须是大写字母
2.从上到下,顺序执行
3.#号表示注释
4.每一个指定都会创建提交一个镜像层
docker build -f myos -t myos:1.0 .
------------------------------------------
vi myos-test-cmd
FROM centos
CMD ["ls","-a"]
[push]
docker login -u username
docker logout
docker push username/imagename:ver
docker push lerx/webpam:1.0
docker tag id lerx/imagename:ver
docker tag 74erj83ud8 lerx/myos:1.0
[自定义网络 | 容器互联]
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
------------------------------------------------
docker run -it -d -p 8801:8080 -v /data/docker/tomcat/lerx/logs:/usr/local/tomcat/logs -v /data/docker/tomcat/lerx/webapps:/usr/local/tomcat/webapps --net mynet --name tomcat-lerx tomcat:9.0.55
--------
docker run --name mysql5736 -v /data/docker/mysql/conf:/etc/mysql/conf.d -v /data/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mypwd --net mynet -p 13306:3306 -d mysql:5.7.36
docker exec -it a42c17f8ce3e /bin/bash
--------------------------
在Docker中没有yum,没有wegt怎么安装软件?
在Docker中安装mysql 数据库后 想要ssh到输入库,但是没有yum命令 没有wegt命令无法安装ssh,可以尝试以下方法:
apt-get update 更新库
apt-get install net-tools
apt-get install vim
apt-get install openssh-server
apt-get install openssl
apt update && apt install -y iproute2 //ip addr
apt-get install iputils-ping //ping
Missing privilege separation directory: /run/sshd 出现这种情况创建文件夹
/usr/sbin# mkdir /run/sshd
/usr/sbin# /usr/sbin/sshd
【自动重启容器】
docker run -d --restart unless-stopped 容器名字
已经在运行的加入重启参数
docker container update --restart=always 6d38fcaac714
查看最后启动时间
docker inspect -f "{{ .RestartCount }}" 6d38fcaac714
https://blog.csdn.net/xiaokaiv587/article/details/124208337
查询容器的日志在宿主机的位置
docker inspect --format='{{.LogPath}}' f7ff1da87ec1
查看容器的进程pid
docker inspect -f '{{.State.Pid}}' 5e5a81aa0a29
记录一个进行优化了的运行命令
docker run -it -d --restart unless-stopped -e JAVA_OPTS='-Xmx304m -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true -Dcatalina.connector.useIPVHosts=false -Dcatalina.connector.RECYCLE_FACADES=true -Dcatalina.connector.CACHE_MAX_SIZE=204800' -p 8002:8080 -v /data/docker/tomcat/jyzyy/logs:/usr/local/tomcat/logs -v /data/docker/conf/tomcat/conf:/usr/local/tomcat/conf -v /data/docker/tomcat/jyzyy/webapps:/usr/local/tomcat/webapps -v /etc/localtime:/etc/localtime -e TZ=Asia/Shanghai --net mynet --name cms-jyzyy --add-host=www.tzsjyzyy.com:192.168.0.1 tomcat-lerx:1.0
【故障查询解决】
1.shell登录
2.查询docker容器
docker ps
若无上述界面,则说明docker服务可能未启动。ps -ef|grep docker 查看是否已启动,出现下面的提示或其它错误,则说明docker未启动,则systelctl start docker.service
[root@VM-0-9-centos ~]# docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
若有,则查看目录docker容器是否在正常运行。上图中,后面的name是容器别名。
若无,刚 docker start 容器名
可以用 docker ps -aq 列出所有容器,和上图比较一下,上图没有的则是未正常启动或已停止的容器。