docker pull 镜像名
docker pull hello-world
镜像导入(要在hello-world.tar.gz 文件所在目录下执行)
docker load < hello-world.tar.gz
docker image rm hello-world
docker images
镜像导出(linux系统中的镜像文件下载到本地-例如window),导出后给他人使用
docker save hello-world | gzip > hello-world.tar.gz
基于镜像,启动容器运行。
docker run hello-world
容器是在镜像上使用的,要先得有镜像文件,才能启动!!,详细操作看镜像篇
docker ps -a (all的简写)
命令:docker run -it xxxx bash
1)xxxx - 镜像名, 或 image id 的前几位,
2)-it 这是两个参数(-i表示交互式操作, -t 表示终端)
3) bash 表示进入操作终端,基于交互式进行相关操作(例如执行linux相关指令)。
docker run -it centos:7 bash
docker exec -it 802 bash #802为容器id
exit
docker container stop 802 #802为容器自己的id
docker container restart 802 #802位容器自己的id
docker (container) rm -f(强制删除) 9a1(容器的id)
docker container prune
在容器中管理数据主要有两种方式:
数据卷(Volumes)
挂载主机目录 (Bind mounts)
docker volume create container-vol
docker volume ls
docker volume inspect container-vol
docker run -it --mount source=container-vol,target=/root centos:7 bash
或
docker run -it -v container-vol:/root centos:7 bash
说明:
-v container-vol:/root 把数据卷 container-vol 挂载到容器的 /root 目录
docker volume rm container-vol
docker volume prune
docker run -it -v /usr/app:/opt/app centos:7 bash
说明:
1)/usr/app:为宿主机目录
2)/opt/app: 为启动容器的一个目录
3)-v 用于指定挂载目录,如果本地目录(宿主机目录)不存在, Docker 会自动为你按照挂载目录进行目录的创建。
docker inspect 91a #91a 为容器id
挂载在主机目录:
优点:目录由用户自己管理,比较灵活
缺点:写入数据可能需要权限(假如用户没有给目录权限),需要重新赋权且目录的安全性比较低。
挂载在docker容器:
优点:由容器管理,即使容器坏掉也对文件没有影响,且写入数据的目录比较深,相对挂载在主机目录较安全。
/root/setup/jdk 并将“jdk-8u51-linux-x64.tar.gz”文件拷贝到改目录下
/root/setup/jdk/Dockerfile ,并复制一下代码到文件中
FROM centos:7
ADD jdk-8u51-linux-x64.tar.gz /usr/local/docker
ENV JAVA_HOME=/usr/local/docker/jdk1.8.0_51 \
PATH=/usr/local/docker/jdk1.8.0_51/bin:$PATH
CMD ['bash']
在Dockerfile所在目录(即:/root/setup/jdk)执行docker build指令
docker build -t jdk:8 . #不要丢掉这里的点,-t表示镜像标识(镜像名),是tag单词的缩写.
docker run -it jdk:8 bash #不要丢掉这里的点,-t表示镜像标识(镜像名),是tag单词的缩写.
/root/setup/sentinel并将“jdk-8u51-linux-x64.tar.gz ,sentinel-dashboard-1.8.1.jar”两个文件拷贝到改目录下
/root/setup/sentinel/Dockerfile ,并复制一下代码到文件中
FROM centos:7
ADD jdk-8u51-linux-x64.tar.gz /usr/local/
ADD sentinel-dashboard-1.8.1.jar /usr/local/
ENV JAVA_HOME=/usr/local/jdk1.8.0_51 \
PATH=/usr/local/jdk1.8.0_51/bin:$PATH
EXPOSE 8080
ENTRYPOINT ["java","-jar","/usr/local/sentinel-dashboard-1.8.1.jar"]
其中,EXPOSE表示对外暴露的服务端口,ENTRYPOINT中写的是你容器启动时候要执行的指令.
在Dockerfile所在目录(即:/root/setup/jdk)执行docker build指令
docker build -t sentinel:8 . #不要丢掉这里的点
docker run -d --name sentinel8181 -p 8181:8080 sentinel:8 #-d 表示后台运行,-p用于指定端口映射,sentinel:8为镜像文件名
docker ps
http://192.168.126.128:8181/
访问不了原因分析:
1.IP地址和端口号是否写正确
2.docker容器所在的Linux操作系统的网关是否关闭,或者是否开放我们访问的端口
解决方法:
1)检查防火墙状态:
firewall-cmd --state
2)通过命令手动将防火墙关闭:
systemctl stop firewalld.service
3)告诉linux系统以后开机不需要启动防火墙
systemctl disable firewalld.service
4)重启防火墙
firewall-cmd --reload
想要更多详细操作,请参考:
在hub.docker.com上搜索
docker load < mysql.tar.gz
docker images
sudo docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0.23
sudo docker exec -it mysql bash
/usr/local/docker/mysql/mysql-files:/var/lib/mysql-files
问号前部分:为宿主目录,后部分:docker容器目录
mkdir -p /usr/local/docker/mysql/mysql-files
docker start mysql
mysql -u root -p root
启动mysql容器,进入数据库(若你退出了,请参考前几个步骤重新做一遍),最后导入xxx.mysql文件
source /var/lib/mysql-files/jt-sso.mysql
假如希望查看mysql启动时的日志,可以执行 docker container logs mysql 这个指令。
输入:exit+回车或按住快捷键Ctrl+C
docker stop mysql
docker update mysql --restart=always
方法同MySQL一样
docker load < redis.tar.gz
docker images
mkdir -p /usr/local/docker/redis01/conf
这个文件一定要创建,否在我们进行目录挂载时默认生成的是一个目录
touch /usr/local/docker/redis01/conf/redis.conf
docker ps
docker exec -it redis01 bash
redis-server -v
redis-cli
docker start redis01
docker stop redis01
docker restart redis01
docker update redis --restart=always
方法同MySQL一样
docker load < ngnix.tar.gz
docker images
docker volume create nginx-vol
docker inspect nginx-vol
docker run --name nginx -p 80:80 -v nginx-vol:/etc/nginx -d nginx
其中:/etc/nginx 为nginx容器启动时,nginx镜像文件默认的解压目录
说明:假如以后想修改nginx配置,可以直接去nginx-vol数据卷对应的目录去修改.