1. 启动一个容器并且进入到容器内部
1. 例如: 启动mysql 容器并且进入到容器内部
docker run -it mysql /bin/bash
[root@basenode ~]# docker run -it mysql /bin/bash
root@5d4637ebbc2d:/# ls
bin boot dev docker-entrypoint-initdb.d entrypoint.sh etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@5d4637ebbc2d:/#
2. 交互式命令
2.1 前台交互式启动
docker run -it mysql:latest
2.2 后台守护式启动
docker run -d mysql:latest
3. 查看容器的日志
doicker logs 容器id
4. 查看容器内部运行的进程
docker top 容器id (5d4637ebbc2d)
5. 查看容器内部细节
docker inspect 容器ID
6. 进入正在运行的容器并以命令行交互
6.1 docker exec -it 容器ID bashShell
例如,进入mysql: docker run -it mysql /bin/bash
docker exec -it 4e24002bbc34 /bin/bash
6.2 重新进入docker attach 容器ID
docker attach 5d4637ebbc2d
6.3 两者的区别
1.attach 直接进入容器启动命令的终端,不会启动新的进程用exit退出,会导致容器的停止。
2.exec 是在容器中打开新的终端,并且可以启动新的进程用exit退出,不会导致容器的停止。
7. 从容器内拷贝文件到主机
docker cp 容器ID:容器内路径 目的主机路径
8. 容器的导出 和导入
8.1 容器的导出
docker export 容器ID > 文件名.tar
8.2 容器的导入
镜像用户 可以写root
镜像名称: 起一个有意义的名称
镜像版本号:随便写
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
导出:
docker save -o wulmysql8.tar mysql:8.0.27
同时可以导出多个
docker save -o images.tar postgres:9.6 mongo:3.4
导入 :docker load -i elasticsearch568.tar
导入
(base) [root@localhost dock]# docker load -i elasticsearch568.tar
e1df5dc88d2c: Loading layer [==================================================>] 105.1MB/105.1MB
bcbe43405751: Loading layer [==================================================>] 24.72MB/24.72MB
61c06e07759a: Loading layer [==================================================>] 7.995MB/7.995MB
341d865c1c22: Loading layer [==================================================>] 2.173MB/2.173MB
a1a8b7f7efac: Loading layer [==================================================>] 3.584kB/3.584kB
00439e7d6354: Loading layer [==================================================>] 1.536kB/1.536kB
6a47dae912f7: Loading layer [==================================================>] 401.1MB/401.1MB
148268bf14be: Loading layer [==================================================>] 400.9kB/400.9kB
a2e243de3b25: Loading layer [==================================================>] 1.292MB/1.292MB
de627896dca3: Loading layer [==================================================>] 5.12kB/5.12kB
713c7d566de9: Loading layer [==================================================>] 2.575MB/2.575MB
d7db3fe7c235: Loading layer [==================================================>] 39.49MB/39.49MB
c4f811163d78: Loading layer [==================================================>] 4.608kB/4.608kB
ed13f50f2f81: Loading layer [==================================================>] 5.12kB/5.12kB
535b2b4183de: Loading layer [==================================================>] 2.56kB/2.56kB
Loaded image: elasticsearch:5.6.8
8.1 export/import用法
查看要导出的容器
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
addc058f62de tensorflow/tensorflow:latest "tensorboard --log..." About an hour ago Up About an hour 0.0.0.0:6006->6006/tcp, 8888/tcp tensorboard
导出容器的镜像:
docker export tensorboard > /home/dyufei/tensorflow_tensorboard.tar
或者
docker export -o /home/dyufei/tensorflow_tensorboard.tar tensorboard
导入容器的镜像
sudo docker import - /home/dyufei/tensorflow_tensorboard.tar
9.common 命令提交容器副本成为一个新的镜像
***********************************************数据卷
10 数据卷
容器和宿主机的映射
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
例如:
docker run -it --privileged=true -v /opt/tmp/mydaockertomcat:/usr/local/tomcat/webapps --name wudltomcat02 tomcat:7
10.1容器实例内部被限制,只能读取不能写
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
10.2 容器的继承
1. 先启动容器并且起图个名字:
2.docker run -it --privileged=true -v /opt/tmp/mydaockertomcat:/usr/local/tomcat/webapps --name wudltomcat02 tomcat:7
2. 继承容器 u1 docker run -it --privileged=true --volumes-from 父类 --name u2
3. docker run -it --privileged=true --volumes-from wudltomcat02 --name wudltomcat03 tomcat:7