docker 安装和使用

目录

1、安装docker的官方网站

配置镜像加速器

查看docker安装的版本 

 重启docker 

启动 docker

查看启动的状态

下载测试镜像 并且启动该容器

2、操作docker 镜像的常用命令 

搜索镜像

下载镜像

列出镜像

删除本地镜像

保存镜像到本地 

加载镜像到docker仓库

构建镜像

3、docker 容器常用命令 

1、启动docker容器

2、列出容器

3、停止容器

4、强制停止容器

5、启动已经停止的容器

6、重启容器

7、进入容器内部 

8、删除容器

9、导出容器

10、导入容器

问题记录

1、Linux 下 Docker 端口映射到宿主机后 外部无法访问对应宿主机端口 

2、 查单某一个容器的日志信息

3、docker 运行jar 文件

4、docker服务连接 mysql容器 出现连接不上的问题

5、docker 启动mysql 乱码

6、docker 容器 映射https 端口 



1、安装docker的官方网站

https://docs.docker.com/install/linux/docker-ce/ubuntu/

http://book.itmuch.com/   电子图书

 

配置镜像加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

查看docker安装的版本 

docker --version

 重启docker 

sudo systemctl restart docker

启动 docker

sudo systemctl start docker

查看启动的状态

sudo systemctl status  docker

 

下载测试镜像 并且启动该容器

docker run hello-world

出现以上信息 说明安装成功

 

2、操作docker 镜像的常用命令 

 

搜索镜像

docker search java  [-- limit / -f(过滤结果) / --no-trunc (true/false) /--start -s (收藏数) ]

 

下载镜像

docker pull java

 

列出镜像

docker images java 

 

删除本地镜像

docker rmi hello-world

在删除本地镜像前 要去查看是否有容器在引用此镜像 如报一下错误  Error response from daemon: conflict: unable to remove repository reference "hello-world:latest" (must force) - container fc82f6cea8b0 is using its referenced image fce289e99eb9
 则使用以下命令

 

保存镜像到本地 

docker save hello-world > hello.tar

docker --output hello.tar  hello-world

加载镜像到docker仓库

docker load < hello.tar

 

 

构建镜像

docker build  -- 看书查看详细的执行

 

3、docker 容器常用命令 

1、启动docker容器

docker run -d -p 8080:8080 XXX

#-d 后台运行
#-P 随机映射所有的端口  (大P)
#-p 指定端口映射
    # ip:hostPort:containerPort (地址:主机端口号:容器端口号)
    # ip::containerPort
    # hostPort:containerPort
    # containerPort
#--network 指定网络格式 
    # --network=bridge  默认 网桥模式
    # --network=host 容器使用主机的网络
    # --network=container:NAME_or_ID (容器的名称或者id) 使容器使用已有的容器的网络配置
    # --network=none 不配置该容器网络 用户可以自定义配置网络

2、列出容器

docker ps -a

#-a 列出全部运行的容器
#-f 条件过滤
#--format 
#-n 显示最近创建的n个容器    -n 10
#-l 显示最近创建的容器(包含所有的状态)
#--no-trunc 不截断输出
#-q 只展示容器id
#-s 显示总文件的大小

3、停止容器

docker stop 

#-t  强制停止容器前等待的时间 单位是秒 s

4、强制停止容器

docker kill 

#-s 向容器发生信号  kill

5、启动已经停止的容器

docker start 

6、重启容器

docker restart

#-t 关闭容器前等待的时间

7、进入容器内部 

docker exec -it 容器id /bin/bash

docker attach 容器id

8、删除容器

docker rm  

#-f 强制删除正在运行的容器
#-l 删除容器间的网络连接
#-v 删除与容器管理的卷


#删除所有的容器

docker rm -f $(docker -a -q)

9、导出容器

docker export 

#-o 将内容写到文件 

docker export red_panda > latest.tar #导出red_panda 为 latest.tar 文件
docker export --output="latest.tar" red_panda

10、导入容器

docker import 

#-c 将Dockerfile  指令应用到创建的镜像
#-m 为导入的镜像设置提交的信息

docker import latest.tar rep_panda

 

 

问题记录

1、Linux 下 Docker 端口映射到宿主机后 外部无法访问对应宿主机端口 

描述:在ubuntn 服务下启动了tomcat 容器,使用虚拟机的地址加映射的端口 无法访问到tomcat容器,进入tomcat容器,使用curl "localhost:8080"命令请求服务,发现tomcat是启动的。

原因是:我的宿主机没有开启ip 转发功能,导致了外部请求过来没有转发到docker 映射的端口号上。

编辑 :

vi /etc/sysctl.conf 

修改

重启网卡 和重启docker 服务

#重启网卡
/etc/init.d/networking restart

#重启docker
systemctl restart docker

 

 

 

2、 查单某一个容器的日志信息

docker logs -f -t 0d8a3a91c04c(容器id)

3、docker 运行jar 文件

编写Dockerfile 文件  输入一下内容

FROM java
VOLUME /tmp
ADD schoolweb-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
EXPOSE 84
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

构建容器

docker build -t shcool/0.0.1 .

4、docker服务连接 mysql容器 出现连接不上的问题

#查看当前容器的ip地址 
docker insepect [容器名称、容器id]

将此ip地址进行替换 

5、docker 启动mysql 乱码

编辑该配置文件

vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysql] 
default-character-set = utf8

[mysql.server] 
default-character-set = utf8

[mysqld_safe] 
default-character-set = utf8

[client] 
default-character-set = utf8

[mysqld] 
character_set_server=utf8 
init_connect=’SET NAMES utf8’

6、docker 容器 映射https 端口 

使用一下命令启动容器

docker run -d -p 80:80 -p 443:443 xxx(容器名称) 映射80 和 443端口 。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

古月_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值