之前也学习过docker的基本使用但是都没有整理用法,所以学完也就忘了,用的时候现百度。
今天又用到docker索性整理下来以后需要直接拿来用就行。
先理清2个概念1、容器 2、镜像,总是很容易混淆,
镜像就是需要的软件版本,容器就是镜像启动后产生的空间
- 查看所有镜像
$ docker images
- 查看所有创建的容器
$ docker ps -a
- 查看正在运行的容器
$ docker ps
- 进入正在运行的容器
$ docker exec -it <容器的 CONTAINER ID 或者 容器 NAMES > /bin/bash # 例: $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ecda634206af jumpserver/guacamole:test "/init" 12 days ago Up 3 days 0.0.0.0:8081->8080/tcp jms_guacamole $ docker exec -it ecda634206af /bin/bash 或 docker exec -it jms_guacamole /bin/bash # 如果没有 /bin/bash 可以使用 /bin/sh 例: docker exec -it jms_koko /bin/sh
- 开始 停止 重启 容器
$ docker start <容器的 CONTAINER ID 或者 容器 NAMES > $ docker stop <容器的 CONTAINER ID 或者 容器 NAMES > $ docker restart <容器的 CONTAINER ID 或者 容器 NAMES > # 例: $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ecda634206af jumpserver/guacamole:test "/init" 12 days ago Up 3 days 0.0.0.0:8081->8080/tcp jms_guacamole $ docker start ecda634206af 或 docker start jms_guacamole $ docker stop ecda634206af 或 docker stop jms_guacamole $ docker restart ecda634206af 或 docker restart jms_guacamole
- 查看容器 log
$ docker logs -f <容器的 CONTAINER ID 或者 容器 NAMES > # 例: $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ecda634206af jumpserver/guacamole:test "/init" 12 days ago Up 3 days 0.0.0.0:8081->8080/tcp jms_guacamole $ docker logs -f ecda634206af 或 docker logs -f jms_guacamole
- 删除容器
$ docker rm <容器的 CONTAINER ID 或者 容器 NAMES > # 例: $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ecda634206af jumpserver/guacamole:test "/init" 12 days ago Up 3 days 0.0.0.0:8081->8080/tcp jms_guacamole $ docker rm ecda634206af 或 docker rm jms_guacamole
- 删除镜像
$ docker rmi <镜像的 CONTAINER ID> # 例: $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE jumpserver/guacamole test e0c2ec53a8fd 13 days ago 1.23GB $ docker rmi e0c2ec53a8fd
- 更新镜像
$ docker pull <镜像地址:版本> # 例: $ docker pull wojiushixiaobai/jms_all:latest $ docker pull wojiushixiaobai/jms_koko:1.5.6 $ docker pull wojiushixiaobai/jms_guacamole:1.5.6
docker image mysql:5.6 inspect 环境变量是看你的docker容器有没有需要这个环境变量
$ docker run --name mysql -d -p 127.0.0.1:8081:8080 -e JUMPSERVER_SERVER=http://$Server_IP:8080 -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN -v /home/mysql:/var/mysql --restart=always mysql:1.5.6 --name 指定容器的名称 -d, --detach=false 指定容器运行于前台还是后台,默认为false -p 指定映射的端口,:前面为目标端口,后面为容器的端口 -e, --env=[], 指定环境变量,容器中可以使用该环境变量 --restart=always 创建容器没有加导致的后果是:当 Docker 重启时,容器未能自动启动。 docker container update --restart=always 容器名字 -v, --volume=[] 给容器挂载存储卷,挂载到容器的某个目录 : 之前是宿主机目录,之后是容器需暴露的目录