docker实战笔记一

容器命令

运行命令:

1. --name 指定容器名称2. -d 后台运行3. -port 指定端口映射规则4. --network 指定容器运行的网路模式5. -v 指定需要挂载的数据卷6. -env  指定需要传递给容器的环境变量

管理命令:
1. docker run --name={your_name} --d {image_name}  (运行容器)2. docker ps -s -a  {查看当前所有容器}3. docker stop {container_name}  (停止容器)4. docker kill (container_name) {杀死容器}5. docker rm -f {container_name/id}  (删除容器)6. docker ps -s (-s表明size)


用Docker搭建Jenkins服务

下载镜像

docker pull jenkins/jenkins

查看已下载的镜像

docker images

删除镜像

docker rmi jenkins/IMAGE ID

下载指定版本镜像

docker pull jenkins:3.1.x

将镜像打包成一个tar

docker save jenkins:2.60.3 > myjenkins.tar

将打包镜像加载出来

docker load < myjenkins.tar

给镜像加tag号

docker tag jenkins:latest jenkins:3.6.0

给镜像改名称

docker tag jenkins:latest testjenkins

push镜像到镜像仓库

docker tag jenkins gaofei_com/jenkinsdocker push

 

docker 运行jenkins实例

查看当前运行中的容器docker ps

如何删除这个启动的容器呢?是否可以和镜像一样,直接 rm 呢?

docker rm myjenkins

如果直接删除运行中的容器会报错,需要 先stop然后删除 ``

docker stop myjenkinsdocker rm myjenkins

或者

docker rm -f myjenkins

如何指定端口号呢?就是使用  -p 参数

docker run -d --name=myjenkins -p 8080:8080 jenkins/jenkins

在启动的过程中,我们可能会碰到各种各样的问题,我们如何定位问题呢?
当然是使用 查看log大法

docker log -f myjenkins

Docker的数据持久化

mac系统下docker 安装jenkins前提需要安装完docker,在进行以下步骤操作:

1、为了方便容器内对配置文件进行修改,需要先创建Jenkins挂载目录并授权权限;

mkdir /data/jenkins_home

chmod 777  /data/jenkins_home

2、使用docker pull jenkins/jenkins命令,拉取Jenkins 镜像,等待安装完成;

部署Jenkins

部署命令如下:


3.docker run -d -p 8080:8080 -p 50000:50000 --name jenkins -v $(pwd)/data/jenkins_home:/var/jenkins_home jenkins/jenkins:lts
试试

以上参数解释:

docker run :通过镜像运行容器

--name:启动容器的名字,如:jenkins

-p:是将容器的8080端口映射到虚拟机的8080端口,在浏览器访问8080端口就能访问jenkins(50000端口映射的作用)

-v $(pwd)/data/jenkins_home 是将dokcer里面jenkins的目录/var/jenkins_home挂载到本地/data/jenkins_home

-d 以守护线程方式运行。不加该参数,关掉命令行,docker的jenkins就随之停止了。

 

4、查看Jenkins是否启动

命令:以下两种命令检查

docker ps    

docker ps -a

终端显示:如图:status 状态显示up 即为启动jenkins服务成功,显示启动端口

 

5、初始化jenkins及安装插件

1)打开jenkins地址:http://localhost:8080/login, 

 

2)安装插件,选择安装推荐的插件

 
 

3)进入插件安装界面,等待插件安装;

 
 

3)安装完插件后,进入创建管理员界面,然后点击底部使用admin账号登录

 
 

4)如图设置完成,点击开始使用jenkins,即可完整使用jenkins

 
 

6、清除docker容器

docker rm $(sudo docker ps -a -q)

7、查看docker日志

docker logs devops-jenkins

 

Docker 容器交互

docker exec -it {容器名称} bash
进入容器,exec的意思是在容器中运行一个命令。如果使用bash 并且指定了-it 就会打开容器的shell 交互

docker exec myjenkins echo "test"
docker exec myjenkins ping www.baidu.com
docker exec -it myjenkins bash

docker cp {container:name}:{container_path} {host_path} 把宿主机上的一个文件copy到容器中

docker cp 1.sh myjenkins:/var/jenkins_home

Docker的环境变量

有一些容器启动时,我们需要给他添加一些初始的参数,比如mysql,我们需要给他添加一些初始的账号和密码,docker如何操作这种情况呢?让我们动动小手,演练一下吧

  1. 启动mysql容器,注意要加 -e 传递参数 docker run --name some-mysql -v /home/a/test/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1qaz9ol. -p 8888:3306  -d mysql:5.5
  2. 通过数据库连接工具连接数据库
    host 要填写宿主机的ip地址, Password 是我们一开始设定的
    端口号 填写映射的宿主机的端口号
  3. 在数据库中创建一个表
  4. 删掉容器,然后重启
  5. 进入刚刚创建的容器内的mysql路径下,发现有刚刚添加的表, 这个就是容器的数据持久化的功能啦
  6. 我们接下来再思考一个问题,因为容器是有 隔离性 的。
    如果容器之间互相链接可以用什么方式?

    这里就要引入另外一个参数啦  --link ,这个参数的作用就是把一台容器的网络信息,注入到另外一台容器中

    老方法,我们还是通过testlink实战,体验一下这个功能吧

    1. 启动mariadb   docker run -d --name mariadb -e ALLOW_EMPTY_PASSWORD=yes -e MARIADB_USER=bn_testlink -e MARIADB_DATABASE=bitnami_testlink -v /home/a/test/mysql:/var/lib/mysql -p 8088:3306 bitnami/mariadb:latest
    2. 启动tesklink,mariadb的信息注入到testlink容器中   docker run -d --name testlink -p 8099:80 -p 444:443 -e ALLOW_EMPTY_PASSWORD=yes -e TESTLINK_DATABASE_USER=bn_testlink -e TESTLINK_DATABASE_NAME=bitnami_testlink --link mariadb bitnami/testlink:latest
    3. 查看日志,可以看到成功连接到mariadb  docker logs -f testlink

       

    4. 一个思考题,如果是三个容器需要连接呢,使用什么样的方式?
      答案是: --env 因为在docker中, --link 就是通过环境变量的方式配置的。

      Docker 前后端启动

      现在很多网站的架构都是前后端分离,在这种情况下,我们应该如何使用docker分别启动前端和后端,且能互相通信呢?我们可以使用下面的命令

    5. docker run --name=conan -itd -p 8999:4200 conandocker run --name=holmes -itd --net=container:conan holmes
    6. --net=container:conan :这样创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围。

      其他命令

      查看docker 的信息

      docker info
      

      获取容器/镜像的元数据

      docker inspect myjenkins
      

       


posted @ 2022-03-02 14:32  heipidaren  阅读(55)  评论(0)    收藏  举报