基本命令
1.docker pull xxx 拉取镜像仓库的某个镜像
2.docker images 查看已拉取的镜像
3.docker ps 查看正在运行的容器
4.docker ps -a 查看所有的容器
基本操作
以xx镜像创建一个新容器,xx为镜像id或者名称
docker run -t -i xx /bin/bash ;
从宿主机拷贝文件到镜像 docker cp /mnt/jar_file/eureka-0.0.1-SNAPSHOT.jar da96d9c8f2ea:/tmp
从镜像拷贝文件到宿主机 docker cp da96d9c8f2ea:/tmp/tomcat.1484336096545995294.8761 /mnt/jar_file/
宿主机和容器端口映射 基于镜像创建一个新容器把容易的80端口映射到宿主机的8800端口 docker run -it -d -p 8800:80 镜像id或者名字
将容器commit成为一个镜像 用新镜像运行容器 基于容器创建镜像 例如 docker commit 容器xx-id 新的镜像名称xx
docker run -it -d --name [container-name] -p 8088:80 [image-name] 这里是将容器内的80端口映射到宿主机的8088端口
一般在运行容器时,我们都会通过参数 -p(使用大写的-P参数则会随机选择宿主机的一个端口进行映射)来指定宿主机和容器端口的映射,例如
docker run -it -d --name [container-name] -p8088:80[image-name]
这里是将容器内的80端口映射到宿主机的8088端口
参数说明
-d 表示后台运行容器
-t 为docker分配一个伪终端并绑定到容器的标准输入上
-i 是让容器的标准输入保持打开状态
-p 指定映射端口
在运行容器时指定映射端口运行后,如果想要添加新的端口映射,可以使用以下两种方式:
方式一:将现有的容器打包成镜像,然后在使用新的镜像运行容器时重新指定要映射的端口
大概过程如下:
先停止现有容器
docker stop container-name
将容器commit成为一个镜像
docker commit container-name new-image-name
用新镜像运行容器
docker run -it -d --name container-name -pp1:p1-pp2:p2new-image-name
方式二:修改要端口映射的容器的配置文件
查看容器信息 :
dockerps-a
查看 容器的端口映射 情况,在容器外执行:
docker port 容器ID 或者 docker port 容器名称
查找要修改容器的容器Id
docker inspect f244 |grepId
进到/var/lib/docker/containers 目录下找到与 Id 相同的目录,修改 hostconfig.json 和 config.v2.json文件 :
若该容器还在运行,先停掉
docker stop 容器ID
停掉docker服务
systemctl stop docker
修改hostconfig.json如下,添加端口绑定"9003/tcp": ["HostIp": "","HostPort": "9003"],表示绑定端口9003
修改config.v2.json在ExposedPorts中加上要暴露的端口,即9003
改完之后保存启动docker
systemctl start docker
之后可以再次查看添加的端口是否已映射绑定上
容器内安装软件失败问题
例如安装python失败
原因:pypi.python.org在国内被墙了,无法从python官网url下载。
解决办法: 更改为国内的镜像源:(xxx为安装的包)
pip install xxx -i http://pypi.douban.com/simple --trusted-host pypi.douban.com pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple xxx 豆瓣(douban) http://pypi.douban.com/simple/
阿里云 http://mirrors.aliyun.com/pypi/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
注:还尝试了一种方法,是加上–trusted-host
执行 pip install xxx -i https://pypi.org/simple --trusted-host pypi.org 但是仍然报错
这次应该url对了,但是还是一直WARNING
-i http://pypi.douban.com/simple --trusted-host pypi.douban.com
-i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
-i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn
------字符集-日志输出中文乱码------------- locale -a #查看系统支持字符集 echo $LANG #查看默认字符集 #设置默认字符集 LANG=C.UTF-8 (有的是zh_CN.UTF-8) #生效 source /etc/profile
在Dockerfile中添加一行
ENV LANG C.UTF-8