Docker部分命令使用

Docker安装与卸载:这里官方说明已是非常详细的

官方: Install Docker Engine on Ubuntu | Docker Documentation

【狂神说Java】Docker最新超详细版教程笔记_月光染衣袂的博客-优快云博客_狂神说java系列笔记docker

 sudo apt-get update
 sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
    
 sudo mkdir -p /etc/apt/keyrings
 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
 
  echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  
  sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  
sudo vim /etc/docker/daemon.json
#1.创建一个目录
sudo mkdir -p /etc/docker

#2.编写配置文件
{
  "registry-mirrors": ["https://t2wwyxhb.mirror.aliyuncs.com"]
}
#3.重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker

卸载Docker

1、卸载依赖
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin
2、删除资源 
 sudo rm -rf /var/lib/docker
 sudo rm -rf /var/lib/containerd
#遇到问题错误
$ sudo service docker restart
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.
#debug查看问题 
sudo dockerd --debug

常用命令:

docker attach 容器  #进入容器中
docker pull 镜像名
-d后台运行
-P端口设置
 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口
 -p(小写)则可以指定要映射的IP和端口
-e环境配置
-v数据卷挂载
# 删除镜像操作 (先删容器,再删镜像)   
docker stop 容器ID    #容器停止
docker ps   		 #查看容器是否已停掉
docker rm 容器ID      #跟镜像有关的全部容器移除
docker images        #查看镜像
docker rmi 镜像ID		# 移除镜像	

#提交镜像
docker commit -a="作者" -m="描述信息" 提交容器ID  REPOSITORY:TAG
#容器数据卷挂载(数据同步)
docker run -it -v /home/ceshi:/home ubuntu 
#mysql数据挂载 (设置root密码 容器名 镜像)
docker pull mysql
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root123 --name mysql01 mysql


#进入容器命令
docker attach 容器ID 
docker exec -it 容器ID  /bin/bash
进入容器内部命令
一、前提:该容器已存在

二、进入命令主要有三个,下面分别列出来,以做记录:

1、在容器中开启一个交互模式的终端,命令如下:

$ docker exec -i -t [容器名] /bin/bash
2、在容器中以交互模式执行容器内 /root/runoob.sh 脚本

$ docker exec -it [容器名] /bin/sh /root/runoob.sh
 3、利用容器ID

$ docker exec -it [容器ID] /bin/bash
————————————————
版权声明:本文为优快云博主「千叶大师」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/joyksk/article/details/111977326

在这里插入图片描述

Docker安装mysql8.0.20数据挂载 (设置root密码 容器名 镜像)

sudo apt-get install tree #Linux展现树形数据结构,最终mysql安装目录

root@ubuntu:/home/mysql/mysql8.0.20# ls
data  logs  mysql
root@ubuntu:/home/mysql/mysql8.0.20/mysql# ls
conf.d  my.cnf  my.cnf.fallback
docker pull mysql:8.0.20
#下载的镜像,运行容器
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456  -d mysql:8.0.20
#查看容器是否运行
docker ps -a
#拷贝当前运行容器的/etc/mysql  至ubuntu主机的/home/mysql/mysql8.0.20目录下,没有目录,先创建目录
docker cp  mysql:/etc/mysql /home/mysql/mysql8.0.20
#停止并移除当前容器
docker stop mysql
docker rm mysql
#再次运行容器,并对容器做数据卷具名挂载(删掉注释运行)
#复制修改此处的命令,修改自己的位置运行,自己操作之后,入股报
docker run \
-p 3306:3306 \
--name mysql \
--privileged=true \
--restart=always \
-v /home/mysql/mysql8.0.20/mysql:/etc/mysql \
-v /home/mysql/mysql8.0.20/logs:/logs \
-v /home/mysql/mysql8.0.20/data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0.20

注:出现下面格式错误,请检查‘ \ ’后是否有空格存在!!!!

在这里插入图片描述

docker exec -it mysql /bin/bash
mysql -uroot -p # 第一次不输入密码,直接进入
use mysql
select host from user where user='root';
update user set host = '%' where user ='root';  # 设置host='%',保证能够远程访问
#再次查看是否修改成功
select host from user where user='root';
#刷新设置
flush privileges;

设置mysql密码教程链接:
https://blog.youkuaiyun.com/wolf131721/article/details/93004013

设置过mysql密码了,但好像没有用,直接无密码状态进入

进行root密码设置:
use mysql
mysql> select user,host from user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
+------------------+-----------+
ALTER user 'root'@'host字段' IDENTIFIED BY '设置密码';
由于上面更改过host='%'故:
ALTER user 'root'@'%' IDENTIFIED BY '123456';

flush privileges;

Dockerfile

dockerfile 就是用来构建docker镜像的构建文件,命令脚本参数

1、编写一个dockerfile文件
2、docker build 构建成为一个镜像
3、docker run运行镜像
4、docker pull 发布镜像

在这里插入图片描述

FROM			#基础镜像,一切从这里开始构建
MAINTAINER		#镜像是谁写的,姓名+邮箱
RUN				#镜像运行的时候需要运行的命令
ADD				#步骤,tomcat镜像,这个tomcat压缩包!添加内容
WORKDIR			#镜像的工作目录
VOLUME			#挂载的目录
EXPOSE			#保留端口配置
CMD				#指定这个容器启动的时候需要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT		#指定这个容器启动的时候需要运行的命令,可以追加命令
ONBUILD			#当构建一个被继承dockerfile 这个的时候就会运行ONBUILD的指令,触发指令
COPY			#类似ADD,我们文件拷贝到镜像中 
ENV				#构建的时候设置环境变量
#Dockerfile2内容
FROM ubuntu
MAINTAINER Ban<1332039050@qq.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN apt -y install vim
RUN apt -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "---end---"
CMD /bin/bash
#-f dockerfile文件地址  -t 生成镜像名  生成镜像地址
docker build -f dockerfile2 -t myubuntu:0.1 .
root@ubuntu:/home/Docker# docker history mysql
IMAGE          CREATED         CREATED BY                                      SIZE      COMMENT
3218b38490ce   10 months ago   /bin/sh -c #(nop)  CMD ["mysqld"]               0B        
<missing>      10 months ago   /bin/sh -c #(nop)  EXPOSE 3306 33060            0B        
<missing>      10 months ago   /bin/sh -c #(nop)  ENTRYPOINT ["docker-entry…   0B        
<missing>      10 months ago   /bin/sh -c ln -s usr/local/bin/docker-entryp…   34B       
<missing>      10 months ago   /bin/sh -c #(nop) COPY file:345a22fe55d3e678…   14.5kB    
<missing>      10 months ago   /bin/sh -c #(nop) COPY dir:2e040acc386ebd23b…   1.12kB    
<missing>      10 months ago   /bin/sh -c #(nop)  VOLUME [/var/lib/mysql]      0B        
<missing>      10 months ago   /bin/sh -c {   echo mysql-community-server m…   380MB     
<missing>      10 months ago   /bin/sh -c echo 'deb http://repo.mysql.com/a…   55B       
<missing>      10 months ago   /bin/sh -c #(nop)  ENV MYSQL_VERSION=8.0.27-…   0B        
<missing>      10 months ago   /bin/sh -c #(nop)  ENV MYSQL_MAJOR=8.0          0B        
<missing>      10 months ago   /bin/sh -c set -ex;  key='A4A9406876FCBD3C45…   1.84kB    
<missing>      10 months ago   /bin/sh -c apt-get update && apt-get install…   52.2MB    
<missing>      10 months ago   /bin/sh -c mkdir /docker-entrypoint-initdb.d    0B        
<missing>      10 months ago   /bin/sh -c set -eux;  savedAptMark="$(apt-ma…   4.17MB    
<missing>      10 months ago   /bin/sh -c #(nop)  ENV GOSU_VERSION=1.12        0B        
<missing>      10 months ago   /bin/sh -c apt-get update && apt-get install…   9.34MB    
<missing>      10 months ago   /bin/sh -c groupadd -r mysql && useradd -r -…   329kB     
<missing>      10 months ago   /bin/sh -c #(nop)  CMD ["bash"]                 0B        
<missing>      10 months ago   /bin/sh -c #(nop) ADD file:bd5c9e0e0145fe33b…   69.3MB    

# 自己手写一个镜像
# 创建dockerfile,名字可以随机,建议dockerfile
# 文件中的内容 指令(大写) 参数
[root@localhost docker-test-volume]# cat dockerfile1 
FROM centos							#
								#这里的每一个命令,就是镜像的一层
VOLUME ["/volume01","/volume02"]

CMD echo "----end------"

CMD /bin/bash
# 生成镜像,docker build -f 镜像文件 -t 镜像名:[tag] 当前目录
[root@localhost docker-test-volume]# docker build -f dockerfile1 -t syw/centos:1.0 /home/docker-test-volume/

#获取所有镜像的ID
docker images -q
docker rmi -f $(docker images -q)
#移除掉所有容器
docker rm -f $(docker ps -qa)

Springboot项目打包运行

#将idea目录下所有文件进行docker镜像构建
root@ubuntu:/home/Docker/idea# ls
Dockerfile  docker-Springboot-0.0.1-SNAPSHOT.jar

#Dockerfile内容:
FROM java:8

COPY *.jar /app.jar

CMD ["--server.port=8080"]

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "/app.jar"]
#执行命令
docker build -t demo .
docker run -d -P --name Demo f3eece258594


root@ubuntu:/home/Docker/idea# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                                         NAMES
0c03c3727d1e   f3eece258594   "java -jar /app.jar …"   7 seconds ago   Up 5 seconds   0.0.0.0:49155->8080/tcp, :::49155->8080/tcp   Demo

root@ubuntu:/home/Docker/idea# curl localhost:49155/hello
hello,chengroot@ubuntu:/home/Docker/idea# 

问题解决:

  • ubuntu18.04/20.04永久修改resolv.conf

修改resolv.conf后,重启或者过一段时间,该文件就被重置了,假如需要永久修改这一文件需要借助一些工具,或者是修改/etc/dhcp/dhclient.conf该文件。

安装resolvconf

apt-get install resolvconf

修改配置文件

/etc/resolvconf/resolv.conf.d/head
    ......
nameserver 8.8.8.8
nameserver 8.8.4.4

开启服务

systemctl enable --now resolvconf.service
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值