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   镜像名:TAG

6、加载tar包   docker load -i xxx.tar

7、export+import命令
	直接将容器保存为tar包:
		docker export 容器名 > test.tar
	将export的tar包导入成镜像:
	 	docker import test.tar 镜像名:tag
	 export+import命令组合比commit+save+load命令组合更加简便,且镜像和tar包更小。
	参考:[docker:export/save/commit谁才是你心中那个她](https://zhuanlan.zhihu.com/p/152219012)


*************************其他常用命令:*************************
1、查看容器的资源使用情况 docker top container_id
docker inspect

2、删除镜像    docker rmi   IMAGE ID
(如果镜像正在被某个容器使用,则会报错,这时只需先删除容器就好了)

3、删除容器   docker rm 容器启动名或ID

4、启动容器   docker start 容器启动名或ID
   停止容器   docker stop 容器启动名或ID

5、更名   docker tag  dl-4a:1.7.1  dl-4a:1.5.7

6、查看容器中进程信息:
在宿主机直接运行:docker exec 容器启动名或ID ps -ef
或者在容器中运行:jobs -l
停掉容器中进程:进入该容器,kill pid 

7、查看容器中端口映射信息:docker container port 容器启动名或ID
结果:15500/tcp -> 0.0.0.0:15400,容器内port 15500映射成了宿主机port 15400

8、查看容器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: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 1
Server Version: 18.03.1-ce
Storage Driver: overlay2
 Backing Filesystem: xfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs

用docker version命令,出现Client和Server信息,即表示安装成功。

[limin@aubin ~]$ docker version
Client:
 Version:      18.03.1-ce
 API version:  1.37
 Go version:   go1.9.5
 Git commit:   9ee9f40
 Built:        Thu Apr 26 07:20:16 2018
 OS/Arch:      linux/amd64
 Experimental: false
 Orchestrator: swarm

Server:
 Engine:
  Version:      18.03.1-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.9.5
  Git commit:   9ee9f40
  Built:        Thu Apr 26 07:23:58 2018
  OS/Arch:      linux/amd64
  Experimental: 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 容器ID

docker 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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Docker 常用命令: • docker run:启动一个容器 • docker start:启动一个正在运行的容器 • docker stop:停止一个正在运行的容器 • docker build:构建一个镜像 • docker pull:从远程仓库拉取镜像 • docker push:将镜像推送到远程仓库Linux 常用命令: • ls:显示文件或目录的列表 • cd:切换当前目录 • cp:复制文件或目录 • mv:移动文件或目录 • rm:删除文件或目录 • chmod:更改文件或目录的权限 ### 回答2: Docker常用命令: 1. docker run:从镜像创建并启动一个容器。 2. docker ps:列出正在运行的容器。 3. docker stop:停止一个运行中的容器。 4. docker rm:删除一个已停止的容器。 5. docker images:列出本地的镜像。 6. docker pull:从远程仓库拉取镜像。 7. docker push:将本地的镜像推送到远程仓库。 8. docker exec:在运行中的容器中执行命令。 9. docker logs:查看容器的日志信息。 10. docker build:根据Dockerfile构建自定义镜像。 Linux常用命令: 1. ls:列出当前目录下的文件和文件夹。 2. cd:切换当前目录。 3. pwd:显示当前所在的目录。 4. mkdir:创建一个新的目录。 5. rm:删除文件或文件夹。 6. cp:复制文件或文件夹。 7. mv:移动文件或文件夹。 8. cat:显示文件的内容。 9. grep:根据关键字在文件中搜索。 10. chmod:修改文件或目录的权限。 这些命令都是在Linux系统中非常常用的,可以帮助用户进行文件管理、容器管理以及软件构建等操作。使用这些命令,用户可以更方便、高效地进行文件和容器的操作。 ### 回答3: docker常用命令: 1. docker ps:列出正在运行的容器。 2. docker images:列出本地的镜像。 3. docker run:运行一个容器。 4. docker stop:停止一个或多个容器。 5. docker rm:删除一个或多个容器。 6. docker start:启动一个停止状态的容器。 7. docker restart:重启一个容器。 8. docker build:根据Dockerfile创建一个镜像。 9. docker pull:从远程仓库下载一个镜像。 10. docker push:将一个镜像推送到远程仓库。 11. docker exec:在正在运行的容器中执行命令。 12. docker logs:查看容器的日志。 13. docker commit:将容器的修改保存为新的镜像。 14. docker network:管理容器的网络配置。 Linux常用命令: 1. ls:列出当前目录的文件和子目录。 2. cd:进入指定的目录。 3. pwd:显示当前所在的目录。 4. mkdir:创建一个新的目录。 5. rm:删除文件或目录。 6. cp:复制文件或目录。 7. mv:移动文件或目录。 8. cat:显示文件的内容。 9. grep:在文件中搜索指定的字符串。 10. chmod:修改文件或目录的权限。 11. chown:修改文件或目录的所有者。 12. chgrp:修改文件或目录的所属组。 13. find:在指定路径下查找文件。 14. tar:打包和压缩文件。 15. ping:测试网络连接。 16. ifconfig:查看和配置网络接口。 17. ssh:远程登录到另一台计算机。 18. top:查看系统的实时性能。 19. ps:显示系统中运行的进程。 20. kill:终止正在运行的进程。 以上是Docker常用命令和Linux常用命令的简要介绍。这些命令可以帮助用户管理容器、镜像和文件系统,执行系统操作和网络配置等任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值