docker常用操作和命令
***************************制作镜像常用命令:***************************1、运行镜像 docker run -idt 镜像名:tag号 或 docker run -it 镜像名:tag号 /bin/bash
-i: 交互式操作
-d :指定容器的运行模式,让容器在后台运行。默认不会进入容器,想要进入容器需要使用docker exec
-t: 终端
/bin/bash:命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash** 加端口映射: docker run -p 16800:5000 -idt 镜像名:tag号
(容器中的5000端口映射成宿主机的16800端口)
端口映射后,外部访问容器中服务地址:宿主机IP:16800** 将宿主机文件挂载到容器中:
docker run -it -v /test:/soft 镜像名:tag号 /bin/bash
-v参数中,冒号":"前面的目录是宿主机目录,后面的目录是容器内目录** 设置容器编码格式
docker run -it -e PYTHONIOENCODING=UTF-8 -v /test:/soft 镜像名:tag号 /bin/bash
-e参数设置shell的默认编码方式为 utf-8,在编译python代码的时候才不会报如下错误:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-12** 以特权模式运行容器:docker run -d --name pb --privileged=true 镜像名:id /usr/sbin/init进入容器:docker exec -it pb /bin/bash以特权模式运行容器后,可以在容器内使用service等后台服务。2、进入和退出容器
**进入容器**
docker exec -it 容器名或ID /bin/bash
docker attach --sig-proxy=false 容器名或ID //--sig-proxy=false可确保CTRL-D或CTRL-C不会关闭且stop容器**退出容器:**
exit :容器停止退出,容器里的程序会中断,docker ps会查不到退出的容器
Ctrl+P+Q :容器不停止退出,容器里的程序还在跑,docker ps能查到退出的容器
注意: 用docker attach进容器时,若用exit会导致容器stop掉,必须用 Ctrl+P+Q 3、宿主机文件拷贝到容器 docker cp 宿主机项目文件存放目录 容器启动名或ID:容器中存放项目文件的目录
可直接在运行镜像时通过-v参数将宿主机文件挂载到容器。容器文件拷贝到宿主机: docker cp 容器启动名或ID:容器中存放项目文件的目录 宿主机项目文件存放目录4、将容器保存为新镜像 docker commit 容器启动名或ID 新镜像名:版本号5、将新镜像打包成tar包(默认保存到当前路径) docker save -o ***.tar 镜像名:TAG6、加载tar包 docker load -i xxx.tar*************************其他常用命令:*************************
1、查看容器的资源使用情况 docker top container_id
docker inspect2、删除镜像 docker rmi IMAGE ID
(如果镜像正在被某个容器使用,则会报错,这时只需先删除容器就好了)3、删除容器 docker rm 容器启动名或ID4、启动容器 docker start 容器启动名或ID停止容器 docker stop 容器启动名或ID5、更名 docker tag dl-4a:1.7.1 dl-4a:1.5.76、查看容器中进程信息:
在宿主机直接运行:docker exec 容器启动名或ID ps -ef
或者在容器中运行:jobs -l
停掉容器中进程:进入该容器,kill pid 7、查看容器中端口映射信息:docker container port 容器启动名或ID
结果:15500/tcp -> 0.0.0.0:15400,容器内port 15500映射成了宿主机port 154008、查看容器ip
宿主机执行:docker inspect 容器ID
参考:docker学习基本命令(一)
nvidia-docker
nvidia-docker介绍和使用:安装使用NVIDIA-Docker-- 可使用GPU的Docker容器
***起容器***
nvidia-docker run --name limin_ai -m 32G --memory-swap=-1 -it -v /sata01/AIhome_ext/limin_ai/:/code/ -v /sata01/AIhome_ext/liuxk/PSEnet/data2/:/code/invoice_project/PSEnet2/data/ tf_gpu:1.4 env LANG=C.UTF-8 /bin/bash
-v 可多次使用,挂载多个目录
-m :设置容器使用内存最大值;
核心概念理解
Docker的三大核心概念:镜像、容器、仓库
镜像:类似虚拟机的镜像、用俗话说就是安装文件。
容器:类似一个轻量级的沙箱,容器是从镜像创建应用运行实例,
可以将其启动、开始、停止、删除、而这些容器都是相互隔离、互不可见的。
仓库:类似代码仓库,是Docker集中存放镜像文件的场所。
Docker、Dockerfile、Docker镜像、容器这些都是什么鸟?
**Docker:**最早是dotCloud公司出品的一套容器管理工具,但后来Docker慢慢火起来了,连公司名字都从dotCloud改成Docker。
Dockerfile: 用于构建镜像,包含Docker镜像的描述文件,可以理解成火箭发射的A、B、C、D……的步骤。构建镜像时,每做完一个步骤,在Dockerfile中记录一条,这样Dockerfile也就做出来了。
Docker镜像: 通过Dockerfile做出来的,包含操作系统基础文件和软件运行环境,它使用分层的存储方式。
容器: 是运行起来的镜像,简单理解,Docker镜像相当于程序,容器相当于进程。
讲了这么多,大家可能已经意识到了,想玩转Docker必须先要搞定Docker镜像,镜像又来自于 Dockerfile。
docker安装–以centos7为例
前提条件
Docker 要求 Ubuntu 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的 Ubuntu 版本是否支持 Docker。可通过 uname -r 命令查看你当前的内核版本
$ uname -r
更新yum包:
$ sudo yum update
卸载旧版本(如果安装过旧版本的话)
$ sudo yum remove docker docker-common docker-selinux docker-engine
安装命令:
$ sudo yum install docker-ce-18.03.1.ce
启动并加入开机启动
$ sudo systemctl start docker
$ sudo systemctl enable docker
验证是否安装成功:docker info或docker version
[limin@aubin ~]$ docker info
Containers: 0Running: 0Paused: 0Stopped: 0
Images: 1
Server Version: 18.03.1-ce
Storage Driver: overlay2Backing Filesystem: xfsSupports d_type: trueNative Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
用docker version命令,出现Client和Server信息,即表示安装成功。
[limin@aubin ~]$ docker version
Client:Version: 18.03.1-ceAPI version: 1.37Go version: go1.9.5Git commit: 9ee9f40Built: Thu Apr 26 07:20:16 2018OS/Arch: linux/amd64Experimental: falseOrchestrator: swarmServer:Engine:Version: 18.03.1-ceAPI version: 1.37 (minimum version 1.12)Go version: go1.9.5Git commit: 9ee9f40Built: Thu Apr 26 07:23:58 2018OS/Arch: linux/amd64Experimental: false
常见问题:
用docker info或docker version查看docker是否安装成功时,报如下错误:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.37/version: dial unix /var/run/docker.sock: connect: permission denied
在执行命令前加上sudo即可。
若不想每次执行docker命令都加sudo ,可用如下方式:
sudo groupadd docker #添加docker用户组sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中newgrp docker #更新用户组docker ps #测试docker命令是否可以使用sudo正常使用
二 常用命令
停掉docker服务:
service docker stop
查看镜像
docker images
查看所有的容器
docker ps -a
进入容器
docker attach 容器IDdocker exec -it 容器ID /bin/bash
退出容器
exit
镜像操作命令–以MySQL为例
1、拉取镜像:
docker pull mysql
docker pull python:3.6.5
2、查看下载的镜像
docker images
3、根据镜像创建容器
docker run --name mysqlserver -p 3308:3306 -e
参数解释:
–name 容器名字
-p 3308:3306 物理机端口:容器内部端口.匹配镜像内的网络端口号,即我们可以通过宿主机中访问3308端口来达到访问容器3306端口的目的。
-e 运行参数 初始化 root 用户的密码
-d 后台运行 mysql/mysql-server:5.5 下载的镜像名字加标签
-v ./conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。//配置文件目录
-v ./logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。//日志目录
-v ./data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。//数据库文件存放目录
上面这些参数都是可选的,可以不要。
4、查看某镜像的容器是否运行成功
docker ps |grep 镜像名
5、用docker exec进入容器内,然后用mysql -u root -p进入MySQL终端:
[li@aubin ~]$ docker exec -it 容器ID /bin/bash
root@6657671f5bd8:/# mysql -u root -p
6、修改mysql允许远程连接:
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;
然后我们可以通过本机连接容器内的数据库,(我们将容器内的3306端口映射到了本机的3308,所以我们通过3308端口访问)
mysql -u root -p -h 127.0.0.1 -P 3308
7、退出容器:
exit
或者
Ctrl+P+Q
8、重启容器
docker restart 容器ID
9、重启容器后进入交互式
docker start -i 5c6ce895b979
10、停止容器
docker stop mysqlserver
11、删除容器
docker rm mysqlserver
参考:使用Docker安装Mysql:https://www.cnblogs.com/loovelj/p/7823093.html
【Docker】退出容器和进入容器:https://www.cnblogs.com/defineconst/p/10035529.html
dockfile制作镜像命令:
请看我的另外一篇文章,写的很详细:
https://blog.csdn.net/u011208984/article/details/102756745
docker常用操作和命令相关推荐
- Docker常用操作
输入docker 可以查看Docker的命令用法,输入docker COMMAND --help 查看指定命令详细用法. 镜像常用操作 查找镜像: docker search 关键词 #搜索docke ...
- Docker常用操作帅哥专供版
没错,这里的帅哥指的就是我自己 Docker常用命令 Docker中文资源 Docker中文网站:https://www.docker-cn.com/ Docker安装手册:https://docs. ...
- Linux虚拟机安装及Docker常用操作
一.Docker 概述: 将下边晦涩难懂的灰色描述方式简化为下边蓝色字体的描述方式, 请背诵这段蓝色文字. Docker是一个用来开发软件. 运行软件.传输软件的平台. 可以将软件的运行环境和软件放到 ...
- Windows平台下MySQL常用操作与命令
1.导出整个数据库 mysqldump -u 用户名 -p --default-character-set=latin1 数据库名 > 导出的文件名(数据库默认编码是latin1) mysqld ...
- Linux常用操作和命令
文章目录 帮助命令 常用快捷键 systemctl(Centos7版本) service服务管理(Centos6) 一般模式基本语法 编辑模式基本语法 指令模式基本语法 VIM键盘图 文件目录类 时间 ...
- LInux_学习笔记_ViM编辑器的常用操作及命令
文章目录 1.什么是VIM编辑器 2.vi 的三种模式 3.来试试3种模式下的指令 3.1 准备工作 3.2命令模式 3.3 编辑模式 3.3.1 进入编辑模式 3.4 末行模式 3.4.1进入末行模 ...
- Docker笔记:收集Docker常用的一些命令
目录 1.容器镜像清理删除相关命令 2.inspect 查看容器元数据相关 3.容器内操作相关
- docker 常用操作
1 删除所有容器 sudo docker rm $(docker ps -a -q) 1 docker 配置成国内 阿里镜像源 https://www.cnblogs.com/anliven/p/62 ...
- docker 常用清除内存命令
#清除多余的共享目录 docker volume rm $(docker volume ls -qf dangling=true) #清除none的镜像 docker rmi $(docker ima ...
- docker常用查看日志命令
1.查看对应服务CONTAINER ID docker ps | grep 服务名 2.根据CONTAINER ID查看对应服务日志 docker logs -f --tail 300 80dcd00 ...
最新文章
- 生信小白7行代码画一个高颜值的世界地图
- Python将图像分割成小块然后将所有的块重新拼接在一起
- 电源适配器变压器计算与元器件选型、细,全!【上篇-适配器设计计算23步骤】...
- 在 CentOS 7 中安装并使用自动化工具 Ansible
- 你应该知道的计算机网络知识
- zend studio 10破解/汉化
- 从入门到熟悉 HTTPS 的 9 个问题
- 第一次scrapy爬虫记录
- 永恒传奇三服务器维护中,仙境传说ro3月3日5点-10点停服维护
- 减少系统资源占用的15个CSS常识
- 面试小记---外部脚本必须包含 script 标签吗?
- ASP.NET Core 对Controller进行单元测试
- Android 中如何计算 App 的启动时间?
- java用XSSFWorkbook实现读写Excel
- mysql数据库自学_MySQL数据库自学
- 预处理、const、static与sizeof-static全局变量与普通的全局变量有什么区别
- linux 端口关闭防火墙设置,LINUX关闭防火墙、开放特定端口等常用操作
- 直流开环调速系统 simulink仿真
- 九爷带你了解 nginx优化
- 通达OA11.6复现
热门文章
- Vue源码: 构造函数入口
- mysql 面试知识点笔记(三)联合索引的最左匹配原则
- 【转】史上最简单的软件破解——5行脚本代码完美破解99%的过期软件
- Effective_STL 学习笔记(十六) 如何将 vector 和 string 的数据传给遗留的API
- java取整和java四舍五入方法
- 【深度学习笔记】(一)Octave
- javascript如何设置名字输入不合法
- 1731: [Usaco2005 dec]Layout 排队布局*
- 11.05面向对象 封装
- [转载] 中华典故故事(孙刚)——19 万岁